From 38a47eb41c2c713066552c077b9147b61b4f6ce5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 22 Nov 2022 13:50:16 -0300 Subject: [PATCH 1/3] Create recovery helper deployment --- pkg/deployments/CHANGELOG.md | 1 + pkg/deployments/README.md | 1 + .../abi/PoolRecoveryHelper.json | 153 ++++++++++++++++++ .../build-info/PoolRecoveryHelper.json | 1 + .../bytecode/PoolRecoveryHelper.json | 3 + .../20221123-pool-recovery-helper/index.ts | 10 ++ .../20221123-pool-recovery-helper/input.ts | 20 +++ .../20221123-pool-recovery-helper/readme.md | 13 ++ .../test/test.fork.ts | 101 ++++++++++++ 9 files changed, 303 insertions(+) create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/abi/PoolRecoveryHelper.json create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/build-info/PoolRecoveryHelper.json create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/bytecode/PoolRecoveryHelper.json create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/index.ts create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/readme.md create mode 100644 pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts diff --git a/pkg/deployments/CHANGELOG.md b/pkg/deployments/CHANGELOG.md index 0ee51ea63c..4a4ab1d272 100644 --- a/pkg/deployments/CHANGELOG.md +++ b/pkg/deployments/CHANGELOG.md @@ -9,6 +9,7 @@ - Deployed core Pool factories (`WeightedPoolFactory`, `ComposableStablePoolFactory`, `LiquidityBootstrappingPool`, `AaveLinearPool`) to BNB. - Deployed `AuthorizerAdaptorEntrypoint` to all networks. - Deployed `AaveLinearPoolFactory` to all networks. +- Deployed `PoolRecoveryHelper` to all networks. ## 3.0.0 (2022-10-25) diff --git a/pkg/deployments/README.md b/pkg/deployments/README.md index c44a1679ed..55b2d85529 100644 --- a/pkg/deployments/README.md +++ b/pkg/deployments/README.md @@ -104,6 +104,7 @@ Returns an object with all contracts from a deployment and their addresses. | Protocol Fee Splitter | [`20221027-fee-splitter`](./tasks/20221027-fee-splitter) | | Authorizer Adaptor Entrypoint | [`20221111-authorizer-adaptor-entrypoint`](./tasks/20221111-authorizer-adaptor-entrypoint) | | Linear Pools for Aave aTokens with built-in rebalancing | [`20221115-aave-rebalanced-linear-pool`](./tasks/20221115-aave-rebalanced-linear-pool) | +| Pool Recovery Helper | [`20221123-pool-recovery-helper`](./tasks/20221123-pool-recovery-helper) | ## Scripts diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/abi/PoolRecoveryHelper.json b/pkg/deployments/tasks/20221123-pool-recovery-helper/abi/PoolRecoveryHelper.json new file mode 100644 index 0000000000..fffc64d95d --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/abi/PoolRecoveryHelper.json @@ -0,0 +1,153 @@ +[ + { + "inputs": [ + { + "internalType": "contract IVault", + "name": "vault", + "type": "address" + }, + { + "internalType": "address[]", + "name": "initialFactories", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "factory", + "type": "address" + } + ], + "name": "addPoolFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "enableRecoveryMode", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "getActionId", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAuthorizer", + "outputs": [ + { + "internalType": "contract IAuthorizer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getFactoryAtIndex", + "outputs": [ + { + "internalType": "contract IBasePoolFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getFactoryCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVault", + "outputs": [ + { + "internalType": "contract IVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "isPoolFromKnownFactory", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "factory", + "type": "address" + } + ], + "name": "removePoolFactory", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/build-info/PoolRecoveryHelper.json b/pkg/deployments/tasks/20221123-pool-recovery-helper/build-info/PoolRecoveryHelper.json new file mode 100644 index 0000000000..62e4585cfa --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/build-info/PoolRecoveryHelper.json @@ -0,0 +1 @@ +{"id":"7121b7537843945a4b8e28f9976aa1e7","_format":"hh-sol-build-info-1","solcVersion":"0.7.1","solcLongVersion":"0.7.1+commit.f4a555be","input":{"language":"Solidity","sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../vault/IVault.sol\";\n\ninterface IAuthorizerAdaptor is IAuthentication {\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() external view returns (IVault);\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n * @param target - Address of the contract to be called\n * @param data - Calldata to be sent to the target contract\n * @return The bytes encoded return value from the performed function call\n */\n function performAction(address target, bytes calldata data) external payable returns (bytes memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IBalancerTokenAdmin.sol\";\nimport \"./IGaugeController.sol\";\n\ninterface IBalancerMinter {\n event Minted(address indexed recipient, address gauge, uint256 minted);\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IERC20);\n\n /**\n * @notice Returns the address of the Balancer Token Admin contract\n */\n function getBalancerTokenAdmin() external view returns (IBalancerTokenAdmin);\n\n /**\n * @notice Returns the address of the Gauge Controller\n */\n function getGaugeController() external view returns (IGaugeController);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` and send to them\n * @param gauge `LiquidityGauge` address to get mintable amount from\n */\n function mint(address gauge) external returns (uint256);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mintMany(address[] calldata gauges) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mintFor(address gauge, address user) external returns (uint256);\n\n /**\n * @notice Mint tokens for `user` across multiple gauges\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauges List of `LiquidityGauge` addresses\n * @param user Address to mint to\n */\n function mintManyFor(address[] calldata gauges, address user) external returns (uint256);\n\n /**\n * @notice The total number of tokens minted for `user` from `gauge`\n */\n function minted(address user, address gauge) external view returns (uint256);\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function getMinterApproval(address minter, address user) external view returns (bool);\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on your behalf\n */\n function setMinterApproval(address minter, bool approval) external;\n\n /**\n * @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n * them.\n */\n function setMinterApprovalWithSignature(\n address minter,\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n // The below functions are near-duplicates of functions available above.\n // They are included for ABI compatibility with snake_casing as used in vyper contracts.\n // solhint-disable func-name-mixedcase\n\n /**\n * @notice Whether `minter` is approved to mint tokens for `user`\n */\n function allowed_to_mint_for(address minter, address user) external view returns (bool);\n\n /**\n * @notice Mint everything which belongs to `msg.sender` across multiple gauges\n * @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n * @param gauges List of `LiquidityGauge` addresses\n */\n function mint_many(address[8] calldata gauges) external;\n\n /**\n * @notice Mint tokens for `user`\n * @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n * @param gauge `LiquidityGauge` address to get mintable amount from\n * @param user Address to mint to\n */\n function mint_for(address gauge, address user) external;\n\n /**\n * @notice Toggle whether `minter` is approved to mint tokens for `user`\n */\n function toggle_approve_mint(address minter) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBalancerToken is IERC20 {\n function mint(address to, uint256 amount) external;\n\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n // solhint-disable-next-line func-name-mixedcase\n function DEFAULT_ADMIN_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function MINTER_ROLE() external view returns (bytes32);\n\n // solhint-disable-next-line func-name-mixedcase\n function SNAPSHOT_ROLE() external view returns (bytes32);\n\n function snapshot() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\n\nimport \"./IBalancerToken.sol\";\n\ninterface IBalancerTokenAdmin is IAuthentication {\n // solhint-disable func-name-mixedcase\n function INITIAL_RATE() external view returns (uint256);\n\n function RATE_REDUCTION_TIME() external view returns (uint256);\n\n function RATE_REDUCTION_COEFFICIENT() external view returns (uint256);\n\n function RATE_DENOMINATOR() external view returns (uint256);\n\n // solhint-enable func-name-mixedcase\n\n /**\n * @notice Returns the address of the Balancer Governance Token\n */\n function getBalancerToken() external view returns (IBalancerToken);\n\n function activate() external;\n\n function rate() external view returns (uint256);\n\n function startEpochTimeWrite() external returns (uint256);\n\n function mint(address to, uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IAuthorizerAdaptor.sol\";\nimport \"./IVotingEscrow.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IGaugeController {\n function checkpoint_gauge(address gauge) external;\n\n function gauge_relative_weight(address gauge, uint256 time) external view returns (uint256);\n\n function voting_escrow() external view returns (IVotingEscrow);\n\n function token() external view returns (IERC20);\n\n function add_type(string calldata name, uint256 weight) external;\n\n function change_type_weight(int128 typeId, uint256 weight) external;\n\n function add_gauge(address gauge, int128 gaugeType) external;\n\n function n_gauge_types() external view returns (int128);\n\n function gauge_types(address gauge) external view returns (int128);\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function gauge_exists(address gauge) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n// solhint-disable func-param-name-mixedcase\n\ninterface ILiquidityGauge {\n // solhint-disable-next-line var-name-mixedcase\n event RelativeWeightCapChanged(uint256 new_relative_weight_cap);\n\n /**\n * @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n * @param user User address.\n * @return uint256 BAL amount to issue for the address.\n */\n function integrate_fraction(address user) external view returns (uint256);\n\n /**\n * @notice Record a checkpoint for a given user.\n * @param user User address.\n * @return bool Always true.\n */\n function user_checkpoint(address user) external returns (bool);\n\n /**\n * @notice Returns true if gauge is killed; false otherwise.\n */\n function is_killed() external view returns (bool);\n\n /**\n * @notice Kills the gauge so it cannot mint BAL.\n */\n function killGauge() external;\n\n /**\n * @notice Unkills the gauge so it can mint BAL again.\n */\n function unkillGauge() external;\n\n /**\n * @notice Sets a new relative weight cap for the gauge.\n * The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n * @param relativeWeightCap New relative weight cap.\n */\n function setRelativeWeightCap(uint256 relativeWeightCap) external;\n\n /**\n * @notice Gets the relative weight cap for the gauge.\n */\n function getRelativeWeightCap() external view returns (uint256);\n\n /**\n * @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n * @param time Timestamp in the past or present.\n */\n function getCappedRelativeWeight(uint256 time) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IRewardTokenDistributor {\n struct Reward {\n IERC20 token;\n address distributor;\n uint256 period_finish;\n uint256 rate;\n uint256 last_update;\n uint256 integral;\n }\n\n function reward_tokens(uint256 index) external view returns (IERC20);\n\n function reward_data(IERC20 token) external view returns (Reward memory);\n\n function claim_rewards(address user) external;\n\n function add_reward(IERC20 rewardToken, address distributor) external;\n\n function set_reward_distributor(IERC20 rewardToken, address distributor) external;\n\n function deposit_reward_token(IERC20 rewardToken, uint256 amount) external;\n\n function claimable_reward(address rewardToken, address user) external view returns (uint256);\n\n function claimable_reward_write(address rewardToken, address user) external returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./ILiquidityGauge.sol\";\nimport \"./IRewardTokenDistributor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase, var-name-mixedcase\n\ninterface IStakingLiquidityGauge is IRewardTokenDistributor, ILiquidityGauge, IERC20 {\n function initialize(address lpToken, uint256 relativeWeightCap) external;\n\n function lp_token() external view returns (IERC20);\n\n function deposit(uint256 value, address recipient) external;\n\n function withdraw(uint256 value) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IAuthorizerAdaptor.sol\";\n\n// For compatibility, we're keeping the same function names as in the original Curve code, including the mixed-case\n// naming convention.\n// solhint-disable func-name-mixedcase\n\ninterface IVotingEscrow {\n struct Point {\n int128 bias;\n int128 slope; // - dweight / dt\n uint256 ts;\n uint256 blk; // block\n }\n\n function epoch() external view returns (uint256);\n\n function totalSupply(uint256 timestamp) external view returns (uint256);\n\n function user_point_epoch(address user) external view returns (uint256);\n\n function point_history(uint256 timestamp) external view returns (Point memory);\n\n function user_point_history(address user, uint256 timestamp) external view returns (Point memory);\n\n function checkpoint() external;\n\n function admin() external view returns (IAuthorizerAdaptor);\n\n function smart_wallet_checker() external view returns (address);\n\n function commit_smart_wallet_checker(address newSmartWalletChecker) external;\n\n function apply_smart_wallet_checker() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// Source: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/interfaces/IButtonWrapper.sol\n// Interface definition for ButtonWrapper contract, which wraps an\n// underlying ERC20 token into a new ERC20 with different characteristics.\n// NOTE: \"uAmount\" => underlying token (wrapped) amount and\n// \"amount\" => wrapper token amount\ninterface IButtonWrapper {\n //--------------------------------------------------------------------------\n // ButtonWrapper write methods\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens.\n /// @param amount The amount of wrapper tokens to mint.\n /// @return The amount of underlying tokens deposited.\n function mint(uint256 amount) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param amount The amount of wrapper tokens to mint.\n /// @return The amount of underlying tokens deposited.\n function mintFor(address to, uint256 amount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param amount The amount of wrapper tokens to burn.\n /// @return The amount of underlying tokens withdrawn.\n function burn(uint256 amount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param amount The amount of wrapper tokens to burn.\n /// @return The amount of underlying tokens withdrawn.\n function burnTo(address to, uint256 amount) external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @return The amount of underlying tokens withdrawn.\n function burnAll() external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param to The beneficiary account.\n /// @return The amount of underlying tokens withdrawn.\n function burnAllTo(address to) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param uAmount The amount of underlying tokens to deposit.\n /// @return The amount of wrapper tokens mint.\n function deposit(uint256 uAmount) external returns (uint256);\n\n /// @notice Transfers underlying tokens from {msg.sender} to the contract and\n /// mints wrapper tokens to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param uAmount The amount of underlying tokens to deposit.\n /// @return The amount of wrapper tokens mint.\n function depositFor(address to, uint256 uAmount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param uAmount The amount of underlying tokens to withdraw.\n /// @return The amount of wrapper tokens burnt.\n function withdraw(uint256 uAmount) external returns (uint256);\n\n /// @notice Burns wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back to the specified beneficiary.\n /// @param to The beneficiary account.\n /// @param uAmount The amount of underlying tokens to withdraw.\n /// @return The amount of wrapper tokens burnt.\n function withdrawTo(address to, uint256 uAmount) external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @return The amount of wrapper tokens burnt.\n function withdrawAll() external returns (uint256);\n\n /// @notice Burns all wrapper tokens from {msg.sender} and transfers\n /// the underlying tokens back.\n /// @param to The beneficiary account.\n /// @return The amount of wrapper tokens burnt.\n function withdrawAllTo(address to) external returns (uint256);\n\n //--------------------------------------------------------------------------\n // ButtonWrapper view methods\n\n /// @return The address of the underlying token.\n function underlying() external view returns (address);\n\n /// @return The total underlying tokens held by the wrapper contract.\n function totalUnderlying() external view returns (uint256);\n\n /// @param who The account address.\n /// @return The underlying token balance of the account.\n function balanceOfUnderlying(address who) external view returns (uint256);\n\n /// @param uAmount The amount of underlying tokens.\n /// @return The amount of wrapper tokens exchangeable.\n function underlyingToWrapper(uint256 uAmount) external view returns (uint256);\n\n /// @param amount The amount of wrapper tokens.\n /// @return The amount of underlying tokens exchangeable.\n function wrapperToUnderlying(uint256 amount) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// Source: https://github.com/Byte-Masons/beet-strat/blob/master/contracts/ReaperVaultv1_4.sol\n// Interface definition for the ReaperTokenVault contract, a single strategy vault\n// for Reaper Farm crypts. The pricePerFullShare is always represented with 18 decimals,\n// regardless of the underlying token decimals.\n// ie: If ppfs === 1e18, 1 USDC === 0.000_000_000_001_000_000 rfUSDC\n// ie: If ppfs === 1e18, 1 DAI === 1 rfDAI\ninterface IReaperTokenVault is IERC20 {\n /**\n * @dev returns the address of the vault's underlying asset (mainToken)\n */\n function token() external view returns (address);\n\n /**\n * @dev returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18\n */\n function getPricePerFullShare() external view returns (uint256);\n\n /**\n * @notice Deposits `_amount` `token`, issuing shares to the caller.\n * If Panic is activated, deposits will not be accepted and this call will fail.\n * @param _amount The quantity of tokens to deposit.\n **/\n function deposit(uint256 _amount) external;\n\n /**\n * @notice Withdraws the calling account's tokens from this Vault,\n * redeeming amount `_shares` for an appropriate amount of tokens.\n **/\n function withdraw(uint256 _shares) external;\n\n /**\n * @dev returns the number of decimals for this vault token.\n * For reaper single-strat vaults, the decimals are fixed to 18.\n */\n function decimals() external view returns (uint8);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IButtonWrapper.sol\";\n\n// Balancer only supports ERC20 tokens, so we use this intermediate interface\n// to enforce ERC20-ness of UnbuttonTokens.\ninterface IUnbuttonToken is IButtonWrapper, IERC20 {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nlibrary StablePoolUserData {\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n\n function joinKind(bytes memory self) internal pure returns (JoinKind) {\n return abi.decode(self, (JoinKind));\n }\n\n function exitKind(bytes memory self) internal pure returns (ExitKind) {\n return abi.decode(self, (ExitKind));\n }\n\n // Joins\n\n function initialAmountsIn(bytes memory self) internal pure returns (uint256[] memory amountsIn) {\n (, amountsIn) = abi.decode(self, (JoinKind, uint256[]));\n }\n\n function exactTokensInForBptOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)\n {\n (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));\n }\n\n function tokenInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut, uint256 tokenIndex) {\n (, bptAmountOut, tokenIndex) = abi.decode(self, (JoinKind, uint256, uint256));\n }\n\n // Exits\n\n function exactBptInForTokenOut(bytes memory self) internal pure returns (uint256 bptAmountIn, uint256 tokenIndex) {\n (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));\n }\n\n function bptInForExactTokensOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsOut, uint256 maxBPTAmountIn)\n {\n (, amountsOut, maxBPTAmountIn) = abi.decode(self, (ExitKind, uint256[], uint256));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nlibrary BasePoolUserData {\n // Special ExitKind for all pools, used in Recovery Mode. Use the max 8-bit value to prevent conflicts\n // with future additions to the ExitKind enums (or any front-end code that maps to existing values)\n uint8 public constant RECOVERY_MODE_EXIT_KIND = 255;\n\n // Return true if this is the special exit kind.\n function isRecoveryModeExitKind(bytes memory self) internal pure returns (bool) {\n // Check for the \"no data\" case, or abi.decode would revert\n return self.length > 0 && abi.decode(self, (uint8)) == RECOVERY_MODE_EXIT_KIND;\n }\n\n // Parse the bptAmountIn out of the userData\n function recoveryModeExit(bytes memory self) internal pure returns (uint256 bptAmountIn) {\n (, bptAmountIn) = abi.decode(self, (uint8, uint256));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\n\ninterface IBasePoolFactory is IAuthentication {\n /**\n * @dev Returns true if `pool` was created by this factory.\n */\n function isPoolFromFactory(address pool) external view returns (bool);\n\n /**\n * @dev Check whether the derived factory has been disabled.\n */\n function isDisabled() external view returns (bool);\n\n /**\n * @dev Disable the factory, preventing the creation of more pools. Already existing pools are unaffected.\n * Once a factory is disabled, it cannot be re-enabled.\n */\n function disable() external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IRateProvider {\n /**\n * @dev Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying\n * token. The meaning of this rate depends on the context.\n */\n function getRate() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"./IRateProvider.sol\";\n\n/**\n * @dev Interface for Pools that assign rate providers to their tokens.\n */\ninterface IRateProviderPool {\n /**\n * @dev Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider\n * for that token.\n */\n function getRateProviders() external view returns (IRateProvider[] memory);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the RecoveryMode module.\n */\ninterface IRecoveryMode {\n /**\n * @dev Emitted when the Recovery Mode status changes.\n */\n event RecoveryModeStateChanged(bool enabled);\n\n /**\n * @notice Enables Recovery Mode in the Pool, disabling protocol fee collection and allowing for safe proportional\n * exits with low computational complexity and no dependencies.\n */\n function enableRecoveryMode() external;\n\n /**\n * @notice Disables Recovery Mode in the Pool, restoring protocol fee collection and disallowing proportional exits.\n */\n function disableRecoveryMode() external;\n\n /**\n * @notice Returns true if the Pool is in Recovery Mode.\n */\n function inRecoveryMode() external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nlibrary WeightedPoolUserData {\n // In order to preserve backwards compatibility, make sure new join and exit kinds are added at the end of the enum.\n enum JoinKind { INIT, EXACT_TOKENS_IN_FOR_BPT_OUT, TOKEN_IN_FOR_EXACT_BPT_OUT, ALL_TOKENS_IN_FOR_EXACT_BPT_OUT }\n enum ExitKind { EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, EXACT_BPT_IN_FOR_TOKENS_OUT, BPT_IN_FOR_EXACT_TOKENS_OUT }\n\n function joinKind(bytes memory self) internal pure returns (JoinKind) {\n return abi.decode(self, (JoinKind));\n }\n\n function exitKind(bytes memory self) internal pure returns (ExitKind) {\n return abi.decode(self, (ExitKind));\n }\n\n // Joins\n\n function initialAmountsIn(bytes memory self) internal pure returns (uint256[] memory amountsIn) {\n (, amountsIn) = abi.decode(self, (JoinKind, uint256[]));\n }\n\n function exactTokensInForBptOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)\n {\n (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));\n }\n\n function tokenInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut, uint256 tokenIndex) {\n (, bptAmountOut, tokenIndex) = abi.decode(self, (JoinKind, uint256, uint256));\n }\n\n function allTokensInForExactBptOut(bytes memory self) internal pure returns (uint256 bptAmountOut) {\n (, bptAmountOut) = abi.decode(self, (JoinKind, uint256));\n }\n\n // Exits\n\n function exactBptInForTokenOut(bytes memory self) internal pure returns (uint256 bptAmountIn, uint256 tokenIndex) {\n (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));\n }\n\n function exactBptInForTokensOut(bytes memory self) internal pure returns (uint256 bptAmountIn) {\n (, bptAmountIn) = abi.decode(self, (ExitKind, uint256));\n }\n\n function bptInForExactTokensOut(bytes memory self)\n internal\n pure\n returns (uint256[] memory amountsOut, uint256 maxBPTAmountIn)\n {\n (, amountsOut, maxBPTAmountIn) = abi.decode(self, (ExitKind, uint256[], uint256));\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// solhint-disable\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _require(bool condition, uint256 errorCode) pure {\n if (!condition) _revert(errorCode);\n}\n\n/**\n * @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n * supported.\n */\nfunction _require(\n bool condition,\n uint256 errorCode,\n bytes3 prefix\n) pure {\n if (!condition) _revert(errorCode, prefix);\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n * Uses the default 'BAL' prefix for the error code\n */\nfunction _revert(uint256 errorCode) pure {\n _revert(errorCode, 0x42414c); // This is the raw byte representation of \"BAL\"\n}\n\n/**\n * @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n */\nfunction _revert(uint256 errorCode, bytes3 prefix) pure {\n uint256 prefixUint = uint256(uint24(prefix));\n // We're going to dynamically create a revert string based on the error code, with the following format:\n // 'BAL#{errorCode}'\n // where the code is left-padded with zeroes to three digits (so they range from 000 to 999).\n //\n // We don't have revert strings embedded in the contract to save bytecode size: it takes much less space to store a\n // number (8 to 16 bits) than the individual string characters.\n //\n // The dynamic string creation algorithm that follows could be implemented in Solidity, but assembly allows for a\n // much denser implementation, again saving bytecode size. Given this function unconditionally reverts, this is a\n // safe place to rely on it without worrying about how its usage might affect e.g. memory contents.\n assembly {\n // First, we need to compute the ASCII representation of the error code. We assume that it is in the 0-999\n // range, so we only need to convert three digits. To convert the digits to ASCII, we add 0x30, the value for\n // the '0' character.\n\n let units := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let tenths := add(mod(errorCode, 10), 0x30)\n\n errorCode := div(errorCode, 10)\n let hundreds := add(mod(errorCode, 10), 0x30)\n\n // With the individual characters, we can now construct the full string.\n // We first append the '#' character (0x23) to the prefix. In the case of 'BAL', it results in 0x42414c23 ('BAL#')\n // Then, we shift this by 24 (to provide space for the 3 bytes of the error code), and add the\n // characters to it, each shifted by a multiple of 8.\n // The revert reason is then shifted left by 200 bits (256 minus the length of the string, 7 characters * 8 bits\n // per character = 56) to locate it in the most significant part of the 256 slot (the beginning of a byte\n // array).\n let formattedPrefix := shl(24, add(0x23, shl(8, prefixUint)))\n\n let revertReason := shl(200, add(formattedPrefix, add(add(units, shl(8, tenths)), shl(16, hundreds))))\n\n // We can now encode the reason in memory, which can be safely overwritten as we're about to revert. The encoded\n // message will have the following layout:\n // [ revert reason identifier ] [ string location offset ] [ string length ] [ string contents ]\n\n // The Solidity revert reason identifier is 0x08c739a0, the function selector of the Error(string) function. We\n // also write zeroes to the next 28 bytes of memory, but those are about to be overwritten.\n mstore(0x0, 0x08c379a000000000000000000000000000000000000000000000000000000000)\n // Next is the offset to the location of the string, which will be placed immediately after (20 bytes away).\n mstore(0x04, 0x0000000000000000000000000000000000000000000000000000000000000020)\n // The string length is fixed: 7 characters.\n mstore(0x24, 7)\n // Finally, the string itself is stored.\n mstore(0x44, revertReason)\n\n // Even if the string is only 7 bytes long, we need to return a full 32 byte slot containing it. The length of\n // the encoded message is therefore 4 + 32 + 32 + 32 = 100.\n revert(0, 100)\n }\n}\n\nlibrary Errors {\n // Math\n uint256 internal constant ADD_OVERFLOW = 0;\n uint256 internal constant SUB_OVERFLOW = 1;\n uint256 internal constant SUB_UNDERFLOW = 2;\n uint256 internal constant MUL_OVERFLOW = 3;\n uint256 internal constant ZERO_DIVISION = 4;\n uint256 internal constant DIV_INTERNAL = 5;\n uint256 internal constant X_OUT_OF_BOUNDS = 6;\n uint256 internal constant Y_OUT_OF_BOUNDS = 7;\n uint256 internal constant PRODUCT_OUT_OF_BOUNDS = 8;\n uint256 internal constant INVALID_EXPONENT = 9;\n\n // Input\n uint256 internal constant OUT_OF_BOUNDS = 100;\n uint256 internal constant UNSORTED_ARRAY = 101;\n uint256 internal constant UNSORTED_TOKENS = 102;\n uint256 internal constant INPUT_LENGTH_MISMATCH = 103;\n uint256 internal constant ZERO_TOKEN = 104;\n uint256 internal constant INSUFFICIENT_DATA = 105;\n\n // Shared pools\n uint256 internal constant MIN_TOKENS = 200;\n uint256 internal constant MAX_TOKENS = 201;\n uint256 internal constant MAX_SWAP_FEE_PERCENTAGE = 202;\n uint256 internal constant MIN_SWAP_FEE_PERCENTAGE = 203;\n uint256 internal constant MINIMUM_BPT = 204;\n uint256 internal constant CALLER_NOT_VAULT = 205;\n uint256 internal constant UNINITIALIZED = 206;\n uint256 internal constant BPT_IN_MAX_AMOUNT = 207;\n uint256 internal constant BPT_OUT_MIN_AMOUNT = 208;\n uint256 internal constant EXPIRED_PERMIT = 209;\n uint256 internal constant NOT_TWO_TOKENS = 210;\n uint256 internal constant DISABLED = 211;\n\n // Pools\n uint256 internal constant MIN_AMP = 300;\n uint256 internal constant MAX_AMP = 301;\n uint256 internal constant MIN_WEIGHT = 302;\n uint256 internal constant MAX_STABLE_TOKENS = 303;\n uint256 internal constant MAX_IN_RATIO = 304;\n uint256 internal constant MAX_OUT_RATIO = 305;\n uint256 internal constant MIN_BPT_IN_FOR_TOKEN_OUT = 306;\n uint256 internal constant MAX_OUT_BPT_FOR_TOKEN_IN = 307;\n uint256 internal constant NORMALIZED_WEIGHT_INVARIANT = 308;\n uint256 internal constant INVALID_TOKEN = 309;\n uint256 internal constant UNHANDLED_JOIN_KIND = 310;\n uint256 internal constant ZERO_INVARIANT = 311;\n uint256 internal constant ORACLE_INVALID_SECONDS_QUERY = 312;\n uint256 internal constant ORACLE_NOT_INITIALIZED = 313;\n uint256 internal constant ORACLE_QUERY_TOO_OLD = 314;\n uint256 internal constant ORACLE_INVALID_INDEX = 315;\n uint256 internal constant ORACLE_BAD_SECS = 316;\n uint256 internal constant AMP_END_TIME_TOO_CLOSE = 317;\n uint256 internal constant AMP_ONGOING_UPDATE = 318;\n uint256 internal constant AMP_RATE_TOO_HIGH = 319;\n uint256 internal constant AMP_NO_ONGOING_UPDATE = 320;\n uint256 internal constant STABLE_INVARIANT_DIDNT_CONVERGE = 321;\n uint256 internal constant STABLE_GET_BALANCE_DIDNT_CONVERGE = 322;\n uint256 internal constant RELAYER_NOT_CONTRACT = 323;\n uint256 internal constant BASE_POOL_RELAYER_NOT_CALLED = 324;\n uint256 internal constant REBALANCING_RELAYER_REENTERED = 325;\n uint256 internal constant GRADUAL_UPDATE_TIME_TRAVEL = 326;\n uint256 internal constant SWAPS_DISABLED = 327;\n uint256 internal constant CALLER_IS_NOT_LBP_OWNER = 328;\n uint256 internal constant PRICE_RATE_OVERFLOW = 329;\n uint256 internal constant INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED = 330;\n uint256 internal constant WEIGHT_CHANGE_TOO_FAST = 331;\n uint256 internal constant LOWER_GREATER_THAN_UPPER_TARGET = 332;\n uint256 internal constant UPPER_TARGET_TOO_HIGH = 333;\n uint256 internal constant UNHANDLED_BY_LINEAR_POOL = 334;\n uint256 internal constant OUT_OF_TARGET_RANGE = 335;\n uint256 internal constant UNHANDLED_EXIT_KIND = 336;\n uint256 internal constant UNAUTHORIZED_EXIT = 337;\n uint256 internal constant MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE = 338;\n uint256 internal constant UNHANDLED_BY_MANAGED_POOL = 339;\n uint256 internal constant UNHANDLED_BY_PHANTOM_POOL = 340;\n uint256 internal constant TOKEN_DOES_NOT_HAVE_RATE_PROVIDER = 341;\n uint256 internal constant INVALID_INITIALIZATION = 342;\n uint256 internal constant OUT_OF_NEW_TARGET_RANGE = 343;\n uint256 internal constant FEATURE_DISABLED = 344;\n uint256 internal constant UNINITIALIZED_POOL_CONTROLLER = 345;\n uint256 internal constant SET_SWAP_FEE_DURING_FEE_CHANGE = 346;\n uint256 internal constant SET_SWAP_FEE_PENDING_FEE_CHANGE = 347;\n uint256 internal constant CHANGE_TOKENS_DURING_WEIGHT_CHANGE = 348;\n uint256 internal constant CHANGE_TOKENS_PENDING_WEIGHT_CHANGE = 349;\n uint256 internal constant MAX_WEIGHT = 350;\n uint256 internal constant UNAUTHORIZED_JOIN = 351;\n uint256 internal constant MAX_MANAGEMENT_AUM_FEE_PERCENTAGE = 352;\n uint256 internal constant FRACTIONAL_TARGET = 353;\n uint256 internal constant ADD_OR_REMOVE_BPT = 354;\n uint256 internal constant INVALID_CIRCUIT_BREAKER_BOUNDS = 355;\n uint256 internal constant CIRCUIT_BREAKER_TRIPPED = 356;\n uint256 internal constant MALICIOUS_QUERY_REVERT = 357;\n\n // Lib\n uint256 internal constant REENTRANCY = 400;\n uint256 internal constant SENDER_NOT_ALLOWED = 401;\n uint256 internal constant PAUSED = 402;\n uint256 internal constant PAUSE_WINDOW_EXPIRED = 403;\n uint256 internal constant MAX_PAUSE_WINDOW_DURATION = 404;\n uint256 internal constant MAX_BUFFER_PERIOD_DURATION = 405;\n uint256 internal constant INSUFFICIENT_BALANCE = 406;\n uint256 internal constant INSUFFICIENT_ALLOWANCE = 407;\n uint256 internal constant ERC20_TRANSFER_FROM_ZERO_ADDRESS = 408;\n uint256 internal constant ERC20_TRANSFER_TO_ZERO_ADDRESS = 409;\n uint256 internal constant ERC20_MINT_TO_ZERO_ADDRESS = 410;\n uint256 internal constant ERC20_BURN_FROM_ZERO_ADDRESS = 411;\n uint256 internal constant ERC20_APPROVE_FROM_ZERO_ADDRESS = 412;\n uint256 internal constant ERC20_APPROVE_TO_ZERO_ADDRESS = 413;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_ALLOWANCE = 414;\n uint256 internal constant ERC20_DECREASED_ALLOWANCE_BELOW_ZERO = 415;\n uint256 internal constant ERC20_TRANSFER_EXCEEDS_BALANCE = 416;\n uint256 internal constant ERC20_BURN_EXCEEDS_ALLOWANCE = 417;\n uint256 internal constant SAFE_ERC20_CALL_FAILED = 418;\n uint256 internal constant ADDRESS_INSUFFICIENT_BALANCE = 419;\n uint256 internal constant ADDRESS_CANNOT_SEND_VALUE = 420;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_INT256 = 421;\n uint256 internal constant GRANT_SENDER_NOT_ADMIN = 422;\n uint256 internal constant REVOKE_SENDER_NOT_ADMIN = 423;\n uint256 internal constant RENOUNCE_SENDER_NOT_ALLOWED = 424;\n uint256 internal constant BUFFER_PERIOD_EXPIRED = 425;\n uint256 internal constant CALLER_IS_NOT_OWNER = 426;\n uint256 internal constant NEW_OWNER_IS_ZERO = 427;\n uint256 internal constant CODE_DEPLOYMENT_FAILED = 428;\n uint256 internal constant CALL_TO_NON_CONTRACT = 429;\n uint256 internal constant LOW_LEVEL_CALL_FAILED = 430;\n uint256 internal constant NOT_PAUSED = 431;\n uint256 internal constant ADDRESS_ALREADY_ALLOWLISTED = 432;\n uint256 internal constant ADDRESS_NOT_ALLOWLISTED = 433;\n uint256 internal constant ERC20_BURN_EXCEEDS_BALANCE = 434;\n uint256 internal constant INVALID_OPERATION = 435;\n uint256 internal constant CODEC_OVERFLOW = 436;\n uint256 internal constant IN_RECOVERY_MODE = 437;\n uint256 internal constant NOT_IN_RECOVERY_MODE = 438;\n uint256 internal constant INDUCED_FAILURE = 439;\n uint256 internal constant EXPIRED_SIGNATURE = 440;\n uint256 internal constant MALFORMED_SIGNATURE = 441;\n uint256 internal constant SAFE_CAST_VALUE_CANT_FIT_UINT64 = 442;\n uint256 internal constant UNHANDLED_FEE_TYPE = 443;\n uint256 internal constant BURN_FROM_ZERO = 444;\n\n // Vault\n uint256 internal constant INVALID_POOL_ID = 500;\n uint256 internal constant CALLER_NOT_POOL = 501;\n uint256 internal constant SENDER_NOT_ASSET_MANAGER = 502;\n uint256 internal constant USER_DOESNT_ALLOW_RELAYER = 503;\n uint256 internal constant INVALID_SIGNATURE = 504;\n uint256 internal constant EXIT_BELOW_MIN = 505;\n uint256 internal constant JOIN_ABOVE_MAX = 506;\n uint256 internal constant SWAP_LIMIT = 507;\n uint256 internal constant SWAP_DEADLINE = 508;\n uint256 internal constant CANNOT_SWAP_SAME_TOKEN = 509;\n uint256 internal constant UNKNOWN_AMOUNT_IN_FIRST_SWAP = 510;\n uint256 internal constant MALCONSTRUCTED_MULTIHOP_SWAP = 511;\n uint256 internal constant INTERNAL_BALANCE_OVERFLOW = 512;\n uint256 internal constant INSUFFICIENT_INTERNAL_BALANCE = 513;\n uint256 internal constant INVALID_ETH_INTERNAL_BALANCE = 514;\n uint256 internal constant INVALID_POST_LOAN_BALANCE = 515;\n uint256 internal constant INSUFFICIENT_ETH = 516;\n uint256 internal constant UNALLOCATED_ETH = 517;\n uint256 internal constant ETH_TRANSFER = 518;\n uint256 internal constant CANNOT_USE_ETH_SENTINEL = 519;\n uint256 internal constant TOKENS_MISMATCH = 520;\n uint256 internal constant TOKEN_NOT_REGISTERED = 521;\n uint256 internal constant TOKEN_ALREADY_REGISTERED = 522;\n uint256 internal constant TOKENS_ALREADY_SET = 523;\n uint256 internal constant TOKENS_LENGTH_MUST_BE_2 = 524;\n uint256 internal constant NONZERO_TOKEN_BALANCE = 525;\n uint256 internal constant BALANCE_TOTAL_OVERFLOW = 526;\n uint256 internal constant POOL_NO_TOKENS = 527;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_BALANCE = 528;\n\n // Fees\n uint256 internal constant SWAP_FEE_PERCENTAGE_TOO_HIGH = 600;\n uint256 internal constant FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH = 601;\n uint256 internal constant INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT = 602;\n uint256 internal constant AUM_FEE_PERCENTAGE_TOO_HIGH = 603;\n\n // FeeSplitter\n uint256 internal constant SPLITTER_FEE_PERCENTAGE_TOO_HIGH = 700;\n\n // Misc\n uint256 internal constant UNIMPLEMENTED = 998;\n uint256 internal constant SHOULD_NOT_HAPPEN = 999;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthentication {\n /**\n * @dev Returns the action identifier associated with the external function described by `selector`.\n */\n function getActionId(bytes4 selector) external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the SignatureValidator helper, used to support meta-transactions.\n */\ninterface ISignaturesValidator {\n /**\n * @dev Returns the EIP712 domain separator.\n */\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @dev Returns the next nonce used by an address to sign messages.\n */\n function getNextNonce(address user) external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface for the TemporarilyPausable helper.\n */\ninterface ITemporarilyPausable {\n /**\n * @dev Emitted every time the pause state changes by `_setPaused`.\n */\n event PausedStateChanged(bool paused);\n\n /**\n * @dev Returns the current paused state.\n */\n function getPausedState()\n external\n view\n returns (\n bool paused,\n uint256 pauseWindowEndTime,\n uint256 bufferPeriodEndTime\n );\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\ninterface IERC4626 is IERC20 {\n /**\n * @dev `caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`.\n */\n event Deposit(address indexed caller, address indexed owner, uint256 assets, uint256 shares);\n\n /**\n * @dev `caller` has exchanged `shares`, owned by `owner`, for `assets`,\n * and transferred those `assets` to `receiver`.\n */\n event Withdraw(\n address indexed caller,\n address indexed receiver,\n address indexed owner,\n uint256 assets,\n uint256 shares\n );\n\n /**\n * @dev Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens.\n */\n function deposit(uint256 assets, address receiver) external returns (uint256 shares);\n\n /**\n * @dev Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`.\n */\n function redeem(\n uint256 shares,\n address receiver,\n address owner\n ) external returns (uint256 assets);\n\n /**\n * @dev The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing.\n */\n function asset() external view returns (address);\n\n /**\n * @dev Total amount of the underlying asset that is “managed” by Vault.\n */\n function totalAssets() external view returns (uint256);\n\n /**\n * @dev The amount of `assets` that the Vault would exchange for the amount\n * of `shares` provided, in an ideal scenario where all the conditions are met.\n */\n function convertToAssets(uint256 shares) external view returns (uint256 assets);\n\n /**\n * @dev The amount of `shares` that the Vault would exchange for the amount\n * of `assets` provided, in an ideal scenario where all the conditions are met.\n */\n function convertToShares(uint256 assets) external view returns (uint256 shares);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../openzeppelin/IERC20.sol\";\n\n/**\n * @dev Interface for WETH9.\n * See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\n */\ninterface IWETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n * given `owner`'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IERC20PermitDAI {\n /**\n * @notice update allowance with a signed permit\n * @param holder Token owner's address (Authorizer)\n * @param spender Spender's address\n * @param nonce The permit nonce\n * @param expiry The time at which this expires (unix time)\n * @param allowed Whether the spender is allowed or disallowed from spending\n * @param v v of the signature\n * @param r r of the signature\n * @param s s of the signature\n */\n function permit(\n address holder,\n address spender,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../vault/IVault.sol\";\n\n/**\n * @dev Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact\n * result they would have if called on the Vault given the current state. Note that the results will be affected by\n * other transactions interacting with the Pools involved.\n *\n * All query functions can be called both on-chain and off-chain.\n *\n * If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce\n * no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However,\n * calling them via STATICCALL will fail.\n *\n * If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for\n * non-view functions.\n *\n * In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same\n * structs for simplicity.\n */\ninterface IBalancerQueries {\n function querySwap(IVault.SingleSwap memory singleSwap, IVault.FundManagement memory funds)\n external\n returns (uint256);\n\n function queryBatchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n IVault.FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request\n ) external returns (uint256 bptOut, uint256[] memory amountsIn);\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.ExitPoolRequest memory request\n ) external returns (uint256 bptIn, uint256[] memory amountsOut);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../vault/IVault.sol\";\n\n/**\n * @title IBalancerRelayer\n * @notice Allows safe multicall execution of a relayer's functions\n */\ninterface IBalancerRelayer {\n function getLibrary() external view returns (address);\n\n function getVault() external view returns (IVault);\n\n function multicall(bytes[] calldata data) external payable returns (bytes[] memory results);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IBALTokenHolder is IAuthentication {\n function getName() external view returns (string memory);\n\n function withdrawFunds(address recipient, uint256 amount) external;\n\n function sweepTokens(\n IERC20 token,\n address recipient,\n uint256 amount\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../vault/IVault.sol\";\nimport \"../liquidity-mining/IBalancerToken.sol\";\n\nimport \"./IBALTokenHolder.sol\";\n\ninterface IBALTokenHolderFactory {\n function getBalancerToken() external view returns (IBalancerToken);\n\n function getVault() external view returns (IVault);\n\n function isHolderFromFactory(address holder) external view returns (bool);\n\n function create(string memory name) external returns (IBALTokenHolder);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\n/**\n * @dev Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some\n * of these values may also be retrievable from other places (such as the swap fee percentage), but this is the\n * preferred source nonetheless.\n */\ninterface IProtocolFeePercentagesProvider {\n // All fee percentages are 18-decimal fixed point numbers, so e.g. 1e18 = 100% and 1e16 = 1%.\n\n // Emitted when a new fee type is registered.\n event ProtocolFeeTypeRegistered(uint256 indexed feeType, string name, uint256 maximumPercentage);\n\n // Emitted when the value of a fee type changes.\n // IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n // ProtocolFeesCollector, which will result in this event not being emitted despite their value changing. Such usage\n // of the ProtocolFeesCollector is however discouraged: all state-changing interactions with it should originate in\n // this contract.\n event ProtocolFeePercentageChanged(uint256 indexed feeType, uint256 percentage);\n\n /**\n * @dev Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`,\n * as well as configurable via `setFeeTypePercentage`.\n *\n * `feeType` can be any arbitrary value (that is not in use).\n *\n * It is not possible to de-register fee types, nor change their name or maximum value.\n */\n function registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) external;\n\n /**\n * @dev Returns true if `feeType` has been registered and can be queried.\n */\n function isValidFeeType(uint256 feeType) external view returns (bool);\n\n /**\n * @dev Returns true if `value` is a valid percentage value for `feeType`.\n */\n function isValidFeeTypePercentage(uint256 feeType, uint256 value) external view returns (bool);\n\n /**\n * @dev Sets the percentage value for `feeType` to `newValue`.\n *\n * IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n * ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged`\n * event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however\n * discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and\n * `setFlashLoanFeePercentage`.\n */\n function setFeeTypePercentage(uint256 feeType, uint256 newValue) external;\n\n /**\n * @dev Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these -\n * whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\n */\n function getFeeTypePercentage(uint256 feeType) external view returns (uint256);\n\n /**\n * @dev Returns `feeType`'s maximum value.\n */\n function getFeeTypeMaximumPercentage(uint256 feeType) external view returns (uint256);\n\n /**\n * @dev Returns `feeType`'s name.\n */\n function getFeeTypeName(uint256 feeType) external view returns (string memory);\n}\n\nlibrary ProtocolFeeType {\n // This list is not exhaustive - more fee types can be added to the system. It is expected for this list to be\n // extended with new fee types as they are registered, to keep them all in one place and reduce\n // likelihood of user error.\n\n // solhint-disable private-vars-leading-underscore\n uint256 internal constant SWAP = 0;\n uint256 internal constant FLASH_LOAN = 1;\n uint256 internal constant YIELD = 2;\n uint256 internal constant AUM = 3;\n // solhint-enable private-vars-leading-underscore\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../vault/IVault.sol\";\nimport \"./IProtocolFeesWithdrawer.sol\";\n\n/**\n * @title ProtocolFeeSplitter\n * @author Daoism Systems\n * @notice Distributes collected protocol fees between Balancer's treasury and a pool owner\n * @dev If you are the pool owner, make sure to update pool's beneficiary address\n * otherwise all BPT tokens go to Balancer's DAO treasury\n */\ninterface IProtocolFeeSplitter {\n event FeesCollected(\n bytes32 indexed poolId,\n address indexed beneficiary,\n uint256 poolEarned,\n address indexed treasury,\n uint256 treasuryEarned\n );\n\n event PoolRevenueShareChanged(bytes32 indexed poolId, uint256 revenueSharePercentage);\n event PoolBeneficiaryChanged(bytes32 indexed poolId, address newBeneficiary);\n event DefaultRevenueSharingFeePercentageChanged(uint256 revenueSharePercentage);\n event TreasuryChanged(address newTreasury);\n\n /**\n * @notice Allows a authorized user to change revenueShare for a `poolId`\n * @param poolId - the poolId of the pool where we want to change fee percentage\n * @param newSwapFeePercentage - new swap fee percentage\n */\n function setRevenueSharingFeePercentage(bytes32 poolId, uint256 newSwapFeePercentage) external;\n\n /**\n * @notice Allows a pool owner to change the pool beneficiary settings\n * @param poolId - the poolId of the pool where we want to change fee beneficiary\n * @param newBeneficiary - beneficiary address\n */\n function setPoolBeneficiary(bytes32 poolId, address newBeneficiary) external;\n\n /**\n * @notice Allows a authorized user to change the treasury address\n * @param newTreasury - beneficiary address\n */\n function setTreasury(address newTreasury) external;\n\n /**\n * @notice Allows a authorized user to change the default revenue sharing fee percentage\n * @param feePercentage - new default revenue sharing fee percentage\n */\n function setDefaultRevenueSharingFeePercentage(uint256 feePercentage) external;\n\n /**\n * @notice Collects and distributes fees for a `poolId`\n * @param poolId - the poolId of the pool for which we collect fees\n * @return beneficiaryAmount The amount of tokens sent to pool's beneficiary\n * @return treasuryAmount The amount of tokens sent to Balancer's treasury\n */\n function collectFees(bytes32 poolId) external returns (uint256 beneficiaryAmount, uint256 treasuryAmount);\n\n /**\n * @notice Returns default revenue sharing fee percentage\n */\n function getDefaultRevenueSharingFeePercentage() external view returns (uint256);\n\n /**\n * @notice Returns amounts that can be colected\n * @param poolId - the poolId of the pool for which we collect fees\n * @return beneficiaryAmount The amount of tokens sent to pool's beneficiary\n * @return treasuryAmount The amount of tokens sent to Balancer's treasury\n */\n function getAmounts(bytes32 poolId) external view returns (uint256 beneficiaryAmount, uint256 treasuryAmount);\n\n /**\n * @notice Returns Balancer's treasury address.\n */\n function getTreasury() external view returns (address);\n\n /**\n * @notice Returns the Protocol Fees Withdrawer address.\n */\n function getProtocolFeesWithdrawer() external view returns (IProtocolFeesWithdrawer);\n\n /**\n * @notice Returns Balancer's vault address.\n */\n function getVault() external view returns (IVault);\n\n /**\n * @notice Returns a Pool's settings.\n */\n function getPoolSettings(bytes32 poolId)\n external\n view\n returns (uint256 revenueSharePercentageOverride, address beneficiary);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../vault/IProtocolFeesCollector.sol\";\n\n/**\n * @author Balancer Labs\n * @title Protocol Fees Withdrawer\n * @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n * This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n * Fees Collector.\n */\ninterface IProtocolFeesWithdrawer {\n event TokenAllowlisted(IERC20 token);\n event TokenDenylisted(IERC20 token);\n\n /**\n * @notice Returns the address of the Protocol Fee Collector.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector\n */\n function isWithdrawableToken(IERC20 token) external view returns (bool);\n\n /**\n * @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n * @dev Returns false if any token is denylisted.\n */\n function isWithdrawableTokens(IERC20[] calldata tokens) external view returns (bool);\n\n /**\n * @notice Returns the denylisted token at the given `index`.\n */\n function getDenylistedToken(uint256 index) external view returns (IERC20);\n\n /**\n * @notice Returns the number of denylisted tokens.\n */\n function getDenylistedTokensLength() external view returns (uint256);\n\n /**\n * @notice Withdraws fees from the Protocol Fee Collector.\n * @dev Reverts if attempting to withdraw a denylisted token.\n * @param tokens - an array of token addresses to withdraw.\n * @param amounts - an array of the amounts of each token to withdraw.\n * @param recipient - the address to which to send the withdrawn tokens.\n */\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n /**\n * @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\n */\n function denylistToken(IERC20 token) external;\n\n /**\n * @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\n */\n function allowlistToken(IERC20 token) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/aave/protocol-v2/blob/ac58fea62bb8afee23f66197e8bce6d79ecda292/contracts/interfaces/IStaticATokenLM.sol\n\ninterface IStaticATokenLM is IERC20 {\n struct SignatureParams {\n uint8 v;\n bytes32 r;\n bytes32 s;\n }\n\n /**\n * @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n * @param recipient The address that will receive the static aTokens\n * @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n * 0 if the action is executed directly by the user, without any middle-man\n * @param fromUnderlying bool\n * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n * @return uint256 The amount of StaticAToken minted, static balance\n **/\n function deposit(\n address recipient,\n uint256 amount,\n uint16 referralCode,\n bool fromUnderlying\n ) external returns (uint256);\n\n /**\n * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n * @param amount The amount to withdraw, in static balance of StaticAToken\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n **/\n function withdraw(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external returns (uint256, uint256);\n\n /**\n * @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n * @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n * @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n **/\n function withdrawDynamicAmount(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external returns (uint256, uint256);\n\n /**\n * @notice Implements the permit function as for\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param owner The owner of the funds\n * @param spender The spender\n * @param value The amount\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param v Signature param\n * @param s Signature param\n * @param r Signature param\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @notice Allows to deposit on Aave via meta-transaction\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param depositor Address from which the funds to deposit are going to be pulled\n * @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n * @param value The amount to deposit\n * @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n * 0 if the action is executed directly by the user, without any middle-man\n * @param fromUnderlying bool\n * - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n * - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param sigParams Signature params: v,r,s\n * @return uint256 The amount of StaticAToken minted, static balance\n */\n function metaDeposit(\n address depositor,\n address recipient,\n uint256 value,\n uint16 referralCode,\n bool fromUnderlying,\n uint256 deadline,\n SignatureParams calldata sigParams\n ) external returns (uint256);\n\n /**\n * @notice Allows to withdraw from Aave via meta-transaction\n * https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n * @param owner Address owning the staticATokens\n * @param recipient Address that will receive the underlying withdrawn from Aave\n * @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n * @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n * @param toUnderlying bool\n * - `true` for the recipient to get underlying tokens (e.g. USDC)\n * - `false` for the recipient to get aTokens (e.g. aUSDC)\n * @param deadline The deadline timestamp, type(uint256).max for max deadline\n * @param sigParams Signature params: v,r,s\n * @return amountToBurn: StaticATokens burnt, static balance\n * @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\n */\n function metaWithdraw(\n address owner,\n address recipient,\n uint256 staticAmount,\n uint256 dynamicAmount,\n bool toUnderlying,\n uint256 deadline,\n SignatureParams calldata sigParams\n ) external returns (uint256, uint256);\n\n /**\n * @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n * @param account The address of the user\n * @return uint256 The aToken balance\n **/\n function dynamicBalanceOf(address account) external view returns (uint256);\n\n /**\n * @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n * using the current liquidity index on Aave\n * @param amount The amount to convert from\n * @return uint256 The dynamic amount\n **/\n function staticToDynamicAmount(uint256 amount) external view returns (uint256);\n\n /**\n * @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n * scaled balance, function of the principal and the liquidity index\n * @param amount The amount to convert from\n * @return uint256 The static (scaled) amount\n **/\n function dynamicToStaticAmount(uint256 amount) external view returns (uint256);\n\n /**\n * @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n * as it can be considered as an ever-increasing exchange rate\n * @return The liquidity index\n **/\n function rate() external view returns (uint256);\n\n /**\n * @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n * @return bytes32 The domain separator\n **/\n function getDomainSeparator() external view returns (bytes32);\n\n /**\n * @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\n */\n function collectAndUpdateRewards() external;\n\n /**\n * @notice Claim rewards on behalf of a user and send them to a receiver\n * @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n * @param onBehalfOf The address to claim on behalf of\n * @param receiver The address to receive the rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewardsOnBehalf(\n address onBehalfOf,\n address receiver,\n bool forceUpdate\n ) external;\n\n /**\n * @notice Claim rewards and send them to a receiver\n * @param receiver The address to receive the rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewards(address receiver, bool forceUpdate) external;\n\n /**\n * @notice Claim rewards\n * @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\n */\n function claimRewardsToSelf(bool forceUpdate) external;\n\n /**\n * @notice Get the total claimable rewards of the contract.\n * @return The current balance + pending rewards from the `_incentivesController`\n */\n function getTotalClaimableRewards() external view returns (uint256);\n\n /**\n * @notice Get the total claimable rewards for a user in WAD\n * @param user The address of the user\n * @return The claimable amount of rewards in WAD\n */\n function getClaimableRewards(address user) external view returns (uint256);\n\n /**\n * @notice The unclaimed rewards for a user in WAD\n * @param user The address of the user\n * @return The unclaimed amount of rewards in WAD\n */\n function getUnclaimedRewards(address user) external view returns (uint256);\n\n function getAccRewardsPerToken() external view returns (uint256);\n\n function getLifetimeRewardsClaimed() external view returns (uint256);\n\n function getLifetimeRewards() external view returns (uint256);\n\n function getLastRewardBlock() external view returns (uint256);\n\n // solhint-disable-next-line func-name-mixedcase\n function LENDING_POOL() external returns (address);\n\n // solhint-disable-next-line func-name-mixedcase\n function INCENTIVES_CONTROLLER() external returns (address);\n\n // solhint-disable-next-line func-name-mixedcase\n function ATOKEN() external returns (IERC20);\n\n // solhint-disable-next-line func-name-mixedcase\n function ASSET() external returns (IERC20);\n\n // solhint-disable-next-line func-name-mixedcase\n function REWARD_TOKEN() external returns (IERC20);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/lidofinance/lido-dao/blob/816bf1d0995ba5cfdfc264de4acda34a7fe93eba/contracts/0.4.24/Lido.sol\n\ninterface IstETH is IERC20 {\n function submit(address referral) external payable returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IstETH.sol\";\n\n// solhint-disable-next-line max-line-length\n// Based on https://github.com/lidofinance/lido-dao/blob/2b46615a11dee77d4d22066f942f6c6afab9b87a/contracts/0.6.12/WstETH.sol\n\n/**\n * @title StETH token wrapper with static balances.\n * @dev It's an ERC20 token that represents the account's share of the total\n * supply of stETH tokens. WstETH token's balance only changes on transfers,\n * unlike StETH that is also changed when oracles report staking rewards and\n * penalties. It's a \"power user\" token for DeFi protocols which don't\n * support rebasable tokens.\n *\n * The contract is also a trustless wrapper that accepts stETH tokens and mints\n * wstETH in return. Then the user unwraps, the contract burns user's wstETH\n * and sends user locked stETH in return.\n *\n * The contract provides the staking shortcut: user can send ETH with regular\n * transfer and get wstETH in return. The contract will send ETH to Lido submit\n * method, staking it and wrapping the received stETH.\n *\n */\ninterface IwstETH is IERC20 {\n function stETH() external returns (IstETH);\n\n /**\n * @notice Exchanges stETH to wstETH\n * @param _stETHAmount amount of stETH to wrap in exchange for wstETH\n * @dev Requirements:\n * - `_stETHAmount` must be non-zero\n * - msg.sender must approve at least `_stETHAmount` stETH to this\n * contract.\n * - msg.sender must have at least `_stETHAmount` of stETH.\n * User should first approve _stETHAmount to the WstETH contract\n * @return Amount of wstETH user receives after wrap\n */\n function wrap(uint256 _stETHAmount) external returns (uint256);\n\n /**\n * @notice Exchanges wstETH to stETH\n * @param _wstETHAmount amount of wstETH to uwrap in exchange for stETH\n * @dev Requirements:\n * - `_wstETHAmount` must be non-zero\n * - msg.sender must have at least `_wstETHAmount` wstETH.\n * @return Amount of stETH user receives after unwrap\n */\n function unwrap(uint256 _wstETHAmount) external returns (uint256);\n\n /**\n * @notice Get amount of wstETH for a given amount of stETH\n * @param _stETHAmount amount of stETH\n * @return Amount of wstETH for a given stETH amount\n */\n function getWstETHByStETH(uint256 _stETHAmount) external view returns (uint256);\n\n /**\n * @notice Get amount of stETH for a given amount of wstETH\n * @param _wstETHAmount amount of wstETH\n * @return Amount of stETH for a given wstETH amount\n */\n function getStETHByWstETH(uint256 _wstETHAmount) external view returns (uint256);\n\n /**\n * @notice Get amount of wstETH for a one stETH\n * @return Amount of stETH for 1 wstETH\n */\n function stEthPerToken() external view returns (uint256);\n\n /**\n * @notice Get amount of stETH for a one wstETH\n * @return Amount of wstETH for a 1 stETH\n */\n function tokensPerStEth() external view returns (uint256);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n * address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n * types.\n *\n * This concept is unrelated to a Pool's Asset Managers.\n */\ninterface IAsset {\n // solhint-disable-previous-line no-empty-blocks\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\ninterface IAuthorizer {\n /**\n * @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`.\n */\n function canPerform(\n bytes32 actionId,\n address account,\n address where\n ) external view returns (bool);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"./IVault.sol\";\nimport \"./IPoolSwapStructs.sol\";\n\n/**\n * @dev Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not\n * the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from\n * either IGeneralPool or IMinimalSwapInfoPool\n */\ninterface IBasePool is IPoolSwapStructs {\n /**\n * @dev Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of\n * each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault.\n * The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect\n * the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`.\n *\n * Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join.\n *\n * `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account\n * designated to receive any benefits (typically pool shares). `balances` contains the total balances\n * for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n *\n * `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n * balance.\n *\n * `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n * join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n *\n * Contracts implementing this function should check that the caller is indeed the Vault before performing any\n * state-changing operations, such as minting pool shares.\n */\n function onJoinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256[] memory amountsIn, uint256[] memory dueProtocolFeeAmounts);\n\n /**\n * @dev Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many\n * tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes\n * to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`,\n * as well as collect the reported amount in protocol fees, which the Pool should calculate based on\n * `protocolSwapFeePercentage`.\n *\n * Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share.\n *\n * `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account\n * to which the Vault will send the proceeds. `balances` contains the total token balances for each token\n * the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n *\n * `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n * balance.\n *\n * `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n * exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n *\n * Contracts implementing this function should check that the caller is indeed the Vault before performing any\n * state-changing operations, such as burning pool shares.\n */\n function onExitPool(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256[] memory amountsOut, uint256[] memory dueProtocolFeeAmounts);\n\n /**\n * @dev Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it).\n */\n function getPoolId() external view returns (bytes32);\n\n /**\n * @dev Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a\n * 10% swap fee.\n */\n function getSwapFeePercentage() external view returns (uint256);\n\n /**\n * @dev Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically\n * not relevant for outside parties, but which might be useful for some types of Pools.\n */\n function getScalingFactors() external view returns (uint256[] memory);\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256 bptOut, uint256[] memory amountsIn);\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n uint256[] memory balances,\n uint256 lastChangeBlock,\n uint256 protocolSwapFeePercentage,\n bytes memory userData\n ) external returns (uint256 bptIn, uint256[] memory amountsOut);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\n// Inspired by Aave Protocol's IFlashLoanReceiver.\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\ninterface IFlashLoanRecipient {\n /**\n * @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n *\n * At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n * call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n * Vault, or else the entire flash loan will revert.\n *\n * `userData` is the same value passed in the `IVault.flashLoan` call.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory feeAmounts,\n bytes memory userData\n ) external;\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\n\ninterface IPoolSwapStructs {\n // This is not really an interface - it just defines common structs used by other interfaces: IGeneralPool and\n // IMinimalSwapInfoPool.\n //\n // This data structure represents a request for a token swap, where `kind` indicates the swap type ('given in' or\n // 'given out') which indicates whether or not the amount sent by the pool is known.\n //\n // The pool receives `tokenIn` and sends `tokenOut`. `amount` is the number of `tokenIn` tokens the pool will take\n // in, or the number of `tokenOut` tokens the Pool will send out, depending on the given swap `kind`.\n //\n // All other fields are not strictly necessary for most swaps, but are provided to support advanced scenarios in\n // some Pools.\n //\n // `poolId` is the ID of the Pool involved in the swap - this is useful for Pool contracts that implement more than\n // one Pool.\n //\n // The meaning of `lastChangeBlock` depends on the Pool specialization:\n // - Two Token or Minimal Swap Info: the last block in which either `tokenIn` or `tokenOut` changed its total\n // balance.\n // - General: the last block in which *any* of the Pool's registered tokens changed its total balance.\n //\n // `from` is the origin address for the funds the Pool receives, and `to` is the destination address\n // where the Pool sends the outgoing tokens.\n //\n // `userData` is extra data provided by the caller - typically a signature from a trusted party.\n struct SwapRequest {\n IVault.SwapKind kind;\n IERC20 tokenIn;\n IERC20 tokenOut;\n uint256 amount;\n // Misc data\n bytes32 poolId;\n uint256 lastChangeBlock;\n address from;\n address to;\n bytes userData;\n }\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./IVault.sol\";\nimport \"./IAuthorizer.sol\";\n\ninterface IProtocolFeesCollector {\n event SwapFeePercentageChanged(uint256 newSwapFeePercentage);\n event FlashLoanFeePercentageChanged(uint256 newFlashLoanFeePercentage);\n\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external;\n\n function setSwapFeePercentage(uint256 newSwapFeePercentage) external;\n\n function setFlashLoanFeePercentage(uint256 newFlashLoanFeePercentage) external;\n\n function getSwapFeePercentage() external view returns (uint256);\n\n function getFlashLoanFeePercentage() external view returns (uint256);\n\n function getCollectedFeeAmounts(IERC20[] memory tokens) external view returns (uint256[] memory feeAmounts);\n\n function getAuthorizer() external view returns (IAuthorizer);\n\n function vault() external view returns (IVault);\n}\n"},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma experimental ABIEncoderV2;\n\nimport \"../solidity-utils/openzeppelin/IERC20.sol\";\nimport \"../solidity-utils/helpers/IAuthentication.sol\";\nimport \"../solidity-utils/helpers/ISignaturesValidator.sol\";\nimport \"../solidity-utils/helpers/ITemporarilyPausable.sol\";\nimport \"../solidity-utils/misc/IWETH.sol\";\n\nimport \"./IAsset.sol\";\nimport \"./IAuthorizer.sol\";\nimport \"./IFlashLoanRecipient.sol\";\nimport \"./IProtocolFeesCollector.sol\";\n\npragma solidity >=0.7.0 <0.9.0;\n\n/**\n * @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n * don't override one of these declarations.\n */\ninterface IVault is ISignaturesValidator, ITemporarilyPausable, IAuthentication {\n // Generalities about the Vault:\n //\n // - Whenever documentation refers to 'tokens', it strictly refers to ERC20-compliant token contracts. Tokens are\n // transferred out of the Vault by calling the `IERC20.transfer` function, and transferred in by calling\n // `IERC20.transferFrom`. In these cases, the sender must have previously allowed the Vault to use their tokens by\n // calling `IERC20.approve`. The only deviation from the ERC20 standard that is supported is functions not returning\n // a boolean value: in these scenarios, a non-reverting call is assumed to be successful.\n //\n // - All non-view functions in the Vault are non-reentrant: calling them while another one is mid-execution (e.g.\n // while execution control is transferred to a token contract during a swap) will result in a revert. View\n // functions can be called in a re-reentrant way, but doing so might cause them to return inconsistent results.\n // Contracts calling view functions in the Vault must make sure the Vault has not already been entered.\n //\n // - View functions revert if referring to either unregistered Pools, or unregistered tokens for registered Pools.\n\n // Authorizer\n //\n // Some system actions are permissioned, like setting and collecting protocol fees. This permissioning system exists\n // outside of the Vault in the Authorizer contract: the Vault simply calls the Authorizer to check if the caller\n // can perform a given action.\n\n /**\n * @dev Returns the Vault's Authorizer.\n */\n function getAuthorizer() external view returns (IAuthorizer);\n\n /**\n * @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n *\n * Emits an `AuthorizerChanged` event.\n */\n function setAuthorizer(IAuthorizer newAuthorizer) external;\n\n /**\n * @dev Emitted when a new authorizer is set by `setAuthorizer`.\n */\n event AuthorizerChanged(IAuthorizer indexed newAuthorizer);\n\n // Relayers\n //\n // Additionally, it is possible for an account to perform certain actions on behalf of another one, using their\n // Vault ERC20 allowance and Internal Balance. These accounts are said to be 'relayers' for these Vault functions,\n // and are expected to be smart contracts with sound authentication mechanisms. For an account to be able to wield\n // this power, two things must occur:\n // - The Authorizer must grant the account the permission to be a relayer for the relevant Vault function. This\n // means that Balancer governance must approve each individual contract to act as a relayer for the intended\n // functions.\n // - Each user must approve the relayer to act on their behalf.\n // This double protection means users cannot be tricked into approving malicious relayers (because they will not\n // have been allowed by the Authorizer via governance), nor can malicious relayers approved by a compromised\n // Authorizer or governance drain user funds, since they would also need to be approved by each individual user.\n\n /**\n * @dev Returns true if `user` has approved `relayer` to act as a relayer for them.\n */\n function hasApprovedRelayer(address user, address relayer) external view returns (bool);\n\n /**\n * @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n *\n * Emits a `RelayerApprovalChanged` event.\n */\n function setRelayerApproval(\n address sender,\n address relayer,\n bool approved\n ) external;\n\n /**\n * @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\n */\n event RelayerApprovalChanged(address indexed relayer, address indexed sender, bool approved);\n\n // Internal Balance\n //\n // Users can deposit tokens into the Vault, where they are allocated to their Internal Balance, and later\n // transferred or withdrawn. It can also be used as a source of tokens when joining Pools, as a destination\n // when exiting them, and as either when performing swaps. This usage of Internal Balance results in greatly reduced\n // gas costs when compared to relying on plain ERC20 transfers, leading to large savings for frequent users.\n //\n // Internal Balance management features batching, which means a single contract call can be used to perform multiple\n // operations of different kinds, with different senders and recipients, at once.\n\n /**\n * @dev Returns `user`'s Internal Balance for a set of tokens.\n */\n function getInternalBalance(address user, IERC20[] memory tokens) external view returns (uint256[] memory);\n\n /**\n * @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n * and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n * it lets integrators reuse a user's Vault allowance.\n *\n * For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\n */\n function manageUserBalance(UserBalanceOp[] memory ops) external payable;\n\n /**\n * @dev Data for `manageUserBalance` operations, which include the possibility for ETH to be sent and received\n without manual WETH wrapping or unwrapping.\n */\n struct UserBalanceOp {\n UserBalanceOpKind kind;\n IAsset asset;\n uint256 amount;\n address sender;\n address payable recipient;\n }\n\n // There are four possible operations in `manageUserBalance`:\n //\n // - DEPOSIT_INTERNAL\n // Increases the Internal Balance of the `recipient` account by transferring tokens from the corresponding\n // `sender`. The sender must have allowed the Vault to use their tokens via `IERC20.approve()`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset and forwarding ETH in the call: it will be wrapped\n // and deposited as WETH. Any ETH amount remaining will be sent back to the caller (not the sender, which is\n // relevant for relayers).\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - WITHDRAW_INTERNAL\n // Decreases the Internal Balance of the `sender` account by transferring tokens to the `recipient`.\n //\n // ETH can be used by passing the ETH sentinel value as the asset. This will deduct WETH instead, unwrap it and send\n // it to the recipient as ETH.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_INTERNAL\n // Transfers tokens from the Internal Balance of the `sender` account to the Internal Balance of `recipient`.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `InternalBalanceChanged` event.\n //\n //\n // - TRANSFER_EXTERNAL\n // Transfers tokens from `sender` to `recipient`, using the Vault's ERC20 allowance. This is typically used by\n // relayers, as it lets them reuse a user's Vault allowance.\n //\n // Reverts if the ETH sentinel value is passed.\n //\n // Emits an `ExternalBalanceTransfer` event.\n\n enum UserBalanceOpKind { DEPOSIT_INTERNAL, WITHDRAW_INTERNAL, TRANSFER_INTERNAL, TRANSFER_EXTERNAL }\n\n /**\n * @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n * interacting with Pools using Internal Balance.\n *\n * Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n * address.\n */\n event InternalBalanceChanged(address indexed user, IERC20 indexed token, int256 delta);\n\n /**\n * @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\n */\n event ExternalBalanceTransfer(IERC20 indexed token, address indexed sender, address recipient, uint256 amount);\n\n // Pools\n //\n // There are three specialization settings for Pools, which allow for cheaper swaps at the cost of reduced\n // functionality:\n //\n // - General: no specialization, suited for all Pools. IGeneralPool is used for swap request callbacks, passing the\n // balance of all tokens in the Pool. These Pools have the largest swap costs (because of the extra storage reads),\n // which increase with the number of registered tokens.\n //\n // - Minimal Swap Info: IMinimalSwapInfoPool is used instead of IGeneralPool, which saves gas by only passing the\n // balance of the two tokens involved in the swap. This is suitable for some pricing algorithms, like the weighted\n // constant product one popularized by Balancer V1. Swap costs are smaller compared to general Pools, and are\n // independent of the number of registered tokens.\n //\n // - Two Token: only allows two tokens to be registered. This achieves the lowest possible swap gas cost. Like\n // minimal swap info Pools, these are called via IMinimalSwapInfoPool.\n\n enum PoolSpecialization { GENERAL, MINIMAL_SWAP_INFO, TWO_TOKEN }\n\n /**\n * @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n * is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n * changed.\n *\n * The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n * depending on the chosen specialization setting. This contract is known as the Pool's contract.\n *\n * Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n * multiple Pools may share the same contract.\n *\n * Emits a `PoolRegistered` event.\n */\n function registerPool(PoolSpecialization specialization) external returns (bytes32);\n\n /**\n * @dev Emitted when a Pool is registered by calling `registerPool`.\n */\n event PoolRegistered(bytes32 indexed poolId, address indexed poolAddress, PoolSpecialization specialization);\n\n /**\n * @dev Returns a Pool's contract address and specialization setting.\n */\n function getPool(bytes32 poolId) external view returns (address, PoolSpecialization);\n\n /**\n * @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n * exit by receiving registered tokens, and can only swap registered tokens.\n *\n * Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n * of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n * ascending order.\n *\n * The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n * Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n * depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n * expected to be highly secured smart contracts with sound design principles, and the decision to register an\n * Asset Manager should not be made lightly.\n *\n * Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n * Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n * different Asset Manager.\n *\n * Emits a `TokensRegistered` event.\n */\n function registerTokens(\n bytes32 poolId,\n IERC20[] memory tokens,\n address[] memory assetManagers\n ) external;\n\n /**\n * @dev Emitted when a Pool registers tokens by calling `registerTokens`.\n */\n event TokensRegistered(bytes32 indexed poolId, IERC20[] tokens, address[] assetManagers);\n\n /**\n * @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n *\n * Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n * balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n * must be deregistered in the same `deregisterTokens` call.\n *\n * A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n *\n * Emits a `TokensDeregistered` event.\n */\n function deregisterTokens(bytes32 poolId, IERC20[] memory tokens) external;\n\n /**\n * @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\n */\n event TokensDeregistered(bytes32 indexed poolId, IERC20[] tokens);\n\n /**\n * @dev Returns detailed information for a Pool's registered token.\n *\n * `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n * withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n * equals the sum of `cash` and `managed`.\n *\n * Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n * `managed` or `total` balance to be greater than 2^112 - 1.\n *\n * `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n * join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n * example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n * change for this purpose, and will update `lastChangeBlock`.\n *\n * `assetManager` is the Pool's token Asset Manager.\n */\n function getPoolTokenInfo(bytes32 poolId, IERC20 token)\n external\n view\n returns (\n uint256 cash,\n uint256 managed,\n uint256 lastChangeBlock,\n address assetManager\n );\n\n /**\n * @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n * the tokens' `balances` changed.\n *\n * The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n * Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n *\n * If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n * order as passed to `registerTokens`.\n *\n * Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n * the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n * instead.\n */\n function getPoolTokens(bytes32 poolId)\n external\n view\n returns (\n IERC20[] memory tokens,\n uint256[] memory balances,\n uint256 lastChangeBlock\n );\n\n /**\n * @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n * trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n * Pool shares.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n * to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n * these maximums.\n *\n * If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n * this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n * WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n * back to the caller (not the sender, which is important for relayers).\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n * sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n * `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n *\n * If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n * be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n * withdrawn from Internal Balance: attempting to do so will trigger a revert.\n *\n * This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n * directly to the Pool's contract, as is `recipient`.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function joinPool(\n bytes32 poolId,\n address sender,\n address recipient,\n JoinPoolRequest memory request\n ) external payable;\n\n struct JoinPoolRequest {\n IAsset[] assets;\n uint256[] maxAmountsIn;\n bytes userData;\n bool fromInternalBalance;\n }\n\n /**\n * @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n * trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n * Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n * `getPoolTokenInfo`).\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n * token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n * it just enforces these minimums.\n *\n * If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n * enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n * of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n *\n * `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n * interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n * be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n * final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n *\n * If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n * an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n * do so will trigger a revert.\n *\n * `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n * `tokens` array. This array must match the Pool's registered tokens.\n *\n * This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n * their own custom logic. This typically requires additional information from the user (such as the expected number\n * of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n * passed directly to the Pool's contract.\n *\n * Emits a `PoolBalanceChanged` event.\n */\n function exitPool(\n bytes32 poolId,\n address sender,\n address payable recipient,\n ExitPoolRequest memory request\n ) external;\n\n struct ExitPoolRequest {\n IAsset[] assets;\n uint256[] minAmountsOut;\n bytes userData;\n bool toInternalBalance;\n }\n\n /**\n * @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\n */\n event PoolBalanceChanged(\n bytes32 indexed poolId,\n address indexed liquidityProvider,\n IERC20[] tokens,\n int256[] deltas,\n uint256[] protocolFeeAmounts\n );\n\n enum PoolBalanceChangeKind { JOIN, EXIT }\n\n // Swaps\n //\n // Users can swap tokens with Pools by calling the `swap` and `batchSwap` functions. To do this,\n // they need not trust Pool contracts in any way: all security checks are made by the Vault. They must however be\n // aware of the Pools' pricing algorithms in order to estimate the prices Pools will quote.\n //\n // The `swap` function executes a single swap, while `batchSwap` can perform multiple swaps in sequence.\n // In each individual swap, tokens of one kind are sent from the sender to the Pool (this is the 'token in'),\n // and tokens of another kind are sent from the Pool to the recipient in exchange (this is the 'token out').\n // More complex swaps, such as one token in to multiple tokens out can be achieved by batching together\n // individual swaps.\n //\n // There are two swap kinds:\n // - 'given in' swaps, where the amount of tokens in (sent to the Pool) is known, and the Pool determines (via the\n // `onSwap` hook) the amount of tokens out (to send to the recipient).\n // - 'given out' swaps, where the amount of tokens out (received from the Pool) is known, and the Pool determines\n // (via the `onSwap` hook) the amount of tokens in (to receive from the sender).\n //\n // Additionally, it is possible to chain swaps using a placeholder input amount, which the Vault replaces with\n // the calculated output of the previous swap. If the previous swap was 'given in', this will be the calculated\n // tokenOut amount. If the previous swap was 'given out', it will use the calculated tokenIn amount. These extended\n // swaps are known as 'multihop' swaps, since they 'hop' through a number of intermediate tokens before arriving at\n // the final intended token.\n //\n // In all cases, tokens are only transferred in and out of the Vault (or withdrawn from and deposited into Internal\n // Balance) after all individual swaps have been completed, and the net token balance change computed. This makes\n // certain swap patterns, such as multihops, or swaps that interact with the same token pair in multiple Pools, cost\n // much less gas than they would otherwise.\n //\n // It also means that under certain conditions it is possible to perform arbitrage by swapping with multiple\n // Pools in a way that results in net token movement out of the Vault (profit), with no tokens being sent in (only\n // updating the Pool's internal accounting).\n //\n // To protect users from front-running or the market changing rapidly, they supply a list of 'limits' for each token\n // involved in the swap, where either the maximum number of tokens to send (by passing a positive value) or the\n // minimum amount of tokens to receive (by passing a negative value) is specified.\n //\n // Additionally, a 'deadline' timestamp can also be provided, forcing the swap to fail if it occurs after\n // this point in time (e.g. if the transaction failed to be included in a block promptly).\n //\n // If interacting with Pools that hold WETH, it is possible to both send and receive ETH directly: the Vault will do\n // the wrapping and unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be\n // passed in the `assets` array instead of the WETH address. Note that it is possible to combine ETH and WETH in the\n // same swap. Any excess ETH will be sent back to the caller (not the sender, which is relevant for relayers).\n //\n // Finally, Internal Balance can be used when either sending or receiving tokens.\n\n enum SwapKind { GIVEN_IN, GIVEN_OUT }\n\n /**\n * @dev Performs a swap with a single Pool.\n *\n * If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n * taken from the Pool, which must be greater than or equal to `limit`.\n *\n * If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n * sent to the Pool, which must be less than or equal to `limit`.\n *\n * Internal Balance usage and the recipient are determined by the `funds` struct.\n *\n * Emits a `Swap` event.\n */\n function swap(\n SingleSwap memory singleSwap,\n FundManagement memory funds,\n uint256 limit,\n uint256 deadline\n ) external payable returns (uint256);\n\n /**\n * @dev Data for a single swap executed by `swap`. `amount` is either `amountIn` or `amountOut` depending on\n * the `kind` value.\n *\n * `assetIn` and `assetOut` are either token addresses, or the IAsset sentinel value for ETH (the zero address).\n * Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct SingleSwap {\n bytes32 poolId;\n SwapKind kind;\n IAsset assetIn;\n IAsset assetOut;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n * the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n *\n * Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n * Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n * the same index in the `assets` array.\n *\n * Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n * Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n * `amountOut` depending on the swap kind.\n *\n * Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n * of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n * the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n *\n * The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n * or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n * out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n * or unwrapped from WETH by the Vault.\n *\n * Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n * the minimum or maximum amount of each token the vault is allowed to transfer.\n *\n * `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n * equivalent `swap` call.\n *\n * Emits `Swap` events.\n */\n function batchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds,\n int256[] memory limits,\n uint256 deadline\n ) external payable returns (int256[] memory);\n\n /**\n * @dev Data for each individual swap executed by `batchSwap`. The asset in and out fields are indexes into the\n * `assets` array passed to that function, and ETH assets are converted to WETH.\n *\n * If `amount` is zero, the multihop mechanism is used to determine the actual amount based on the amount in/out\n * from the previous swap, depending on the swap kind.\n *\n * The `userData` field is ignored by the Vault, but forwarded to the Pool in the `onSwap` hook, and may be\n * used to extend swap behavior.\n */\n struct BatchSwapStep {\n bytes32 poolId;\n uint256 assetInIndex;\n uint256 assetOutIndex;\n uint256 amount;\n bytes userData;\n }\n\n /**\n * @dev Emitted for each individual swap performed by `swap` or `batchSwap`.\n */\n event Swap(\n bytes32 indexed poolId,\n IERC20 indexed tokenIn,\n IERC20 indexed tokenOut,\n uint256 amountIn,\n uint256 amountOut\n );\n\n /**\n * @dev All tokens in a swap are either sent from the `sender` account to the Vault, or from the Vault to the\n * `recipient` account.\n *\n * If the caller is not `sender`, it must be an authorized relayer for them.\n *\n * If `fromInternalBalance` is true, the `sender`'s Internal Balance will be preferred, performing an ERC20\n * transfer for the difference between the requested amount and the User's Internal Balance (if any). The `sender`\n * must have allowed the Vault to use their tokens via `IERC20.approve()`. This matches the behavior of\n * `joinPool`.\n *\n * If `toInternalBalance` is true, tokens will be deposited to `recipient`'s internal balance instead of\n * transferred. This matches the behavior of `exitPool`.\n *\n * Note that ETH cannot be deposited to or withdrawn from Internal Balance: attempting to do so will trigger a\n * revert.\n */\n struct FundManagement {\n address sender;\n bool fromInternalBalance;\n address payable recipient;\n bool toInternalBalance;\n }\n\n /**\n * @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n * simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n *\n * Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n * the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n * receives are the same that an equivalent `batchSwap` call would receive.\n *\n * Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n * This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n * approve them for the Vault, or even know a user's address.\n *\n * Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n * eth_call instead of eth_sendTransaction.\n */\n function queryBatchSwap(\n SwapKind kind,\n BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n FundManagement memory funds\n ) external returns (int256[] memory assetDeltas);\n\n // Flash Loans\n\n /**\n * @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n * and then reverting unless the tokens plus a proportional protocol fee have been returned.\n *\n * The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n * for each token contract. `tokens` must be sorted in ascending order.\n *\n * The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n * `receiveFlashLoan` call.\n *\n * Emits `FlashLoan` events.\n */\n function flashLoan(\n IFlashLoanRecipient recipient,\n IERC20[] memory tokens,\n uint256[] memory amounts,\n bytes memory userData\n ) external;\n\n /**\n * @dev Emitted for each individual flash loan performed by `flashLoan`.\n */\n event FlashLoan(IFlashLoanRecipient indexed recipient, IERC20 indexed token, uint256 amount, uint256 feeAmount);\n\n // Asset Management\n //\n // Each token registered for a Pool can be assigned an Asset Manager, which is able to freely withdraw the Pool's\n // tokens from the Vault, deposit them, or assign arbitrary values to its `managed` balance (see\n // `getPoolTokenInfo`). This makes them extremely powerful and dangerous. Even if an Asset Manager only directly\n // controls one of the tokens in a Pool, a malicious manager could set that token's balance to manipulate the\n // prices of the other tokens, and then drain the Pool with swaps. The risk of using Asset Managers is therefore\n // not constrained to the tokens they are managing, but extends to the entire Pool's holdings.\n //\n // However, a properly designed Asset Manager smart contract can be safely used for the Pool's benefit,\n // for example by lending unused tokens out for interest, or using them to participate in voting protocols.\n //\n // This concept is unrelated to the IAsset interface.\n\n /**\n * @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n *\n * Pool Balance management features batching, which means a single contract call can be used to perform multiple\n * operations of different kinds, with different Pools and tokens, at once.\n *\n * For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\n */\n function managePoolBalance(PoolBalanceOp[] memory ops) external;\n\n struct PoolBalanceOp {\n PoolBalanceOpKind kind;\n bytes32 poolId;\n IERC20 token;\n uint256 amount;\n }\n\n /**\n * Withdrawals decrease the Pool's cash, but increase its managed balance, leaving the total balance unchanged.\n *\n * Deposits increase the Pool's cash, but decrease its managed balance, leaving the total balance unchanged.\n *\n * Updates don't affect the Pool's cash balance, but because the managed balance changes, it does alter the total.\n * The external amount can be either increased or decreased by this call (i.e., reporting a gain or a loss).\n */\n enum PoolBalanceOpKind { WITHDRAW, DEPOSIT, UPDATE }\n\n /**\n * @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\n */\n event PoolBalanceManaged(\n bytes32 indexed poolId,\n address indexed assetManager,\n IERC20 indexed token,\n int256 cashDelta,\n int256 managedDelta\n );\n\n // Protocol Fees\n //\n // Some operations cause the Vault to collect tokens in the form of protocol fees, which can then be withdrawn by\n // permissioned accounts.\n //\n // There are two kinds of protocol fees:\n //\n // - flash loan fees: charged on all flash loans, as a percentage of the amounts lent.\n //\n // - swap fees: a percentage of the fees charged by Pools when performing swaps. For a number of reasons, including\n // swap gas costs and interface simplicity, protocol swap fees are not charged on each individual swap. Rather,\n // Pools are expected to keep track of how much they have charged in swap fees, and pay any outstanding debts to the\n // Vault when they are joined or exited. This prevents users from joining a Pool with unpaid debt, as well as\n // exiting a Pool in debt without first paying their share.\n\n /**\n * @dev Returns the current protocol fee module.\n */\n function getProtocolFeesCollector() external view returns (IProtocolFeesCollector);\n\n /**\n * @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n * error in some part of the system.\n *\n * The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n *\n * While the contract is paused, the following features are disabled:\n * - depositing and transferring internal balance\n * - transferring external balance (using the Vault's allowance)\n * - swaps\n * - joining Pools\n * - Asset Manager interactions\n *\n * Internal Balance can still be withdrawn, and Pools exited.\n */\n function setPaused(bool paused) external;\n\n /**\n * @dev Returns the Vault's WETH instance.\n */\n function WETH() external view returns (IWETH);\n // solhint-disable-previous-line func-name-mixedcase\n}\n"},"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\n/**\n * @dev Base authorization layer implementation for Pools.\n *\n * The owner account can call some of the permissioned functions - access control of the rest is delegated to the\n * Authorizer. Note that this owner is immutable: more sophisticated permission schemes, such as multiple ownership,\n * granular roles, etc., could be built on top of this by making the owner a smart contract.\n *\n * Access control of all other permissioned functions is delegated to an Authorizer. It is also possible to delegate\n * control of *all* permissioned functions to the Authorizer by setting the owner address to `_DELEGATE_OWNER`.\n */\nabstract contract BasePoolAuthorization is Authentication {\n address private immutable _owner;\n\n address internal constant _DELEGATE_OWNER = 0xBA1BA1ba1BA1bA1bA1Ba1BA1ba1BA1bA1ba1ba1B;\n\n constructor(address owner) {\n _owner = owner;\n }\n\n function getOwner() public view returns (address) {\n return _owner;\n }\n\n function getAuthorizer() external view returns (IAuthorizer) {\n return _getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n if ((getOwner() != _DELEGATE_OWNER) && _isOwnerOnlyAction(actionId)) {\n // Only the owner can perform \"owner only\" actions, unless the owner is delegated.\n return msg.sender == getOwner();\n } else {\n // Non-owner actions are always processed via the Authorizer, as \"owner only\" ones are when delegated.\n return _getAuthorizer().canPerform(actionId, account, address(this));\n }\n }\n\n function _isOwnerOnlyAction(bytes32) internal view virtual returns (bool) {\n return false;\n }\n\n function _getAuthorizer() internal view virtual returns (IAuthorizer);\n}\n"},"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\n\n/**\n * @notice Base contract for Pool factories.\n *\n * Pools are deployed from factories to allow third parties to reason about them. Unknown Pools may have arbitrary\n * logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by\n * the factory) is very powerful.\n *\n * @dev By using the split code mechanism, we can deploy Pools with creation code so large that a regular factory\n * contract would not be able to store it.\n *\n * Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will\n * become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently\n * prevent the creation of any future pools from the factory.\n */\nabstract contract BasePoolFactory is IBasePoolFactory, BaseSplitCodeFactory, SingletonAuthentication {\n IProtocolFeePercentagesProvider private immutable _protocolFeeProvider;\n\n mapping(address => bool) private _isPoolFromFactory;\n bool private _disabled;\n\n event PoolCreated(address indexed pool);\n event FactoryDisabled();\n\n constructor(\n IVault vault,\n IProtocolFeePercentagesProvider protocolFeeProvider,\n bytes memory creationCode\n ) BaseSplitCodeFactory(creationCode) SingletonAuthentication(vault) {\n _protocolFeeProvider = protocolFeeProvider;\n }\n\n function isPoolFromFactory(address pool) external view override returns (bool) {\n return _isPoolFromFactory[pool];\n }\n\n function isDisabled() public view override returns (bool) {\n return _disabled;\n }\n\n function disable() external override authenticate {\n _ensureEnabled();\n\n _disabled = true;\n\n emit FactoryDisabled();\n }\n\n function _ensureEnabled() internal view {\n _require(!isDisabled(), Errors.DISABLED);\n }\n\n function getProtocolFeePercentagesProvider() public view returns (IProtocolFeePercentagesProvider) {\n return _protocolFeeProvider;\n }\n\n function _create(bytes memory constructorArgs) internal virtual override returns (address) {\n _ensureEnabled();\n\n address pool = super._create(constructorArgs);\n\n _isPoolFromFactory[pool] = true;\n\n emit PoolCreated(pool);\n\n return pool;\n }\n}\n"},"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\nimport \"./BasePoolAuthorization.sol\";\n\n/**\n * @notice Handle storage and state changes for pools that support \"Recovery Mode\".\n *\n * @dev This is intended to provide a safe way to exit any pool during some kind of emergency, to avoid locking funds\n * in the event the pool enters a non-functional state (i.e., some code that normally runs during exits is causing\n * them to revert).\n *\n * Recovery Mode is *not* the same as pausing the pool. The pause function is only available during a short window\n * after factory deployment. Pausing can only be intentionally reversed during a buffer period, and the contract\n * will permanently unpause itself thereafter. Paused pools are completely disabled, in a kind of suspended animation,\n * until they are voluntarily or involuntarily unpaused.\n *\n * By contrast, a privileged account - typically a governance multisig - can place a pool in Recovery Mode at any\n * time, and it is always reversible. The pool is *not* disabled while in this mode: though of course whatever\n * condition prompted the transition to Recovery Mode has likely effectively disabled some functions. Rather,\n * a special \"clean\" exit is enabled, which runs the absolute minimum code necessary to exit proportionally.\n * In particular, stable pools do not attempt to compute the invariant (which is a complex, iterative calculation\n * that can fail in extreme circumstances), and no protocol fees are collected.\n *\n * It is critical to ensure that turning on Recovery Mode would do no harm, if activated maliciously or in error.\n */\nabstract contract RecoveryMode is IRecoveryMode, BasePoolAuthorization {\n using FixedPoint for uint256;\n using BasePoolUserData for bytes;\n\n /**\n * @dev Reverts if the contract is in Recovery Mode.\n */\n modifier whenNotInRecoveryMode() {\n _ensureNotInRecoveryMode();\n _;\n }\n\n /**\n * @notice Enable recovery mode, which enables a special safe exit path for LPs.\n * @dev Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may\n * perform certain operations in a \"safer\" manner that is less likely to fail, in an attempt to keep the pool\n * running, even in a pathological state. Unlike the Pause operation, which is only available during a short window\n * after factory deployment, Recovery Mode can always be enabled.\n */\n function enableRecoveryMode() external override authenticate {\n // Unlike when recovery mode is disabled, derived contracts should *not* do anything when it is enabled.\n // We do not want to make any calls that could fail and prevent the pool from entering recovery mode.\n // Accordingly, this should have no effect, but for consistency with `disableRecoveryMode`, revert if\n // recovery mode was already enabled.\n _ensureNotInRecoveryMode();\n\n _setRecoveryMode(true);\n\n emit RecoveryModeStateChanged(true);\n }\n\n /**\n * @notice Disable recovery mode, which disables the special safe exit path for LPs.\n * @dev Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly\n * necessary.\n */\n function disableRecoveryMode() external override authenticate {\n // Some derived contracts respond to disabling recovery mode with state changes (e.g., related to protocol fees,\n // or otherwise ensuring that enabling and disabling recovery mode has no ill effects on LPs). When called\n // outside of recovery mode, these state changes might lead to unexpected behavior.\n _ensureInRecoveryMode();\n\n _setRecoveryMode(false);\n\n emit RecoveryModeStateChanged(false);\n }\n\n // Defer implementation for functions that require storage\n\n /**\n * @notice Override to check storage and return whether the pool is in Recovery Mode\n */\n function inRecoveryMode() public view virtual override returns (bool);\n\n /**\n * @dev Override to update storage and emit the event\n *\n * No complex code or external calls that could fail should be placed in the implementations,\n * which could jeopardize the ability to enable and disable Recovery Mode.\n */\n function _setRecoveryMode(bool enabled) internal virtual;\n\n /**\n * @dev Reverts if the contract is not in Recovery Mode.\n */\n function _ensureInRecoveryMode() internal view {\n _require(inRecoveryMode(), Errors.NOT_IN_RECOVERY_MODE);\n }\n\n /**\n * @dev Reverts if the contract is in Recovery Mode.\n */\n function _ensureNotInRecoveryMode() internal view {\n _require(!inRecoveryMode(), Errors.IN_RECOVERY_MODE);\n }\n\n /**\n * @dev A minimal proportional exit, suitable as is for most pools: though not for pools with preminted BPT\n * or other special considerations. Designed to be overridden if a pool needs to do extra processing,\n * such as scaling a stored invariant, or caching the new total supply.\n *\n * No complex code or external calls should be made in derived contracts that override this!\n */\n function _doRecoveryModeExit(\n uint256[] memory balances,\n uint256 totalSupply,\n bytes memory userData\n ) internal virtual returns (uint256, uint256[] memory);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\";\n\n/**\n * @dev Building block for performing access control on external functions.\n *\n * This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n * to external functions to only make them callable by authorized accounts.\n *\n * Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\n */\nabstract contract Authentication is IAuthentication {\n bytes32 private immutable _actionIdDisambiguator;\n\n /**\n * @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n * multi contract systems.\n *\n * There are two main uses for it:\n * - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n * unique. The contract's own address is a good option.\n * - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n * shared by the entire family (and no other contract) should be used instead.\n */\n constructor(bytes32 actionIdDisambiguator) {\n _actionIdDisambiguator = actionIdDisambiguator;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions.\n */\n modifier authenticate() {\n _authenticateCaller();\n _;\n }\n\n /**\n * @dev Reverts unless the caller is allowed to call the entry point function.\n */\n function _authenticateCaller() internal view {\n bytes32 actionId = getActionId(msg.sig);\n _require(_canPerform(actionId, msg.sender), Errors.SENDER_NOT_ALLOWED);\n }\n\n function getActionId(bytes4 selector) public view override returns (bytes32) {\n // Each external function is dynamically assigned an action identifier as the hash of the disambiguator and the\n // function selector. Disambiguation is necessary to avoid potential collisions in the function selectors of\n // multiple contracts.\n return keccak256(abi.encodePacked(_actionIdDisambiguator, selector));\n }\n\n function _canPerform(bytes32 actionId, address user) internal view virtual returns (bool);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./CodeDeployer.sol\";\n\n/**\n * @dev Base factory for contracts whose creation code is so large that the factory cannot hold it. This happens when\n * the contract's creation code grows close to 24kB.\n *\n * Note that this factory cannot help with contracts that have a *runtime* (deployed) bytecode larger than 24kB.\n */\nabstract contract BaseSplitCodeFactory {\n // The contract's creation code is stored as code in two separate addresses, and retrieved via `extcodecopy`. This\n // means this factory supports contracts with creation code of up to 48kB.\n // We rely on inline-assembly to achieve this, both to make the entire operation highly gas efficient, and because\n // `extcodecopy` is not available in Solidity.\n\n // solhint-disable no-inline-assembly\n\n address private immutable _creationCodeContractA;\n uint256 private immutable _creationCodeSizeA;\n\n address private immutable _creationCodeContractB;\n uint256 private immutable _creationCodeSizeB;\n\n /**\n * @dev The creation code of a contract Foo can be obtained inside Solidity with `type(Foo).creationCode`.\n */\n constructor(bytes memory creationCode) {\n uint256 creationCodeSize = creationCode.length;\n\n // We are going to deploy two contracts: one with approximately the first half of `creationCode`'s contents\n // (A), and another with the remaining half (B).\n // We store the lengths in both immutable and stack variables, since immutable variables cannot be read during\n // construction.\n uint256 creationCodeSizeA = creationCodeSize / 2;\n _creationCodeSizeA = creationCodeSizeA;\n\n uint256 creationCodeSizeB = creationCodeSize - creationCodeSizeA;\n _creationCodeSizeB = creationCodeSizeB;\n\n // To deploy the contracts, we're going to use `CodeDeployer.deploy()`, which expects a memory array with\n // the code to deploy. Note that we cannot simply create arrays for A and B's code by copying or moving\n // `creationCode`'s contents as they are expected to be very large (> 24kB), so we must operate in-place.\n\n // Memory: [ code length ] [ A.data ] [ B.data ]\n\n // Creating A's array is simple: we simply replace `creationCode`'s length with A's length. We'll later restore\n // the original length.\n\n bytes memory creationCodeA;\n assembly {\n creationCodeA := creationCode\n mstore(creationCodeA, creationCodeSizeA)\n }\n\n // Memory: [ A.length ] [ A.data ] [ B.data ]\n // ^ creationCodeA\n\n _creationCodeContractA = CodeDeployer.deploy(creationCodeA);\n\n // Creating B's array is a bit more involved: since we cannot move B's contents, we are going to create a 'new'\n // memory array starting at A's last 32 bytes, which will be replaced with B's length. We'll back-up this last\n // byte to later restore it.\n\n bytes memory creationCodeB;\n bytes32 lastByteA;\n\n assembly {\n // `creationCode` points to the array's length, not data, so by adding A's length to it we arrive at A's\n // last 32 bytes.\n creationCodeB := add(creationCode, creationCodeSizeA)\n lastByteA := mload(creationCodeB)\n mstore(creationCodeB, creationCodeSizeB)\n }\n\n // Memory: [ A.length ] [ A.data[ : -1] ] [ B.length ][ B.data ]\n // ^ creationCodeA ^ creationCodeB\n\n _creationCodeContractB = CodeDeployer.deploy(creationCodeB);\n\n // We now restore the original contents of `creationCode` by writing back the original length and A's last byte.\n assembly {\n mstore(creationCodeA, creationCodeSize)\n mstore(creationCodeB, lastByteA)\n }\n }\n\n /**\n * @dev Returns the two addresses where the creation code of the contract crated by this factory is stored.\n */\n function getCreationCodeContracts() public view returns (address contractA, address contractB) {\n return (_creationCodeContractA, _creationCodeContractB);\n }\n\n /**\n * @dev Returns the creation code of the contract this factory creates.\n */\n function getCreationCode() public view returns (bytes memory) {\n return _getCreationCodeWithArgs(\"\");\n }\n\n /**\n * @dev Returns the creation code that will result in a contract being deployed with `constructorArgs`.\n */\n function _getCreationCodeWithArgs(bytes memory constructorArgs) private view returns (bytes memory code) {\n // This function exists because `abi.encode()` cannot be instructed to place its result at a specific address.\n // We need for the ABI-encoded constructor arguments to be located immediately after the creation code, but\n // cannot rely on `abi.encodePacked()` to perform concatenation as that would involve copying the creation code,\n // which would be prohibitively expensive.\n // Instead, we compute the creation code in a pre-allocated array that is large enough to hold *both* the\n // creation code and the constructor arguments, and then copy the ABI-encoded arguments (which should not be\n // overly long) right after the end of the creation code.\n\n // Immutable variables cannot be used in assembly, so we store them in the stack first.\n address creationCodeContractA = _creationCodeContractA;\n uint256 creationCodeSizeA = _creationCodeSizeA;\n address creationCodeContractB = _creationCodeContractB;\n uint256 creationCodeSizeB = _creationCodeSizeB;\n\n uint256 creationCodeSize = creationCodeSizeA + creationCodeSizeB;\n uint256 constructorArgsSize = constructorArgs.length;\n\n uint256 codeSize = creationCodeSize + constructorArgsSize;\n\n assembly {\n // First, we allocate memory for `code` by retrieving the free memory pointer and then moving it ahead of\n // `code` by the size of the creation code plus constructor arguments, and 32 bytes for the array length.\n code := mload(0x40)\n mstore(0x40, add(code, add(codeSize, 32)))\n\n // We now store the length of the code plus constructor arguments.\n mstore(code, codeSize)\n\n // Next, we concatenate the creation code stored in A and B.\n let dataStart := add(code, 32)\n extcodecopy(creationCodeContractA, dataStart, 0, creationCodeSizeA)\n extcodecopy(creationCodeContractB, add(dataStart, creationCodeSizeA), 0, creationCodeSizeB)\n }\n\n // Finally, we copy the constructorArgs to the end of the array. Unfortunately there is no way to avoid this\n // copy, as it is not possible to tell Solidity where to store the result of `abi.encode()`.\n uint256 constructorArgsDataPtr;\n uint256 constructorArgsCodeDataPtr;\n assembly {\n constructorArgsDataPtr := add(constructorArgs, 32)\n constructorArgsCodeDataPtr := add(add(code, 32), creationCodeSize)\n }\n\n _memcpy(constructorArgsCodeDataPtr, constructorArgsDataPtr, constructorArgsSize);\n }\n\n /**\n * @dev Deploys a contract with constructor arguments. To create `constructorArgs`, call `abi.encode()` with the\n * contract's constructor arguments, in order.\n */\n function _create(bytes memory constructorArgs) internal virtual returns (address) {\n bytes memory creationCode = _getCreationCodeWithArgs(constructorArgs);\n\n address destination;\n assembly {\n destination := create(0, add(creationCode, 32), mload(creationCode))\n }\n\n if (destination == address(0)) {\n // Bubble up inner revert reason\n // solhint-disable-next-line no-inline-assembly\n assembly {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n return destination;\n }\n\n // From\n // https://github.com/Arachnid/solidity-stringutils/blob/b9a6f6615cf18a87a823cbc461ce9e140a61c305/src/strings.sol\n function _memcpy(\n uint256 dest,\n uint256 src,\n uint256 len\n ) private pure {\n // Copy word-length chunks while possible\n for (; len >= 32; len -= 32) {\n assembly {\n mstore(dest, mload(src))\n }\n dest += 32;\n src += 32;\n }\n\n // Copy remaining bytes\n uint256 mask = 256**(32 - len) - 1;\n assembly {\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library used to deploy contracts with specific code. This can be used for long-term storage of immutable data as\n * contract code, which can be retrieved via the `extcodecopy` opcode.\n */\nlibrary CodeDeployer {\n // During contract construction, the full code supplied exists as code, and can be accessed via `codesize` and\n // `codecopy`. This is not the contract's final code however: whatever the constructor returns is what will be\n // stored as its code.\n //\n // We use this mechanism to have a simple constructor that stores whatever is appended to it. The following opcode\n // sequence corresponds to the creation code of the following equivalent Solidity contract, plus padding to make the\n // full code 32 bytes long:\n //\n // contract CodeDeployer {\n // constructor() payable {\n // uint256 size;\n // assembly {\n // size := sub(codesize(), 32) // size of appended data, as constructor is 32 bytes long\n // codecopy(0, 32, size) // copy all appended data to memory at position 0\n // return(0, size) // return appended data for it to be stored as code\n // }\n // }\n // }\n //\n // More specifically, it is composed of the following opcodes (plus padding):\n //\n // [1] PUSH1 0x20\n // [2] CODESIZE\n // [3] SUB\n // [4] DUP1\n // [6] PUSH1 0x20\n // [8] PUSH1 0x00\n // [9] CODECOPY\n // [11] PUSH1 0x00\n // [12] RETURN\n //\n // The padding is just the 0xfe sequence (invalid opcode). It is important as it lets us work in-place, avoiding\n // memory allocation and copying.\n bytes32\n private constant _DEPLOYER_CREATION_CODE = 0x602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe;\n\n /**\n * @dev Deploys a contract with `code` as its code, returning the destination address.\n *\n * Reverts if deployment fails.\n */\n function deploy(bytes memory code) internal returns (address destination) {\n bytes32 deployerCreationCode = _DEPLOYER_CREATION_CODE;\n\n // We need to concatenate the deployer creation code and `code` in memory, but want to avoid copying all of\n // `code` (which could be quite long) into a new memory location. Therefore, we operate in-place using\n // assembly.\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let codeLength := mload(code)\n\n // `code` is composed of length and data. We've already stored its length in `codeLength`, so we simply\n // replace it with the deployer creation code (which is exactly 32 bytes long).\n mstore(code, deployerCreationCode)\n\n // At this point, `code` now points to the deployer creation code immediately followed by `code`'s data\n // contents. This is exactly what the deployer expects to receive when created.\n destination := create(0, code, add(codeLength, 32))\n\n // Finally, we restore the original length in order to not mutate `code`.\n mstore(code, codeLength)\n }\n\n // The create opcode returns the zero address when contract creation fails, so we revert if this happens.\n _require(destination != address(0), Errors.CODE_DEPLOYMENT_FAILED);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\";\n\nimport \"../openzeppelin/EIP712.sol\";\n\n/**\n * @dev Utility for signing Solidity function calls.\n */\nabstract contract EOASignaturesValidator is ISignaturesValidator, EIP712 {\n // Replay attack prevention for each account.\n mapping(address => uint256) internal _nextNonce;\n\n function getDomainSeparator() public view override returns (bytes32) {\n return _domainSeparatorV4();\n }\n\n function getNextNonce(address account) public view override returns (uint256) {\n return _nextNonce[account];\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 errorCode\n ) internal {\n return _ensureValidSignature(account, structHash, signature, type(uint256).max, errorCode);\n }\n\n function _ensureValidSignature(\n address account,\n bytes32 structHash,\n bytes memory signature,\n uint256 deadline,\n uint256 errorCode\n ) internal {\n bytes32 digest = _hashTypedDataV4(structHash);\n _require(_isValidSignature(account, digest, signature), errorCode);\n\n // We could check for the deadline before validating the signature, but this leads to saner error processing (as\n // we only care about expired deadlines if the signature is correct) and only affects the gas cost of the revert\n // scenario, which will only occur infrequently, if ever.\n // The deadline is timestamp-based: it should not be relied upon for sub-minute accuracy.\n // solhint-disable-next-line not-rely-on-time\n _require(deadline >= block.timestamp, Errors.EXPIRED_SIGNATURE);\n\n // We only advance the nonce after validating the signature. This is irrelevant for this module, but it can be\n // important in derived contracts that override _isValidSignature (e.g. SignaturesValidator), as we want for\n // the observable state to still have the current nonce as the next valid one.\n _nextNonce[account] += 1;\n }\n\n function _isValidSignature(\n address account,\n bytes32 digest,\n bytes memory signature\n ) internal view virtual returns (bool) {\n _require(signature.length == 65, Errors.MALFORMED_SIGNATURE);\n\n bytes32 r;\n bytes32 s;\n uint8 v;\n\n // ecrecover takes the r, s and v signature parameters, and the only way to get them is to use assembly.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n\n address recoveredAddress = ecrecover(digest, v, r, s);\n\n // ecrecover returns the zero address on recover failure, so we need to handle that explicitly.\n return (recoveredAddress != address(0) && recoveredAddress == account);\n }\n\n function _toArraySignature(\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (bytes memory) {\n bytes memory signature = new bytes(65);\n // solhint-disable-next-line no-inline-assembly\n assembly {\n mstore(add(signature, 32), r)\n mstore(add(signature, 64), s)\n mstore8(add(signature, 96), v)\n }\n\n return signature;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\";\n\n// solhint-disable\n\nfunction _asIAsset(IERC20[] memory tokens) pure returns (IAsset[] memory assets) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n assets := tokens\n }\n}\n\nfunction _sortTokens(\n IERC20 tokenA,\n IERC20 tokenB\n) pure returns (IERC20[] memory tokens) {\n bool aFirst = tokenA < tokenB;\n IERC20[] memory sortedTokens = new IERC20[](2);\n\n sortedTokens[0] = aFirst ? tokenA : tokenB;\n sortedTokens[1] = aFirst ? tokenB : tokenA;\n\n return sortedTokens;\n}\n\nfunction _insertSorted(IERC20[] memory tokens, IERC20 token) pure returns (IERC20[] memory sorted) {\n sorted = new IERC20[](tokens.length + 1);\n\n if (tokens.length == 0) {\n sorted[0] = token;\n return sorted;\n }\n\n uint256 i;\n for (i = tokens.length; i > 0 && tokens[i - 1] > token; i--) sorted[i] = tokens[i - 1];\n for (uint256 j = 0; j < i; j++) sorted[j] = tokens[j];\n sorted[i] = token;\n}\n\nfunction _findTokenIndex(IERC20[] memory tokens, IERC20 token) pure returns (uint256) {\n // Note that while we know tokens are initially sorted, we cannot assume this will hold throughout\n // the pool's lifetime, as pools with mutable tokens can append and remove tokens in any order.\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; i++) {\n if (tokens[i] == token) {\n return i;\n }\n }\n\n _revert(Errors.INVALID_TOKEN);\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nlibrary InputHelpers {\n function ensureInputLengthMatch(uint256 a, uint256 b) internal pure {\n _require(a == b, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureInputLengthMatch(\n uint256 a,\n uint256 b,\n uint256 c\n ) internal pure {\n _require(a == b && b == c, Errors.INPUT_LENGTH_MISMATCH);\n }\n\n function ensureArrayIsSorted(IERC20[] memory array) internal pure {\n address[] memory addressArray;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n addressArray := array\n }\n ensureArrayIsSorted(addressArray);\n }\n\n function ensureArrayIsSorted(address[] memory array) internal pure {\n if (array.length < 2) {\n return;\n }\n\n address previous = array[0];\n for (uint256 i = 1; i < array.length; ++i) {\n address current = array[i];\n _require(previous < current, Errors.UNSORTED_ARRAY);\n previous = current;\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./Authentication.sol\";\n\nabstract contract SingletonAuthentication is Authentication {\n IVault private immutable _vault;\n\n // Use the contract's own address to disambiguate action identifiers\n constructor(IVault vault) Authentication(bytes32(uint256(address(this)))) {\n _vault = vault;\n }\n\n /**\n * @notice Returns the Balancer Vault\n */\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Returns the Authorizer\n */\n function getAuthorizer() public view returns (IAuthorizer) {\n return getVault().getAuthorizer();\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _canPerform(\n bytes32 actionId,\n address account,\n address where\n ) internal view returns (bool) {\n return getAuthorizer().canPerform(actionId, account, where);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nlibrary VaultHelpers {\n /**\n * @dev Returns the address of a Pool's contract.\n *\n * This is the same code the Vault runs in `PoolRegistry._getPoolAddress`.\n */\n function toPoolAddress(bytes32 poolId) internal pure returns (address) {\n // 12 byte logical shift left to remove the nonce and specialization setting. We don't need to mask,\n // since the logical shift already sets the upper bits to zero.\n return address(uint256(poolId) >> (12 * 8));\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\nimport \"./LogExpMath.sol\";\n\n/* solhint-disable private-vars-leading-underscore */\n\nlibrary FixedPoint {\n // solhint-disable no-inline-assembly\n\n uint256 internal constant ONE = 1e18; // 18 decimal places\n uint256 internal constant TWO = 2 * ONE;\n uint256 internal constant FOUR = 4 * ONE;\n uint256 internal constant MAX_POW_RELATIVE_ERROR = 10000; // 10^(-14)\n\n // Minimum base for the power function when the exponent is 'free' (larger than ONE).\n uint256 internal constant MIN_POW_BASE_FREE_EXPONENT = 0.7e18;\n\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n // Fixed Point addition is the same as regular checked addition\n\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n function mulDown(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n return product / ONE;\n }\n\n function mulUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n uint256 product = a * b;\n _require(a == 0 || product / a == b, Errors.MUL_OVERFLOW);\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = product == 0 ? 0 : ((product - 1) / FixedPoint.ONE) + 1;\n assembly {\n result := mul(iszero(iszero(product)), add(div(sub(product, 1), ONE), 1))\n }\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n return aInflated / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n uint256 aInflated = a * ONE;\n _require(a == 0 || aInflated / a == ONE, Errors.DIV_INTERNAL); // mul overflow\n\n // The traditional divUp formula is:\n // divUp(x, y) := (x + y - 1) / y\n // To avoid intermediate overflow in the addition, we distribute the division and get:\n // divUp(x, y) := (x - 1) / y + 1\n // Note that this requires x != 0, if x == 0 then the result is zero\n //\n // Equivalent to:\n // result = a == 0 ? 0 : (a * FixedPoint.ONE - 1) / b + 1;\n assembly {\n result := mul(iszero(iszero(aInflated)), add(div(sub(aInflated, 1), b), 1))\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n * the true value (that is, the error function expected - actual is always positive).\n */\n function powDown(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulDown(x, x);\n } else if (y == FOUR) {\n uint256 square = mulDown(x, x);\n return mulDown(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n if (raw < maxError) {\n return 0;\n } else {\n return sub(raw, maxError);\n }\n }\n }\n\n /**\n * @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n * the true value (that is, the error function expected - actual is always negative).\n */\n function powUp(uint256 x, uint256 y) internal pure returns (uint256) {\n // Optimize for when y equals 1.0, 2.0 or 4.0, as those are very simple to implement and occur often in 50/50\n // and 80/20 Weighted Pools\n if (y == ONE) {\n return x;\n } else if (y == TWO) {\n return mulUp(x, x);\n } else if (y == FOUR) {\n uint256 square = mulUp(x, x);\n return mulUp(square, square);\n } else {\n uint256 raw = LogExpMath.pow(x, y);\n uint256 maxError = add(mulUp(raw, MAX_POW_RELATIVE_ERROR), 1);\n\n return add(raw, maxError);\n }\n }\n\n /**\n * @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n *\n * Useful when computing the complement for values with some level of relative error, as it strips this error and\n * prevents intermediate negative values.\n */\n function complement(uint256 x) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (x < ONE) ? (ONE - x) : 0;\n assembly {\n result := mul(lt(x, ONE), sub(ONE, x))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"content":"// SPDX-License-Identifier: MIT\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\n// documentation files (the “Software”), to deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the\n// Software.\n\n// THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\n// WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/* solhint-disable */\n\n/**\n * @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n *\n * Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n * exponentiation and logarithm (where the base is Euler's number).\n *\n * @author Fernando Martinelli - @fernandomartinelli\n * @author Sergio Yuhjtman - @sergioyuhjtman\n * @author Daniel Fernandez - @dmf7z\n */\nlibrary LogExpMath {\n // All fixed point multiplications and divisions are inlined. This means we need to divide by ONE when multiplying\n // two numbers, and multiply by ONE when dividing them.\n\n // All arguments and return values are 18 decimal fixed point numbers.\n int256 constant ONE_18 = 1e18;\n\n // Internally, intermediate values are computed with higher precision as 20 decimal fixed point numbers, and in the\n // case of ln36, 36 decimals.\n int256 constant ONE_20 = 1e20;\n int256 constant ONE_36 = 1e36;\n\n // The domain of natural exponentiation is bound by the word size and number of decimals used.\n //\n // Because internally the result will be stored using 20 decimals, the largest possible result is\n // (2^255 - 1) / 10^20, which makes the largest exponent ln((2^255 - 1) / 10^20) = 130.700829182905140221.\n // The smallest possible result is 10^(-18), which makes largest negative argument\n // ln(10^(-18)) = -41.446531673892822312.\n // We use 130.0 and -41.0 to have some safety margin.\n int256 constant MAX_NATURAL_EXPONENT = 130e18;\n int256 constant MIN_NATURAL_EXPONENT = -41e18;\n\n // Bounds for ln_36's argument. Both ln(0.9) and ln(1.1) can be represented with 36 decimal places in a fixed point\n // 256 bit integer.\n int256 constant LN_36_LOWER_BOUND = ONE_18 - 1e17;\n int256 constant LN_36_UPPER_BOUND = ONE_18 + 1e17;\n\n uint256 constant MILD_EXPONENT_BOUND = 2**254 / uint256(ONE_20);\n\n // 18 decimal constants\n int256 constant x0 = 128000000000000000000; // 2ˆ7\n int256 constant a0 = 38877084059945950922200000000000000000000000000000000000; // eˆ(x0) (no decimals)\n int256 constant x1 = 64000000000000000000; // 2ˆ6\n int256 constant a1 = 6235149080811616882910000000; // eˆ(x1) (no decimals)\n\n // 20 decimal constants\n int256 constant x2 = 3200000000000000000000; // 2ˆ5\n int256 constant a2 = 7896296018268069516100000000000000; // eˆ(x2)\n int256 constant x3 = 1600000000000000000000; // 2ˆ4\n int256 constant a3 = 888611052050787263676000000; // eˆ(x3)\n int256 constant x4 = 800000000000000000000; // 2ˆ3\n int256 constant a4 = 298095798704172827474000; // eˆ(x4)\n int256 constant x5 = 400000000000000000000; // 2ˆ2\n int256 constant a5 = 5459815003314423907810; // eˆ(x5)\n int256 constant x6 = 200000000000000000000; // 2ˆ1\n int256 constant a6 = 738905609893065022723; // eˆ(x6)\n int256 constant x7 = 100000000000000000000; // 2ˆ0\n int256 constant a7 = 271828182845904523536; // eˆ(x7)\n int256 constant x8 = 50000000000000000000; // 2ˆ-1\n int256 constant a8 = 164872127070012814685; // eˆ(x8)\n int256 constant x9 = 25000000000000000000; // 2ˆ-2\n int256 constant a9 = 128402541668774148407; // eˆ(x9)\n int256 constant x10 = 12500000000000000000; // 2ˆ-3\n int256 constant a10 = 113314845306682631683; // eˆ(x10)\n int256 constant x11 = 6250000000000000000; // 2ˆ-4\n int256 constant a11 = 106449445891785942956; // eˆ(x11)\n\n /**\n * @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n *\n * Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function pow(uint256 x, uint256 y) internal pure returns (uint256) {\n if (y == 0) {\n // We solve the 0^0 indetermination by making it equal one.\n return uint256(ONE_18);\n }\n\n if (x == 0) {\n return 0;\n }\n\n // Instead of computing x^y directly, we instead rely on the properties of logarithms and exponentiation to\n // arrive at that result. In particular, exp(ln(x)) = x, and ln(x^y) = y * ln(x). This means\n // x^y = exp(y * ln(x)).\n\n // The ln function takes a signed value, so we need to make sure x fits in the signed 256 bit range.\n _require(x >> 255 == 0, Errors.X_OUT_OF_BOUNDS);\n int256 x_int256 = int256(x);\n\n // We will compute y * ln(x) in a single step. Depending on the value of x, we can either use ln or ln_36. In\n // both cases, we leave the division by ONE_18 (due to fixed point multiplication) to the end.\n\n // This prevents y * ln(x) from overflowing, and at the same time guarantees y fits in the signed 256 bit range.\n _require(y < MILD_EXPONENT_BOUND, Errors.Y_OUT_OF_BOUNDS);\n int256 y_int256 = int256(y);\n\n int256 logx_times_y;\n if (LN_36_LOWER_BOUND < x_int256 && x_int256 < LN_36_UPPER_BOUND) {\n int256 ln_36_x = _ln_36(x_int256);\n\n // ln_36_x has 36 decimal places, so multiplying by y_int256 isn't as straightforward, since we can't just\n // bring y_int256 to 36 decimal places, as it might overflow. Instead, we perform two 18 decimal\n // multiplications and add the results: one with the first 18 decimals of ln_36_x, and one with the\n // (downscaled) last 18 decimals.\n logx_times_y = ((ln_36_x / ONE_18) * y_int256 + ((ln_36_x % ONE_18) * y_int256) / ONE_18);\n } else {\n logx_times_y = _ln(x_int256) * y_int256;\n }\n logx_times_y /= ONE_18;\n\n // Finally, we compute exp(y * ln(x)) to arrive at x^y\n _require(\n MIN_NATURAL_EXPONENT <= logx_times_y && logx_times_y <= MAX_NATURAL_EXPONENT,\n Errors.PRODUCT_OUT_OF_BOUNDS\n );\n\n return uint256(exp(logx_times_y));\n }\n\n /**\n * @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n *\n * Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`.\n */\n function exp(int256 x) internal pure returns (int256) {\n _require(x >= MIN_NATURAL_EXPONENT && x <= MAX_NATURAL_EXPONENT, Errors.INVALID_EXPONENT);\n\n if (x < 0) {\n // We only handle positive exponents: e^(-x) is computed as 1 / e^x. We can safely make x positive since it\n // fits in the signed 256 bit range (as it is larger than MIN_NATURAL_EXPONENT).\n // Fixed point division requires multiplying by ONE_18.\n return ((ONE_18 * ONE_18) / exp(-x));\n }\n\n // First, we use the fact that e^(x+y) = e^x * e^y to decompose x into a sum of powers of two, which we call x_n,\n // where x_n == 2^(7 - n), and e^x_n = a_n has been precomputed. We choose the first x_n, x0, to equal 2^7\n // because all larger powers are larger than MAX_NATURAL_EXPONENT, and therefore not present in the\n // decomposition.\n // At the end of this process we will have the product of all e^x_n = a_n that apply, and the remainder of this\n // decomposition, which will be lower than the smallest x_n.\n // exp(x) = k_0 * a_0 * k_1 * a_1 * ... + k_n * a_n * exp(remainder), where each k_n equals either 0 or 1.\n // We mutate x by subtracting x_n, making it the remainder of the decomposition.\n\n // The first two a_n (e^(2^7) and e^(2^6)) are too large if stored as 18 decimal numbers, and could cause\n // intermediate overflows. Instead we store them as plain integers, with 0 decimals.\n // Additionally, x0 + x1 is larger than MAX_NATURAL_EXPONENT, which means they will not both be present in the\n // decomposition.\n\n // For each x_n, we test if that term is present in the decomposition (if x is larger than it), and if so deduct\n // it and compute the accumulated product.\n\n int256 firstAN;\n if (x >= x0) {\n x -= x0;\n firstAN = a0;\n } else if (x >= x1) {\n x -= x1;\n firstAN = a1;\n } else {\n firstAN = 1; // One with no decimal places\n }\n\n // We now transform x into a 20 decimal fixed point number, to have enhanced precision when computing the\n // smaller terms.\n x *= 100;\n\n // `product` is the accumulated product of all a_n (except a0 and a1), which starts at 20 decimal fixed point\n // one. Recall that fixed point multiplication requires dividing by ONE_20.\n int256 product = ONE_20;\n\n if (x >= x2) {\n x -= x2;\n product = (product * a2) / ONE_20;\n }\n if (x >= x3) {\n x -= x3;\n product = (product * a3) / ONE_20;\n }\n if (x >= x4) {\n x -= x4;\n product = (product * a4) / ONE_20;\n }\n if (x >= x5) {\n x -= x5;\n product = (product * a5) / ONE_20;\n }\n if (x >= x6) {\n x -= x6;\n product = (product * a6) / ONE_20;\n }\n if (x >= x7) {\n x -= x7;\n product = (product * a7) / ONE_20;\n }\n if (x >= x8) {\n x -= x8;\n product = (product * a8) / ONE_20;\n }\n if (x >= x9) {\n x -= x9;\n product = (product * a9) / ONE_20;\n }\n\n // x10 and x11 are unnecessary here since we have high enough precision already.\n\n // Now we need to compute e^x, where x is small (in particular, it is smaller than x9). We use the Taylor series\n // expansion for e^x: 1 + x + (x^2 / 2!) + (x^3 / 3!) + ... + (x^n / n!).\n\n int256 seriesSum = ONE_20; // The initial one in the sum, with 20 decimal places.\n int256 term; // Each term in the sum, where the nth term is (x^n / n!).\n\n // The first term is simply x.\n term = x;\n seriesSum += term;\n\n // Each term (x^n / n!) equals the previous one times x, divided by n. Since x is a fixed point number,\n // multiplying by it requires dividing by ONE_20, but dividing by the non-fixed point n values does not.\n\n term = ((term * x) / ONE_20) / 2;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 3;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 4;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 5;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 6;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 7;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 8;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 9;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 10;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 11;\n seriesSum += term;\n\n term = ((term * x) / ONE_20) / 12;\n seriesSum += term;\n\n // 12 Taylor terms are sufficient for 18 decimal precision.\n\n // We now have the first a_n (with no decimals), and the product of all other a_n present, and the Taylor\n // approximation of the exponentiation of the remainder (both with 20 decimals). All that remains is to multiply\n // all three (one 20 decimal fixed point multiplication, dividing by ONE_20, and one integer multiplication),\n // and then drop two digits to return an 18 decimal value.\n\n return (((product * seriesSum) / ONE_20) * firstAN) / 100;\n }\n\n /**\n * @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument.\n */\n function log(int256 arg, int256 base) internal pure returns (int256) {\n // This performs a simple base change: log(arg, base) = ln(arg) / ln(base).\n\n // Both logBase and logArg are computed as 36 decimal fixed point numbers, either by using ln_36, or by\n // upscaling.\n\n int256 logBase;\n if (LN_36_LOWER_BOUND < base && base < LN_36_UPPER_BOUND) {\n logBase = _ln_36(base);\n } else {\n logBase = _ln(base) * ONE_18;\n }\n\n int256 logArg;\n if (LN_36_LOWER_BOUND < arg && arg < LN_36_UPPER_BOUND) {\n logArg = _ln_36(arg);\n } else {\n logArg = _ln(arg) * ONE_18;\n }\n\n // When dividing, we multiply by ONE_18 to arrive at a result with 18 decimal places\n return (logArg * ONE_18) / logBase;\n }\n\n /**\n * @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function ln(int256 a) internal pure returns (int256) {\n // The real natural logarithm is not defined for negative numbers or zero.\n _require(a > 0, Errors.OUT_OF_BOUNDS);\n if (LN_36_LOWER_BOUND < a && a < LN_36_UPPER_BOUND) {\n return _ln_36(a) / ONE_18;\n } else {\n return _ln(a);\n }\n }\n\n /**\n * @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument.\n */\n function _ln(int256 a) private pure returns (int256) {\n if (a < ONE_18) {\n // Since ln(a^k) = k * ln(a), we can compute ln(a) as ln(a) = ln((1/a)^(-1)) = - ln((1/a)). If a is less\n // than one, 1/a will be greater than one, and this if statement will not be entered in the recursive call.\n // Fixed point division requires multiplying by ONE_18.\n return (-_ln((ONE_18 * ONE_18) / a));\n }\n\n // First, we use the fact that ln^(a * b) = ln(a) + ln(b) to decompose ln(a) into a sum of powers of two, which\n // we call x_n, where x_n == 2^(7 - n), which are the natural logarithm of precomputed quantities a_n (that is,\n // ln(a_n) = x_n). We choose the first x_n, x0, to equal 2^7 because the exponential of all larger powers cannot\n // be represented as 18 fixed point decimal numbers in 256 bits, and are therefore larger than a.\n // At the end of this process we will have the sum of all x_n = ln(a_n) that apply, and the remainder of this\n // decomposition, which will be lower than the smallest a_n.\n // ln(a) = k_0 * x_0 + k_1 * x_1 + ... + k_n * x_n + ln(remainder), where each k_n equals either 0 or 1.\n // We mutate a by subtracting a_n, making it the remainder of the decomposition.\n\n // For reasons related to how `exp` works, the first two a_n (e^(2^7) and e^(2^6)) are not stored as fixed point\n // numbers with 18 decimals, but instead as plain integers with 0 decimals, so we need to multiply them by\n // ONE_18 to convert them to fixed point.\n // For each a_n, we test if that term is present in the decomposition (if a is larger than it), and if so divide\n // by it and compute the accumulated sum.\n\n int256 sum = 0;\n if (a >= a0 * ONE_18) {\n a /= a0; // Integer, not fixed point division\n sum += x0;\n }\n\n if (a >= a1 * ONE_18) {\n a /= a1; // Integer, not fixed point division\n sum += x1;\n }\n\n // All other a_n and x_n are stored as 20 digit fixed point numbers, so we convert the sum and a to this format.\n sum *= 100;\n a *= 100;\n\n // Because further a_n are 20 digit fixed point numbers, we multiply by ONE_20 when dividing by them.\n\n if (a >= a2) {\n a = (a * ONE_20) / a2;\n sum += x2;\n }\n\n if (a >= a3) {\n a = (a * ONE_20) / a3;\n sum += x3;\n }\n\n if (a >= a4) {\n a = (a * ONE_20) / a4;\n sum += x4;\n }\n\n if (a >= a5) {\n a = (a * ONE_20) / a5;\n sum += x5;\n }\n\n if (a >= a6) {\n a = (a * ONE_20) / a6;\n sum += x6;\n }\n\n if (a >= a7) {\n a = (a * ONE_20) / a7;\n sum += x7;\n }\n\n if (a >= a8) {\n a = (a * ONE_20) / a8;\n sum += x8;\n }\n\n if (a >= a9) {\n a = (a * ONE_20) / a9;\n sum += x9;\n }\n\n if (a >= a10) {\n a = (a * ONE_20) / a10;\n sum += x10;\n }\n\n if (a >= a11) {\n a = (a * ONE_20) / a11;\n sum += x11;\n }\n\n // a is now a small number (smaller than a_11, which roughly equals 1.06). This means we can use a Taylor series\n // that converges rapidly for values of `a` close to one - the same one used in ln_36.\n // Let z = (a - 1) / (a + 1).\n // ln(a) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 20 digit fixed point division requires multiplying by ONE_20, and multiplication requires\n // division by ONE_20.\n int256 z = ((a - ONE_20) * ONE_20) / (a + ONE_20);\n int256 z_squared = (z * z) / ONE_20;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_20;\n seriesSum += num / 11;\n\n // 6 Taylor terms are sufficient for 36 decimal precision.\n\n // Finally, we multiply by 2 (non fixed point) to compute ln(remainder)\n seriesSum *= 2;\n\n // We now have the sum of all x_n present, and the Taylor approximation of the logarithm of the remainder (both\n // with 20 decimals). All that remains is to sum these two, and then drop two digits to return a 18 decimal\n // value.\n\n return (sum + seriesSum) / 100;\n }\n\n /**\n * @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n * for x close to one.\n *\n * Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND.\n */\n function _ln_36(int256 x) private pure returns (int256) {\n // Since ln(1) = 0, a value of x close to one will yield a very small result, which makes using 36 digits\n // worthwhile.\n\n // First, we transform x to a 36 digit fixed point value.\n x *= ONE_18;\n\n // We will use the following Taylor expansion, which converges very rapidly. Let z = (x - 1) / (x + 1).\n // ln(x) = 2 * (z + z^3 / 3 + z^5 / 5 + z^7 / 7 + ... + z^(2 * n + 1) / (2 * n + 1))\n\n // Recall that 36 digit fixed point division requires multiplying by ONE_36, and multiplication requires\n // division by ONE_36.\n int256 z = ((x - ONE_36) * ONE_36) / (x + ONE_36);\n int256 z_squared = (z * z) / ONE_36;\n\n // num is the numerator of the series: the z^(2 * n + 1) term\n int256 num = z;\n\n // seriesSum holds the accumulated sum of each term in the series, starting with the initial z\n int256 seriesSum = num;\n\n // In each step, the numerator is multiplied by z^2\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 3;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 5;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 7;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 9;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 11;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 13;\n\n num = (num * z_squared) / ONE_36;\n seriesSum += num / 15;\n\n // 8 Taylor terms are sufficient for 36 decimal precision.\n\n // All that remains is multiplying by 2 (non fixed point).\n return seriesSum * 2;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n * Adapted from OpenZeppelin's SafeMath library.\n */\nlibrary Math {\n // solhint-disable no-inline-assembly\n\n /**\n * @dev Returns the absolute value of a signed integer.\n */\n function abs(int256 a) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = a > 0 ? uint256(a) : uint256(-a)\n assembly {\n let s := sar(255, a)\n result := sub(xor(a, s), s)\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the addition of two signed integers, reverting on overflow.\n */\n function add(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a + b;\n _require((b >= 0 && c >= a) || (b < 0 && c < a), Errors.ADD_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b <= a, Errors.SUB_OVERFLOW);\n uint256 c = a - b;\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two signed integers, reverting on overflow.\n */\n function sub(int256 a, int256 b) internal pure returns (int256) {\n int256 c = a - b;\n _require((b >= 0 && c <= a) || (b < 0 && c > a), Errors.SUB_OVERFLOW);\n return c;\n }\n\n /**\n * @dev Returns the largest of two numbers of 256 bits.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to:\n // result = (a < b) ? b : a;\n assembly {\n result := sub(a, mul(sub(a, b), lt(a, b)))\n }\n }\n\n /**\n * @dev Returns the smallest of two numbers of 256 bits.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256 result) {\n // Equivalent to `result = (a < b) ? a : b`\n assembly {\n result := sub(a, mul(sub(a, b), gt(a, b)))\n }\n }\n\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a * b;\n _require(a == 0 || c / a == b, Errors.MUL_OVERFLOW);\n return c;\n }\n\n function div(\n uint256 a,\n uint256 b,\n bool roundUp\n ) internal pure returns (uint256) {\n return roundUp ? divUp(a, b) : divDown(a, b);\n }\n\n function divDown(uint256 a, uint256 b) internal pure returns (uint256) {\n _require(b != 0, Errors.ZERO_DIVISION);\n return a / b;\n }\n\n function divUp(uint256 a, uint256 b) internal pure returns (uint256 result) {\n _require(b != 0, Errors.ZERO_DIVISION);\n\n // Equivalent to:\n // result = a == 0 ? 0 : 1 + (a - 1) / b;\n assembly {\n result := mul(iszero(iszero(a)), add(1, div(sub(a, 1), b)))\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the Address library from OpenZeppelin Contracts, altered by removing the `isContract` checks on\n// `functionCall` and `functionDelegateCall` in order to save gas, as the recipients are known to be contracts.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly {\n size := extcodesize(account)\n }\n return size > 0;\n }\n\n // solhint-disable max-line-length\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n _require(address(this).balance >= amount, Errors.ADDRESS_INSUFFICIENT_BALANCE);\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n _require(success, Errors.ADDRESS_CANNOT_SEND_VALUE);\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call(data);\n return verifyCallResult(success, returndata);\n }\n\n // solhint-enable max-line-length\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but passing some native ETH as msg.value to the call.\n *\n * _Available since v3.4._\n */\n function functionCallWithValue(\n address target,\n bytes memory data,\n uint256 value\n ) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResult(success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n * revert reason or using the one provided.\n *\n * _Available since v4.3._\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n _revert(Errors.LOW_LEVEL_CALL_FAILED);\n }\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n * thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n * they need in their contracts using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * _Available since v3.4._\n */\nabstract contract EIP712 {\n /* solhint-disable var-name-mixedcase */\n bytes32 private immutable _HASHED_NAME;\n bytes32 private immutable _HASHED_VERSION;\n bytes32 private immutable _TYPE_HASH;\n\n /* solhint-enable var-name-mixedcase */\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _HASHED_NAME = keccak256(bytes(name));\n _HASHED_VERSION = keccak256(bytes(version));\n _TYPE_HASH = keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view virtual returns (bytes32) {\n return keccak256(abi.encode(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION, _getChainId(), address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return keccak256(abi.encodePacked(\"\\x19\\x01\", _domainSeparatorV4(), structHash));\n }\n\n // solc-ignore-next-line func-mutability\n function _getChainId() private view returns (uint256 chainId) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n chainId := chainid()\n }\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the EnumerableSet library from OpenZeppelin Contracts, altered to remove the base private functions that\n// work on bytes32, replacing them with a native implementation for address and bytes32 values, to reduce bytecode\n// size and runtime costs.\n// The `unchecked_at` function was also added, which allows for more gas efficient data reads in some scenarios.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // The original OpenZeppelin implementation uses a generic Set type with bytes32 values: this was replaced with\n // AddressSet, which uses address keys natively, resulting in more dense bytecode.\n\n struct AddressSet {\n // Storage of set values\n address[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(address => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, if it was not already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n address lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(AddressSet storage set, uint256 index) internal view returns (address) {\n return set._values[index];\n }\n\n function rawIndexOf(AddressSet storage set, address value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n\n struct Bytes32Set {\n // Storage of set values\n bytes32[] _values;\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping(bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n if (!contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // The swap is only necessary if we're not removing the last element\n if (toDeleteIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastValue;\n // Update the index for the moved value\n set._indexes[lastValue] = toDeleteIndex + 1; // All indexes are 1-based\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n _require(set._values.length > index, Errors.OUT_OF_BOUNDS);\n return unchecked_at(set, index);\n }\n\n /**\n * @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n * than {length}). O(1).\n *\n * This function performs one less storage read than {at}, but should only be used when `index` is known to be\n * within bounds.\n */\n // solhint-disable-next-line func-name-mixedcase\n function unchecked_at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return set._values[index];\n }\n\n function rawIndexOf(Bytes32Set storage set, bytes32 value) internal view returns (uint256) {\n return set._indexes[value] - 1;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\nimport \"./SafeMath.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is IERC20 {\n using SafeMath for uint256;\n\n mapping(address => uint256) private _balances;\n\n mapping(address => mapping(address => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n /**\n * @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n * a default value of 18.\n *\n * To select a different value for {decimals}, use {_setupDecimals}.\n *\n * All three of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n _decimals = 18;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n * called.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n /**\n * @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n *\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function totalSupply() public view virtual override returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev Sets a new value for the total supply. It should only be set using this function.\n *\n * * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n * storage values).\n */\n function _setTotalSupply(uint256 value) internal virtual {\n _totalSupply = value;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view override returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `recipient` cannot be the zero address.\n * - the caller must have a balance of at least `amount`.\n */\n function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n _transfer(msg.sender, recipient, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual override returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 amount) public virtual override returns (bool) {\n _approve(msg.sender, spender, amount);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Emits an {Approval} event indicating the updated allowance. This is not\n * required by the EIP. See the note at the beginning of {ERC20}.\n *\n * Requirements:\n *\n * - `sender` and `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n * - the caller must have allowance for ``sender``'s tokens of at least\n * `amount`.\n */\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public virtual override returns (bool) {\n _transfer(sender, recipient, amount);\n _approve(\n sender,\n msg.sender,\n _allowances[sender][msg.sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_ALLOWANCE)\n );\n return true;\n }\n\n /**\n * @dev Atomically increases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));\n return true;\n }\n\n /**\n * @dev Atomically decreases the allowance granted to `spender` by the caller.\n *\n * This is an alternative to {approve} that can be used as a mitigation for\n * problems described in {IERC20-approve}.\n *\n * Emits an {Approval} event indicating the updated allowance.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `spender` must have allowance for the caller of at least\n * `subtractedValue`.\n */\n function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n _approve(\n msg.sender,\n spender,\n _allowances[msg.sender][spender].sub(subtractedValue, Errors.ERC20_DECREASED_ALLOWANCE_BELOW_ZERO)\n );\n return true;\n }\n\n /**\n * @dev Moves tokens `amount` from `sender` to `recipient`.\n *\n * This is internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * Requirements:\n *\n * - `sender` cannot be the zero address.\n * - `recipient` cannot be the zero address.\n * - `sender` must have a balance of at least `amount`.\n */\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n _require(sender != address(0), Errors.ERC20_TRANSFER_FROM_ZERO_ADDRESS);\n _require(recipient != address(0), Errors.ERC20_TRANSFER_TO_ZERO_ADDRESS);\n\n _beforeTokenTransfer(sender, recipient, amount);\n\n _balances[sender] = _balances[sender].sub(amount, Errors.ERC20_TRANSFER_EXCEEDS_BALANCE);\n _balances[recipient] = _balances[recipient].add(amount);\n emit Transfer(sender, recipient, amount);\n }\n\n /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n * the total supply.\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n */\n function _mint(address account, uint256 amount) internal virtual {\n _beforeTokenTransfer(address(0), account, amount);\n\n _setTotalSupply(totalSupply().add(amount));\n _balances[account] = _balances[account].add(amount);\n emit Transfer(address(0), account, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, reducing the\n * total supply.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens.\n */\n function _burn(address account, uint256 amount) internal virtual {\n _require(account != address(0), Errors.ERC20_BURN_FROM_ZERO_ADDRESS);\n\n _beforeTokenTransfer(account, address(0), amount);\n\n _balances[account] = _balances[account].sub(amount, Errors.ERC20_BURN_EXCEEDS_BALANCE);\n _setTotalSupply(totalSupply().sub(amount));\n emit Transfer(account, address(0), amount);\n }\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n */\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n _allowances[owner][spender] = amount;\n emit Approval(owner, spender, amount);\n }\n\n /**\n * @dev Sets {decimals} to a value other than the default one of 18.\n *\n * WARNING: This function should only be called from the constructor. Most\n * applications that interact with token contracts will not expect\n * {decimals} to ever change, and may work incorrectly if it does.\n */\n function _setupDecimals(uint8 decimals_) internal {\n _decimals = decimals_;\n }\n\n /**\n * @dev Hook that is called before any transfer of tokens. This includes\n * minting and burning.\n *\n * Calling conditions:\n *\n * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * will be to transferred to `to`.\n * - when `from` is zero, `amount` tokens will be minted for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n * - `from` and `to` are never both zero.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 amount\n ) internal virtual {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"./ERC20.sol\";\n\n/**\n * @dev Extension of {ERC20} that allows token holders to destroy both their own\n * tokens and those that they have an allowance for, in a way that can be\n * recognized off-chain (via event analysis).\n */\nabstract contract ERC20Burnable is ERC20 {\n using SafeMath for uint256;\n\n /**\n * @dev Destroys `amount` tokens from the caller.\n *\n * See {ERC20-_burn}.\n */\n function burn(uint256 amount) public virtual {\n _burn(msg.sender, amount);\n }\n\n /**\n * @dev Destroys `amount` tokens from `account`, deducting from the caller's\n * allowance.\n *\n * See {ERC20-_burn} and {ERC20-allowance}.\n *\n * Requirements:\n *\n * - the caller must have allowance for ``accounts``'s tokens of at least\n * `amount`.\n */\n function burnFrom(address account, uint256 amount) public virtual {\n uint256 decreasedAllowance = allowance(account, msg.sender).sub(amount, Errors.ERC20_BURN_EXCEEDS_ALLOWANCE);\n\n _approve(account, msg.sender, decreasedAllowance);\n _burn(account, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\n\nimport \"./ERC20.sol\";\nimport \"../helpers/EOASignaturesValidator.sol\";\n\n/**\n * @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * _Available since v3.4._\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EOASignaturesValidator {\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private constant _PERMIT_TYPEHASH = keccak256(\n \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n );\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n /**\n * @dev See {IERC20Permit-permit}.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual override {\n bytes32 structHash = keccak256(\n abi.encode(_PERMIT_TYPEHASH, owner, spender, value, getNextNonce(owner), deadline)\n );\n\n _ensureValidSignature(owner, structHash, _toArraySignature(v, r, s), deadline, Errors.INVALID_SIGNATURE);\n\n _approve(owner, spender, value);\n }\n\n /**\n * @dev See {IERC20Permit-nonces}.\n */\n function nonces(address owner) public view override returns (uint256) {\n return getNextNonce(owner);\n }\n\n /**\n * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view override returns (bytes32) {\n return getDomainSeparator();\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce bytecode size.\n// Modifier code is inlined by the compiler, which causes its code to appear multiple times in the codebase. By using\n// private functions, we achieve the same end result with slightly higher runtime gas costs, but reduced bytecode size.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant _NOT_ENTERED = 1;\n uint256 private constant _ENTERED = 2;\n\n uint256 private _status;\n\n constructor() {\n _status = _NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and make it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _enterNonReentrant();\n _;\n _exitNonReentrant();\n }\n\n function _enterNonReentrant() private {\n // On the first call to nonReentrant, _status will be _NOT_ENTERED\n _require(_status != _ENTERED, Errors.REENTRANCY);\n\n // Any calls to nonReentrant after this point will fail\n _status = _ENTERED;\n }\n\n function _exitNonReentrant() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = _NOT_ENTERED;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n *\n * Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n * all math on `uint256` and `int256` and then downcasting.\n */\nlibrary SafeCast {\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n _require(value >> 255 == 0, Errors.SAFE_CAST_VALUE_CANT_FIT_INT256);\n return int256(value);\n }\n\n /**\n * @dev Converts an unsigned uint256 into an unsigned uint64.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxUint64.\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n _require(value <= type(uint64).max, Errors.SAFE_CAST_VALUE_CANT_FIT_UINT64);\n return uint64(value);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n\n// Based on the ReentrancyGuard library from OpenZeppelin Contracts, altered to reduce gas costs.\n// The `safeTransfer` and `safeTransferFrom` functions assume that `token` is a contract (an account with code), and\n// work differently from the OpenZeppelin version if it is not.\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n\n function safeApprove(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n // Some contracts need their allowance reduced to 0 before setting it to an arbitrary amount.\n if (value != 0 && token.allowance(address(this), address(to)) != 0) {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, 0));\n }\n\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.approve.selector, to, value));\n }\n\n function safeTransfer(\n IERC20 token,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transfer.selector, to, value));\n }\n\n function safeTransferFrom(\n IERC20 token,\n address from,\n address to,\n uint256 value\n ) internal {\n _callOptionalReturn(address(token), abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n *\n * WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert.\n */\n function _callOptionalReturn(address token, bytes memory data) private {\n // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n // we're implementing it ourselves.\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = token.call(data);\n\n // If the low-level call didn't succeed we return whatever was returned from it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n if eq(success, 0) {\n returndatacopy(0, 0, returndatasize())\n revert(0, returndatasize())\n }\n }\n\n // Finally we check the returndata size is either zero or true - note that this check will always pass for EOAs\n _require(returndata.length == 0 || abi.decode(returndata, (bool)), Errors.SAFE_ERC20_CALL_FAILED);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n _require(c >= a, Errors.ADD_OVERFLOW);\n\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return sub(a, b, Errors.SUB_OVERFLOW);\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n uint256 errorCode\n ) internal pure returns (uint256) {\n _require(b <= a, errorCode);\n uint256 c = a - b;\n\n return c;\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/ERC20.sol\";\n\ncontract ERC20Mock is ERC20 {\n constructor(string memory name, string memory symbol) ERC20(name, symbol) {}\n\n function mint(address recipient, uint256 amount) external {\n _mint(recipient, amount);\n }\n\n function burn(address sender, uint256 amount) external {\n _burn(sender, amount);\n }\n}\n"},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"../openzeppelin/ERC20Burnable.sol\";\nimport \"../openzeppelin/ERC20Permit.sol\";\nimport \"../openzeppelin/ERC20.sol\";\n\ncontract TestToken is ERC20, ERC20Burnable, ERC20Permit {\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals\n ) ERC20(name, symbol) ERC20Permit(name) {\n _setupDecimals(decimals);\n }\n\n function mint(address recipient, uint256 amount) external {\n _mint(recipient, amount);\n }\n}\n"},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\";\n\nabstract contract AssetHelpers {\n // solhint-disable-next-line var-name-mixedcase\n IWETH private immutable _weth;\n\n // Sentinel value used to indicate WETH with wrapping/unwrapping semantics. The zero address is a good choice for\n // multiple reasons: it is cheap to pass as a calldata argument, it is a known invalid token and non-contract, and\n // it is an address Pools cannot register as a token.\n address private constant _ETH = address(0);\n\n constructor(IWETH weth) {\n _weth = weth;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function _WETH() internal view returns (IWETH) {\n return _weth;\n }\n\n /**\n * @dev Returns true if `asset` is the sentinel value that represents ETH.\n */\n function _isETH(IAsset asset) internal pure returns (bool) {\n return address(asset) == _ETH;\n }\n\n /**\n * @dev Translates `asset` into an equivalent IERC20 token address. If `asset` represents ETH, it will be translated\n * to the WETH contract.\n */\n function _translateToIERC20(IAsset asset) internal view returns (IERC20) {\n return _isETH(asset) ? _WETH() : _asIERC20(asset);\n }\n\n /**\n * @dev Same as `_translateToIERC20(IAsset)`, but for an entire array.\n */\n function _translateToIERC20(IAsset[] memory assets) internal view returns (IERC20[] memory) {\n IERC20[] memory tokens = new IERC20[](assets.length);\n for (uint256 i = 0; i < assets.length; ++i) {\n tokens[i] = _translateToIERC20(assets[i]);\n }\n return tokens;\n }\n\n /**\n * @dev Interprets `asset` as an IERC20 token. This function should only be called on `asset` if `_isETH` previously\n * returned false for it, that is, if `asset` is guaranteed not to be the ETH sentinel value.\n */\n function _asIERC20(IAsset asset) internal pure returns (IERC20) {\n return IERC20(address(asset));\n }\n}\n"},"contracts/BalancerQueries.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\";\n\nimport \"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\n\n/**\n * @dev This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users.\n * It connects different functionalities of the protocol components to allow accessing information that would\n * have required a more cumbersome setup if we wanted to provide these already built-in.\n */\ncontract BalancerQueries is IBalancerQueries, AssetHelpers {\n IVault public immutable vault;\n\n constructor(IVault _vault) AssetHelpers(_vault.WETH()) {\n vault = _vault;\n }\n\n function querySwap(IVault.SingleSwap memory singleSwap, IVault.FundManagement memory funds)\n external\n override\n returns (uint256)\n {\n // The Vault only supports batch swap queries, so we need to convert the swap call into an equivalent batch\n // swap. The result will be identical.\n\n // The main difference between swaps and batch swaps is that batch swaps require an assets array. We're going\n // to place the asset in at index 0, and asset out at index 1.\n IAsset[] memory assets = new IAsset[](2);\n assets[0] = singleSwap.assetIn;\n assets[1] = singleSwap.assetOut;\n\n IVault.BatchSwapStep[] memory swaps = new IVault.BatchSwapStep[](1);\n swaps[0] = IVault.BatchSwapStep({\n poolId: singleSwap.poolId,\n assetInIndex: 0,\n assetOutIndex: 1,\n amount: singleSwap.amount,\n userData: singleSwap.userData\n });\n\n int256[] memory assetDeltas = vault.queryBatchSwap(singleSwap.kind, swaps, assets, funds);\n\n // Batch swaps return the full Vault asset deltas, which in the special case of a single step swap contains more\n // information than we need (as the amount in is known in a GIVEN_IN swap, and the amount out is known in a\n // GIVEN_OUT swap). We extract the information we're interested in.\n if (singleSwap.kind == IVault.SwapKind.GIVEN_IN) {\n // The asset out will have a negative Vault delta (the assets are coming out of the Pool and the user is\n // receiving them), so make it positive to match the `swap` interface.\n\n _require(assetDeltas[1] <= 0, Errors.SHOULD_NOT_HAPPEN);\n return uint256(-assetDeltas[1]);\n } else {\n // The asset in will have a positive Vault delta (the assets are going into the Pool and the user is\n // sending them), so we don't need to do anything.\n return uint256(assetDeltas[0]);\n }\n }\n\n function queryBatchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] memory assets,\n IVault.FundManagement memory funds\n ) external override returns (int256[] memory assetDeltas) {\n return vault.queryBatchSwap(kind, swaps, assets, funds);\n }\n\n function queryJoin(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request\n ) external override returns (uint256 bptOut, uint256[] memory amountsIn) {\n (address pool, ) = vault.getPool(poolId);\n (uint256[] memory balances, uint256 lastChangeBlock) = _validateAssetsAndGetBalances(poolId, request.assets);\n IProtocolFeesCollector feesCollector = vault.getProtocolFeesCollector();\n\n (bptOut, amountsIn) = IBasePool(pool).queryJoin(\n poolId,\n sender,\n recipient,\n balances,\n lastChangeBlock,\n feesCollector.getSwapFeePercentage(),\n request.userData\n );\n }\n\n function queryExit(\n bytes32 poolId,\n address sender,\n address recipient,\n IVault.ExitPoolRequest memory request\n ) external override returns (uint256 bptIn, uint256[] memory amountsOut) {\n (address pool, ) = vault.getPool(poolId);\n (uint256[] memory balances, uint256 lastChangeBlock) = _validateAssetsAndGetBalances(poolId, request.assets);\n IProtocolFeesCollector feesCollector = vault.getProtocolFeesCollector();\n\n (bptIn, amountsOut) = IBasePool(pool).queryExit(\n poolId,\n sender,\n recipient,\n balances,\n lastChangeBlock,\n feesCollector.getSwapFeePercentage(),\n request.userData\n );\n }\n\n function _validateAssetsAndGetBalances(bytes32 poolId, IAsset[] memory expectedAssets)\n internal\n view\n returns (uint256[] memory balances, uint256 lastChangeBlock)\n {\n IERC20[] memory actualTokens;\n IERC20[] memory expectedTokens = _translateToIERC20(expectedAssets);\n\n (actualTokens, balances, lastChangeBlock) = vault.getPoolTokens(poolId);\n InputHelpers.ensureInputLengthMatch(actualTokens.length, expectedTokens.length);\n\n for (uint256 i = 0; i < actualTokens.length; ++i) {\n IERC20 token = actualTokens[i];\n _require(token == expectedTokens[i], Errors.TOKENS_MISMATCH);\n }\n }\n}\n"},"contracts/BALTokenHolder.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @dev This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It\n * is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the\n * final recipient of the funds to be configurable without having to alter the gauges themselves.\n *\n * There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake.\n */\ncontract BALTokenHolder is IBALTokenHolder, SingletonAuthentication {\n using SafeERC20 for IERC20;\n\n IBalancerToken private immutable _balancerToken;\n\n string private _name;\n\n constructor(\n IBalancerToken balancerToken,\n IVault vault,\n string memory name\n ) SingletonAuthentication(vault) {\n // BALTokenHolder is often deployed from a factory for convenience, but it uses its own address instead of\n // the factory's as a disambiguator to make sure the action IDs of all instances are unique, reducing likelihood\n // of errors.\n\n _balancerToken = balancerToken;\n _name = name;\n }\n\n function getBalancerToken() external view returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function getName() external view override returns (string memory) {\n return _name;\n }\n\n function withdrawFunds(address recipient, uint256 amount) external override authenticate {\n IERC20(_balancerToken).safeTransfer(recipient, amount);\n }\n\n function sweepTokens(\n IERC20 token,\n address recipient,\n uint256 amount\n ) external override authenticate {\n require(token != _balancerToken, \"Cannot sweep BAL\");\n IERC20(token).safeTransfer(recipient, amount);\n }\n}\n"},"contracts/BALTokenHolderFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\n\nimport \"./BALTokenHolder.sol\";\n\ncontract BALTokenHolderFactory is IBALTokenHolderFactory {\n IBalancerToken private immutable _balancerToken;\n IVault private immutable _vault;\n\n mapping(address => bool) private _factoryCreatedHolders;\n\n event BALTokenHolderCreated(BALTokenHolder balTokenHolder, string name);\n\n constructor(IBalancerToken balancerToken, IVault vault) {\n _balancerToken = balancerToken;\n _vault = vault;\n }\n\n function getBalancerToken() public view override returns (IBalancerToken) {\n return _balancerToken;\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function isHolderFromFactory(address holder) external view override returns (bool) {\n return _factoryCreatedHolders[holder];\n }\n\n function create(string memory name) external override returns (IBALTokenHolder) {\n BALTokenHolder holder = new BALTokenHolder(getBalancerToken(), getVault(), name);\n\n _factoryCreatedHolders[address(holder)] = true;\n emit BALTokenHolderCreated(holder, name);\n\n return holder;\n }\n}\n"},"contracts/BatchRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"./relayer/BaseRelayerLibrary.sol\";\n\nimport \"./relayer/AaveWrapping.sol\";\nimport \"./relayer/ERC4626Wrapping.sol\";\nimport \"./relayer/GaugeActions.sol\";\nimport \"./relayer/LidoWrapping.sol\";\nimport \"./relayer/UnbuttonWrapping.sol\";\nimport \"./relayer/ReaperWrapping.sol\";\nimport \"./relayer/VaultActions.sol\";\nimport \"./relayer/VaultPermit.sol\";\n\n/**\n * @title Batch Relayer Library\n * @notice This contract is not a relayer by itself and calls into it directly will fail.\n * The associated relayer can be found by calling `getEntrypoint` on this contract.\n */\ncontract BatchRelayerLibrary is\n AaveWrapping,\n BaseRelayerLibrary,\n ERC4626Wrapping,\n GaugeActions,\n LidoWrapping,\n UnbuttonWrapping,\n ReaperWrapping,\n VaultActions,\n VaultPermit\n{\n constructor(\n IVault vault,\n IERC20 wstETH,\n IBalancerMinter minter\n ) BaseRelayerLibrary(vault) LidoWrapping(wstETH) GaugeActions(minter) {\n // solhint-disable-previous-line no-empty-blocks\n }\n}\n"},"contracts/PoolRecoveryHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\n/**\n * @dev This contract allows anyone to check a given Pool's rate providers and put the Pool into recovery mode\n * if any are reverting on `getRate`. This allows LPs to exit promptly, and also helps off-chain mechanisms\n * identify failed pools and prevent further traffic from being routed to them (since in this state swap operations\n * would fail).\n */\ncontract PoolRecoveryHelper is SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n EnumerableSet.AddressSet private _factories;\n\n constructor(IVault vault, address[] memory initialFactories) SingletonAuthentication(vault) {\n for (uint256 i = 0; i < initialFactories.length; ++i) {\n require(_factories.add(initialFactories[i]), \"Duplicate initial factory\");\n }\n }\n\n /**\n * @notice Adds a Pool Factory to the helper. Only Pools created from factories added via this function can be\n * passed to `enableRecoveryMode()`.\n */\n function addPoolFactory(address factory) external authenticate {\n require(_factories.add(factory), \"Duplicate factory\");\n }\n\n /**\n * @notice Removes a Pool Factory from the helper.\n */\n function removePoolFactory(address factory) external authenticate {\n require(_factories.remove(factory), \"Non-existent factory\");\n }\n\n /**\n * @notice Returns the total number of Pool Factories.\n */\n function getFactoryCount() external view returns (uint256) {\n return _factories.length();\n }\n\n /**\n * @notice Returns the address of a Pool Factory at an index between 0 and the return value of `getFactoryCount()`.\n */\n function getFactoryAtIndex(uint256 index) external view returns (IBasePoolFactory) {\n return IBasePoolFactory(_factories.at(index));\n }\n\n /**\n * @notice Returns true if the Pool has been created from a known factory.\n */\n function isPoolFromKnownFactory(address pool) public view returns (bool) {\n uint256 totalFactories = _factories.length();\n for (uint256 i = 0; i < totalFactories; ++i) {\n IBasePoolFactory factory = IBasePoolFactory(_factories.unchecked_at(i));\n\n if (factory.isPoolFromFactory(pool)) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * @notice Enables Recovery Mode in a Pool, provided some of its rate providers are failing (i.e. `getRate()`\n * reverts).\n *\n * Pools that are in Recovery Mode can be exited by LPs via the special Recovery Mode Exit, which avoids any complex\n * computations and does not call into any external contracts, which makes it a very dependable way to retrieve the\n * underlying tokens.\n *\n * However, while Recovery Mode is enabled the Pool pays no protocol fees. Additionally, any protocol fees\n * accrued before enabling Recovery Mode will be forfeited.\n *\n * The Pool must have been created via a known Pool Factory contract.\n */\n function enableRecoveryMode(address pool) external {\n // We require that the Pools come from known factories as a sanity check since this function is permissionless.\n // This ensures we're actually calling legitimate Pools, and that they support both the IRateProviderPool and\n // IRecoveryMode interfaces.\n require(isPoolFromKnownFactory(pool), \"Pool is not from known factory\");\n\n // The Pool will be placed in recovery mode if any of its rate providers reverts.\n IRateProvider[] memory rateProviders = IRateProviderPool(pool).getRateProviders();\n for (uint256 i = 0; i < rateProviders.length; ++i) {\n if (rateProviders[i] != IRateProvider(0)) {\n try rateProviders[i].getRate() {\n // On success, we simply keep processing rate providers\n continue;\n } catch {\n IRecoveryMode(pool).enableRecoveryMode();\n return;\n }\n }\n }\n\n // If no rate providers revert, we then revert to both signal that calling this function performs no state\n // changes, and to help prevent these accidental wasteful calls.\n revert(\"Pool's rate providers do not revert\");\n }\n}\n"},"contracts/ProtocolFeePercentagesProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\";\n\ncontract ProtocolFeePercentagesProvider is IProtocolFeePercentagesProvider, SingletonAuthentication {\n using SafeCast for uint256;\n\n IProtocolFeesCollector private immutable _protocolFeesCollector;\n\n struct FeeTypeData {\n uint64 value;\n uint64 maximum;\n bool registered;\n string name;\n }\n\n mapping(uint256 => FeeTypeData) private _feeTypeData;\n\n // Absolute maximum fee percentages (1e18 = 100%, 1e16 = 1%).\n\n // No fee can go over 100%\n uint256 private constant _MAX_PROTOCOL_FEE_PERCENTAGE = 1e18; // 100%\n\n // These are copied from ProtocolFeesCollector\n uint256 private constant _MAX_PROTOCOL_SWAP_FEE_PERCENTAGE = 50e16; // 50%\n uint256 private constant _MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE = 1e16; // 1%\n\n constructor(\n IVault vault,\n uint256 maxYieldValue,\n uint256 maxAUMValue\n ) SingletonAuthentication(vault) {\n IProtocolFeesCollector protocolFeeCollector = vault.getProtocolFeesCollector();\n _protocolFeesCollector = protocolFeeCollector; // Note that this is immutable in the Vault as well\n\n // Initialize all starting fee types\n\n // Yield and AUM types are initialized with a value of 0.\n _registerFeeType(ProtocolFeeType.YIELD, \"Yield\", maxYieldValue, 0);\n _registerFeeType(ProtocolFeeType.AUM, \"Assets Under Management\", maxAUMValue, 0);\n\n // Swap and Flash loan types are special as their storage is actually located in the ProtocolFeesCollector. We\n // therefore simply mark them as registered, but ignore maximum and initial values. Not calling _registerFeeType\n // also means that ProtocolFeeTypeRegistered nor ProtocolFeePercentageChanged events will be emitted for these.\n _feeTypeData[ProtocolFeeType.SWAP].registered = true;\n _feeTypeData[ProtocolFeeType.SWAP].name = \"Swap\";\n\n _feeTypeData[ProtocolFeeType.FLASH_LOAN].registered = true;\n _feeTypeData[ProtocolFeeType.FLASH_LOAN].name = \"Flash Loan\";\n }\n\n modifier withValidFeeType(uint256 feeType) {\n require(isValidFeeType(feeType), \"Non-existent fee type\");\n _;\n }\n\n function registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) external override authenticate {\n require(!_feeTypeData[feeType].registered, \"Fee type already registered\");\n _registerFeeType(feeType, name, maximumValue, initialValue);\n }\n\n function _registerFeeType(\n uint256 feeType,\n string memory name,\n uint256 maximumValue,\n uint256 initialValue\n ) private {\n require((maximumValue > 0) && (maximumValue <= _MAX_PROTOCOL_FEE_PERCENTAGE), \"Invalid maximum fee percentage\");\n require(initialValue <= maximumValue, \"Invalid initial percentage\");\n\n _feeTypeData[feeType] = FeeTypeData({\n registered: true,\n name: name,\n maximum: maximumValue.toUint64(),\n value: initialValue.toUint64()\n });\n\n emit ProtocolFeeTypeRegistered(feeType, name, maximumValue);\n emit ProtocolFeePercentageChanged(feeType, initialValue);\n }\n\n function isValidFeeType(uint256 feeType) public view override returns (bool) {\n return _feeTypeData[feeType].registered;\n }\n\n function isValidFeeTypePercentage(uint256 feeType, uint256 value)\n public\n view\n override\n withValidFeeType(feeType)\n returns (bool)\n {\n return value <= getFeeTypeMaximumPercentage(feeType);\n }\n\n function setFeeTypePercentage(uint256 feeType, uint256 newValue)\n external\n override\n withValidFeeType(feeType)\n authenticate\n {\n require(isValidFeeTypePercentage(feeType, newValue), \"Invalid fee percentage\");\n\n if (feeType == ProtocolFeeType.SWAP) {\n _protocolFeesCollector.setSwapFeePercentage(newValue);\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n _protocolFeesCollector.setFlashLoanFeePercentage(newValue);\n } else {\n _feeTypeData[feeType].value = newValue.toUint64();\n }\n\n emit ProtocolFeePercentageChanged(feeType, newValue);\n }\n\n function getFeeTypePercentage(uint256 feeType) external view override withValidFeeType(feeType) returns (uint256) {\n if (feeType == ProtocolFeeType.SWAP) {\n return _protocolFeesCollector.getSwapFeePercentage();\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n return _protocolFeesCollector.getFlashLoanFeePercentage();\n } else {\n return _feeTypeData[feeType].value;\n }\n }\n\n function getFeeTypeMaximumPercentage(uint256 feeType)\n public\n view\n override\n withValidFeeType(feeType)\n returns (uint256)\n {\n if (feeType == ProtocolFeeType.SWAP) {\n return _MAX_PROTOCOL_SWAP_FEE_PERCENTAGE;\n } else if (feeType == ProtocolFeeType.FLASH_LOAN) {\n return _MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE;\n } else {\n return _feeTypeData[feeType].maximum;\n }\n }\n\n function getFeeTypeName(uint256 feeType) external view override withValidFeeType(feeType) returns (string memory) {\n return _feeTypeData[feeType].name;\n }\n}\n"},"contracts/ProtocolFeeSplitter.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity >=0.7.0 <0.9.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\";\n\ninterface Pool {\n function getOwner() external view returns (address);\n}\n\n/**\n * @dev This contract is responsible for splitting the BPT profits collected\n * by ProtocolFeeCollector between the pool's owner and Balancers DAO treasury\n * Nothing happens for non-BPT tokens (WETH, WBTC, etc...)\n */\ncontract ProtocolFeeSplitter is IProtocolFeeSplitter, Authentication {\n using FixedPoint for uint256;\n\n // All fee percentages are 18-decimal fixed point numbers.\n // Absolute maximum fee percentage (1e18 = 100%).\n uint256 private constant _MAX_REVENUE_SHARING_FEE_PERCENTAGE = 50e16; // 50%\n\n IProtocolFeesWithdrawer private immutable _protocolFeesWithdrawer;\n\n // Balancer vault\n IVault private immutable _vault;\n\n // Balancer DAO Multisig\n address private _treasury;\n\n // Can be updated by BAL governance (1e18 = 100%, 1e16 = 1%).\n uint256 private _defaultRevenueSharingFeePercentage;\n\n // Packed to use 1 storage slot\n // 1e18 (100% - maximum fee value) can fit in uint96\n struct RevenueShareSettings {\n uint96 revenueSharePercentageOverride;\n address beneficiary;\n }\n\n // poolId => PoolSettings\n mapping(bytes32 => RevenueShareSettings) private _poolSettings;\n\n constructor(IProtocolFeesWithdrawer protocolFeesWithdrawer, address treasury)\n // The ProtocolFeeSplitter is a singleton, so it simply uses its own address to disambiguate action\n // identifiers.\n Authentication(bytes32(uint256(address(this))))\n {\n _protocolFeesWithdrawer = protocolFeesWithdrawer;\n _treasury = treasury;\n _vault = protocolFeesWithdrawer.getProtocolFeesCollector().vault();\n }\n\n function setRevenueSharingFeePercentage(bytes32 poolId, uint256 newSwapFeePercentage)\n external\n override\n authenticate\n {\n _require(newSwapFeePercentage <= _MAX_REVENUE_SHARING_FEE_PERCENTAGE, Errors.SPLITTER_FEE_PERCENTAGE_TOO_HIGH);\n _poolSettings[poolId].revenueSharePercentageOverride = uint96(newSwapFeePercentage);\n emit PoolRevenueShareChanged(poolId, newSwapFeePercentage);\n }\n\n function setDefaultRevenueSharingFeePercentage(uint256 feePercentage) external override authenticate {\n _require(feePercentage <= _MAX_REVENUE_SHARING_FEE_PERCENTAGE, Errors.SPLITTER_FEE_PERCENTAGE_TOO_HIGH);\n _defaultRevenueSharingFeePercentage = feePercentage;\n emit DefaultRevenueSharingFeePercentageChanged(feePercentage);\n }\n\n function setTreasury(address newTreasury) external override authenticate {\n _treasury = newTreasury;\n emit TreasuryChanged(newTreasury);\n }\n\n function setPoolBeneficiary(bytes32 poolId, address newBeneficiary) external override {\n (address pool, ) = _vault.getPool(poolId);\n _require(msg.sender == Pool(pool).getOwner(), Errors.SENDER_NOT_ALLOWED);\n _poolSettings[poolId].beneficiary = newBeneficiary;\n emit PoolBeneficiaryChanged(poolId, newBeneficiary);\n }\n\n function collectFees(bytes32 poolId) external override returns (uint256 beneficiaryAmount, uint256 treasuryAmount) {\n (address pool, ) = _vault.getPool(poolId);\n IERC20 bpt = IERC20(pool);\n address beneficiary = _poolSettings[poolId].beneficiary;\n\n (beneficiaryAmount, treasuryAmount) = _getAmounts(bpt, poolId);\n\n _withdrawBpt(bpt, beneficiaryAmount, beneficiary);\n _withdrawBpt(bpt, treasuryAmount, _treasury);\n\n emit FeesCollected(poolId, beneficiary, beneficiaryAmount, _treasury, treasuryAmount);\n }\n\n function getAmounts(bytes32 poolId)\n external\n view\n override\n returns (uint256 beneficiaryAmount, uint256 treasuryAmount)\n {\n (address pool, ) = _vault.getPool(poolId);\n IERC20 bpt = IERC20(pool);\n\n return _getAmounts(bpt, poolId);\n }\n\n function getProtocolFeesWithdrawer() external view override returns (IProtocolFeesWithdrawer) {\n return _protocolFeesWithdrawer;\n }\n\n function getDefaultRevenueSharingFeePercentage() external view override returns (uint256) {\n return _defaultRevenueSharingFeePercentage;\n }\n\n function getVault() external view override returns (IVault) {\n return _vault;\n }\n\n function getTreasury() external view override returns (address) {\n return _treasury;\n }\n\n function getPoolSettings(bytes32 poolId)\n external\n view\n override\n returns (uint256 revenueSharePercentageOverride, address beneficiary)\n {\n RevenueShareSettings memory settings = _poolSettings[poolId];\n\n return (settings.revenueSharePercentageOverride, settings.beneficiary);\n }\n\n function _canPerform(bytes32 actionId, address account) internal view override returns (bool) {\n return _getAuthorizer().canPerform(actionId, account, address(this));\n }\n\n function _getAuthorizer() internal view returns (IAuthorizer) {\n return _protocolFeesWithdrawer.getProtocolFeesCollector().getAuthorizer();\n }\n\n function _withdrawBpt(\n IERC20 bpt,\n uint256 amount,\n address to\n ) private {\n if (amount == 0) {\n return;\n }\n\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = bpt;\n\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _protocolFeesWithdrawer.withdrawCollectedFees(tokens, amounts, to);\n }\n\n function _getAmounts(IERC20 bpt, bytes32 poolId) private view returns (uint256, uint256) {\n IProtocolFeesWithdrawer protocolFeesWithdrawer = _protocolFeesWithdrawer;\n uint256 feeCollectorBptBalance = bpt.balanceOf(address(protocolFeesWithdrawer.getProtocolFeesCollector()));\n if (feeCollectorBptBalance == 0) {\n return (0, 0);\n }\n\n address beneficiary = _poolSettings[poolId].beneficiary;\n\n if (beneficiary == address(0)) {\n // If there's no beneficiary, the full amount is sent to the treasury.\n return (0, feeCollectorBptBalance);\n } else {\n // Otherwise, it gets split between the beneficiary and the treasury according to the fee percentage.\n return _computeAmounts(feeCollectorBptBalance, _getPoolBeneficiaryFeePercentage(poolId));\n }\n }\n\n function _computeAmounts(uint256 feeCollectorBptBalance, uint256 feePercentage)\n private\n pure\n returns (uint256 ownerAmount, uint256 treasuryAmount)\n {\n ownerAmount = feeCollectorBptBalance.mulDown(feePercentage);\n treasuryAmount = feeCollectorBptBalance.sub(ownerAmount);\n }\n\n function _getPoolBeneficiaryFeePercentage(bytes32 poolId) private view returns (uint256) {\n uint256 poolFeeOverride = _poolSettings[poolId].revenueSharePercentageOverride;\n if (poolFeeOverride == 0) {\n // The 'zero' override is a sentinel value that stands for the default fee.\n return _defaultRevenueSharingFeePercentage;\n } else {\n return poolFeeOverride;\n }\n }\n}\n"},"contracts/ProtocolFeesWithdrawer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\";\n\n/**\n * @author Balancer Labs\n * @title Protocol Fees Withdrawer\n * @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n * This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n * Fees Collector.\n */\ncontract ProtocolFeesWithdrawer is IProtocolFeesWithdrawer, SingletonAuthentication {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n IProtocolFeesCollector private immutable _protocolFeesCollector;\n\n EnumerableSet.AddressSet private _denylistedTokens;\n\n constructor(IVault vault, IERC20[] memory initialDeniedTokens) SingletonAuthentication(vault) {\n _protocolFeesCollector = vault.getProtocolFeesCollector();\n\n uint256 tokensLength = initialDeniedTokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n _denylistToken(initialDeniedTokens[i]);\n }\n }\n\n /**\n * @notice Returns the address of the Protocol Fee Collector.\n */\n function getProtocolFeesCollector() external view override returns (IProtocolFeesCollector) {\n return _protocolFeesCollector;\n }\n\n /**\n * @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector\n */\n function isWithdrawableToken(IERC20 token) public view override returns (bool) {\n return !_denylistedTokens.contains(address(token));\n }\n\n /**\n * @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n * @dev Returns false if any token is denylisted.\n */\n function isWithdrawableTokens(IERC20[] calldata tokens) public view override returns (bool) {\n uint256 tokensLength = tokens.length;\n for (uint256 i = 0; i < tokensLength; ++i) {\n if (!isWithdrawableToken(tokens[i])) return false;\n }\n return true;\n }\n\n /**\n * @notice Returns the denylisted token at the given `index`.\n */\n function getDenylistedToken(uint256 index) external view override returns (IERC20) {\n return IERC20(_denylistedTokens.at(index));\n }\n\n /**\n * @notice Returns the number of denylisted tokens.\n */\n function getDenylistedTokensLength() external view override returns (uint256) {\n return _denylistedTokens.length();\n }\n\n /**\n * @notice Withdraws fees from the Protocol Fee Collector.\n * @dev Reverts if attempting to withdraw a denylisted token.\n * @param tokens - an array of token addresses to withdraw.\n * @param amounts - an array of the amounts of each token to withdraw.\n * @param recipient - the address to which to send the withdrawn tokens.\n */\n function withdrawCollectedFees(\n IERC20[] calldata tokens,\n uint256[] calldata amounts,\n address recipient\n ) external override authenticate {\n require(isWithdrawableTokens(tokens), \"Attempting to withdraw denylisted token\");\n\n // We delegate checking of inputs and reentrancy protection to the ProtocolFeesCollector.\n _protocolFeesCollector.withdrawCollectedFees(tokens, amounts, recipient);\n }\n\n /**\n * @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\n */\n function denylistToken(IERC20 token) external override authenticate {\n _denylistToken(token);\n }\n\n /**\n * @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\n */\n function allowlistToken(IERC20 token) external override authenticate {\n require(_denylistedTokens.remove(address(token)), \"Token is not denylisted\");\n emit TokenAllowlisted(token);\n }\n\n // Internal functions\n\n function _denylistToken(IERC20 token) internal {\n require(_denylistedTokens.add(address(token)), \"Token already denylisted\");\n emit TokenDenylisted(token);\n }\n}\n"},"contracts/relayer/AaveWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title AaveWrapping\n * @notice Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract AaveWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n function wrapAaveDynamicToken(\n IStaticATokenLM staticToken,\n address sender,\n address recipient,\n uint256 amount,\n bool fromUnderlying,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // Aave's StaticATokens allow wrapping either an aToken or the underlying asset.\n // We can query which token to pull and approve from the wrapper contract.\n IERC20 dynamicToken = fromUnderlying ? staticToken.ASSET() : staticToken.ATOKEN();\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, dynamicToken, amount);\n }\n\n dynamicToken.safeApprove(address(staticToken), amount);\n // Use 0 for the referral code\n uint256 result = staticToken.deposit(recipient, amount, 0, fromUnderlying);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapAaveStaticToken(\n IStaticATokenLM staticToken,\n address sender,\n address recipient,\n uint256 amount,\n bool toUnderlying,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, staticToken, amount);\n }\n\n // No approval is needed here, as the Static Tokens are burned directly from the relayer's account\n (, uint256 result) = staticToken.withdraw(recipient, amount, toUnderlying);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/BalancerRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\n\n/**\n * @title Balancer Relayer\n * @notice Allows safe multicall execution of a relayer's functions\n * @dev\n * Relayers are composed of two contracts:\n * - This contract, which acts as a single point of entry into the system through a multicall function.\n * - A library contract, which defines the allowed behaviour of the relayer.\n *\n * The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions.\n * We can then run combinations of the library contract's functions in the context of the relayer entrypoint,\n * without having to expose all these functions on the entrypoint contract itself. The multicall function is\n * then a single point of entry for all actions, so we can easily prevent reentrancy.\n *\n * This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter\n * the relayer through another function (which must allow reentrancy for multicall logic), and that would\n * potentially allow them to manipulate global state, resulting in loss of funds in some cases:\n * e.g., sweeping any leftover ETH that should have been refunded to the user.\n *\n * NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the\n * Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly\n * into the library contract.\n */\ncontract BalancerRelayer is IBalancerRelayer, ReentrancyGuard {\n using Address for address payable;\n using Address for address;\n\n IVault private immutable _vault;\n address private immutable _library;\n\n /**\n * @dev This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract\n * derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library.\n */\n constructor(IVault vault, address libraryAddress) {\n _vault = vault;\n _library = libraryAddress;\n }\n\n receive() external payable {\n // Only accept ETH transfers from the Vault. This is expected to happen due to a swap/exit/withdrawal\n // with ETH as an output, should the relayer be listed as the recipient. This may also happen when\n // joining a pool, performing a swap, or if managing a user's balance uses less than the full ETH value\n // provided. Any excess ETH will be refunded to this contract, and then forwarded to the original sender.\n _require(msg.sender == address(_vault), Errors.ETH_TRANSFER);\n }\n\n function getVault() external view override returns (IVault) {\n return _vault;\n }\n\n function getLibrary() external view override returns (address) {\n return _library;\n }\n\n function multicall(bytes[] calldata data) external payable override nonReentrant returns (bytes[] memory results) {\n results = new bytes[](data.length);\n for (uint256 i = 0; i < data.length; i++) {\n results[i] = _library.functionDelegateCall(data[i]);\n }\n\n _refundETH();\n }\n\n function _refundETH() private {\n uint256 remainingEth = address(this).balance;\n if (remainingEth > 0) {\n msg.sender.sendValue(remainingEth);\n }\n }\n}\n"},"contracts/relayer/BaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\nimport \"./BalancerRelayer.sol\";\n\n/**\n * @title Base Relayer Library\n * @notice Core functionality of a relayer. Allow users to use a signature to approve this contract\n * to take further actions on their behalf.\n * @dev\n * Relayers are composed of two contracts:\n * - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function\n * - A library contract such as this one, which defines the allowed behaviour of the relayer\n\n * NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault\n * will reject calls from outside the entrypoint context.\n *\n * This contract should neither be allowlisted as a relayer, nor called directly by the user.\n * No guarantees can be made about fund safety when calling this contract in an improper manner.\n */\ncontract BaseRelayerLibrary is IBaseRelayerLibrary {\n using Address for address;\n using SafeERC20 for IERC20;\n\n IVault private immutable _vault;\n IBalancerRelayer private immutable _entrypoint;\n\n constructor(IVault vault) IBaseRelayerLibrary(vault.WETH()) {\n _vault = vault;\n _entrypoint = new BalancerRelayer(vault, address(this));\n }\n\n function getVault() public view override returns (IVault) {\n return _vault;\n }\n\n function getEntrypoint() public view returns (IBalancerRelayer) {\n return _entrypoint;\n }\n\n /**\n * @notice Sets whether a particular relayer is authorised to act on behalf of the user\n */\n function setRelayerApproval(\n address relayer,\n bool approved,\n bytes calldata authorisation\n ) external payable {\n require(relayer == address(this) || !approved, \"Relayer can only approve itself\");\n bytes memory data = abi.encodePacked(\n abi.encodeWithSelector(_vault.setRelayerApproval.selector, msg.sender, relayer, approved),\n authorisation\n );\n\n address(_vault).functionCall(data);\n }\n\n /**\n * @notice Approves the Vault to use tokens held in the relayer\n * @dev This is needed to avoid having to send intermediate tokens back to the user\n */\n function approveVault(IERC20 token, uint256 amount) public override {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n // TODO: gas golf this a bit\n token.safeApprove(address(getVault()), amount);\n }\n\n /**\n * @notice Returns the amount referenced by chained reference `ref`.\n * @dev It does not alter the reference (even if it's marked as temporary).\n */\n function peekChainedReferenceValue(uint256 ref) public view override returns (uint256 value) {\n (, value) = _peekChainedReferenceValue(ref);\n }\n\n function _pullToken(\n address sender,\n IERC20 token,\n uint256 amount\n ) internal override {\n if (amount == 0) return;\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = token;\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _pullTokens(sender, tokens, amounts);\n }\n\n function _pullTokens(\n address sender,\n IERC20[] memory tokens,\n uint256[] memory amounts\n ) internal override {\n IVault.UserBalanceOp[] memory ops = new IVault.UserBalanceOp[](tokens.length);\n for (uint256 i; i < tokens.length; i++) {\n ops[i] = IVault.UserBalanceOp({\n asset: IAsset(address(tokens[i])),\n amount: amounts[i],\n sender: sender,\n recipient: payable(address(this)),\n kind: IVault.UserBalanceOpKind.TRANSFER_EXTERNAL\n });\n }\n\n getVault().manageUserBalance(ops);\n }\n\n /**\n * @dev Returns true if `amount` is not actually an amount, but rather a chained reference.\n */\n function _isChainedReference(uint256 amount) internal pure override returns (bool) {\n // First 3 nibbles are enough to determine if it's a chained reference.\n return\n (amount & 0xfff0000000000000000000000000000000000000000000000000000000000000) ==\n 0xba10000000000000000000000000000000000000000000000000000000000000;\n }\n\n /**\n * @dev Returns true if `ref` is temporary reference, i.e. to be deleted after reading it.\n */\n function _isTemporaryChainedReference(uint256 amount) internal pure returns (bool) {\n // First 3 nibbles determine if it's a chained reference.\n // If the 4th nibble is 0 it is temporary; otherwise it is considered read-only.\n // In practice, we shall use '0xba11' for read-only references.\n return\n (amount & 0xffff000000000000000000000000000000000000000000000000000000000000) ==\n 0xba10000000000000000000000000000000000000000000000000000000000000;\n }\n\n /**\n * @dev Stores `value` as the amount referenced by chained reference `ref`.\n */\n function _setChainedReferenceValue(uint256 ref, uint256 value) internal override {\n bytes32 slot = _getStorageSlot(ref);\n\n // Since we do manual calculation of storage slots, it is easier (and cheaper) to rely on internal assembly to\n // access it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, value)\n }\n }\n\n /**\n * @dev Returns the amount referenced by chained reference `ref`.\n * If the reference is temporary, it will be cleared after reading it, so they can each only be read once.\n * If the reference is not temporary (i.e. read-only), it will not be cleared after reading it\n * (see `_isTemporaryChainedReference` function).\n */\n function _getChainedReferenceValue(uint256 ref) internal override returns (uint256) {\n (bytes32 slot, uint256 value) = _peekChainedReferenceValue(ref);\n\n if (_isTemporaryChainedReference(ref)) {\n // solhint-disable-next-line no-inline-assembly\n assembly {\n sstore(slot, 0)\n }\n }\n return value;\n }\n\n /**\n * @dev Returns the storage slot for reference `ref` as well as the amount referenced by it.\n * It does not alter the reference (even if it's marked as temporary).\n */\n function _peekChainedReferenceValue(uint256 ref) private view returns (bytes32 slot, uint256 value) {\n slot = _getStorageSlot(ref);\n\n // Since we do manual calculation of storage slots, it is easier (and cheaper) to rely on internal assembly to\n // access it.\n // solhint-disable-next-line no-inline-assembly\n assembly {\n value := sload(slot)\n }\n }\n\n // solhint-disable-next-line var-name-mixedcase\n bytes32 private immutable _TEMP_STORAGE_SUFFIX = keccak256(\"balancer.base-relayer-library\");\n\n function _getStorageSlot(uint256 ref) private view returns (bytes32) {\n // This replicates the mechanism Solidity uses to allocate storage slots for mappings, but using a hash as the\n // mapping's storage slot, and subtracting 1 at the end. This should be more than enough to prevent collisions\n // with other state variables this or derived contracts might use.\n // See https://docs.soliditylang.org/en/v0.8.9/internals/layout_in_storage.html\n\n return bytes32(uint256(keccak256(abi.encodePacked(_removeReferencePrefix(ref), _TEMP_STORAGE_SUFFIX))) - 1);\n }\n\n /**\n * @dev Returns a reference without its prefix.\n * Use this function to calculate the storage slot so that it's the same for temporary and read-only references.\n */\n function _removeReferencePrefix(uint256 ref) private pure returns (uint256) {\n return (ref & 0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n }\n}\n"},"contracts/relayer/ERC4626Wrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title ERC4626Wrapping\n * @notice Allows users to wrap and unwrap ERC4626 tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract ERC4626Wrapping is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n function wrapERC4626(\n IERC4626 wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n IERC20 underlying = IERC20(wrappedToken.asset());\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, underlying, amount);\n }\n\n underlying.safeApprove(address(wrappedToken), amount);\n uint256 result = wrappedToken.deposit(amount, recipient);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapERC4626(\n IERC4626 wrappedToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, wrappedToken, amount);\n }\n\n uint256 result = wrappedToken.redeem(amount, recipient, address(this));\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/GaugeActions.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title GaugeActions\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract GaugeActions is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n IBalancerMinter private immutable _balancerMinter;\n\n /**\n * @dev The zero address may be passed as balancerMinter to safely disable features\n * which only exist on mainnet\n */\n constructor(IBalancerMinter balancerMinter) {\n _balancerMinter = balancerMinter;\n }\n\n function gaugeDeposit(\n IStakingLiquidityGauge gauge,\n address sender,\n address recipient,\n uint256 amount\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // We can query which token to pull and approve from the wrapper contract.\n IERC20 bptToken = gauge.lp_token();\n\n // The deposit caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, bptToken, amount);\n }\n\n bptToken.safeApprove(address(gauge), amount);\n gauge.deposit(amount, recipient);\n }\n\n function gaugeWithdraw(\n IStakingLiquidityGauge gauge,\n address sender,\n address recipient,\n uint256 amount\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, IERC20(gauge), amount);\n }\n\n // No approval is needed here, as the gauge Tokens are burned directly from the relayer's account.\n gauge.withdraw(amount);\n\n // Gauge does not support withdrawing BPT to another address atomically.\n // If intended recipient is not the relayer then forward the withdrawn BPT on to the recipient.\n if (recipient != address(this)) {\n IERC20 bptToken = gauge.lp_token();\n\n bptToken.safeTransfer(recipient, amount);\n }\n }\n\n function gaugeMint(address[] calldata gauges, uint256 outputReference) external payable {\n uint256 balMinted = _balancerMinter.mintManyFor(gauges, msg.sender);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, balMinted);\n }\n }\n\n function gaugeSetMinterApproval(\n bool approval,\n address user,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external payable {\n _balancerMinter.setMinterApprovalWithSignature(address(this), approval, user, deadline, v, r, s);\n }\n\n function gaugeClaimRewards(IStakingLiquidityGauge[] calldata gauges) external payable {\n uint256 numGauges = gauges.length;\n for (uint256 i; i < numGauges; ++i) {\n gauges[i].claim_rewards(msg.sender);\n }\n }\n}\n"},"contracts/relayer/IBaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\";\n\n/**\n * @title IBaseRelayerLibrary\n */\nabstract contract IBaseRelayerLibrary is AssetHelpers {\n constructor(IWETH weth) AssetHelpers(weth) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function getVault() public view virtual returns (IVault);\n\n function approveVault(IERC20 token, uint256 amount) public virtual;\n\n function peekChainedReferenceValue(uint256 ref) public view virtual returns (uint256);\n\n function _pullToken(\n address sender,\n IERC20 token,\n uint256 amount\n ) internal virtual;\n\n function _pullTokens(\n address sender,\n IERC20[] memory tokens,\n uint256[] memory amounts\n ) internal virtual;\n\n function _isChainedReference(uint256 amount) internal pure virtual returns (bool);\n\n function _setChainedReferenceValue(uint256 ref, uint256 value) internal virtual;\n\n function _getChainedReferenceValue(uint256 ref) internal virtual returns (uint256);\n}\n"},"contracts/relayer/LidoWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title LidoWrapping\n * @notice Allows users to wrap and unwrap stETH\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract LidoWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n IstETH private immutable _stETH;\n IwstETH private immutable _wstETH;\n\n /**\n * @dev The zero address may be passed as wstETH to safely disable this module\n * @param wstETH - the address of Lido's wrapped stETH contract\n */\n constructor(IERC20 wstETH) {\n // Safely disable stETH wrapping if no address has been passed for wstETH\n _stETH = wstETH != IERC20(0) ? IwstETH(address(wstETH)).stETH() : IstETH(0);\n _wstETH = IwstETH(address(wstETH));\n }\n\n function wrapStETH(\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The wrap caller is the implicit token sender, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, _stETH, amount);\n }\n\n IERC20(_stETH).safeApprove(address(_wstETH), amount);\n uint256 result = IwstETH(_wstETH).wrap(amount);\n\n if (recipient != address(this)) {\n IERC20(_wstETH).safeTransfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function unwrapWstETH(\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit token sender, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, _wstETH, amount);\n }\n\n // No approval is needed here, as wstETH is burned directly from the relayer's account\n uint256 result = _wstETH.unwrap(amount);\n\n if (recipient != address(this)) {\n IERC20(_stETH).safeTransfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function stakeETH(\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n uint256 result = _stETH.submit{ value: amount }(address(this));\n\n if (recipient != address(this)) {\n IERC20(_stETH).safeTransfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function stakeETHAndWrap(\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // We must query this separately, since the wstETH contract doesn't return how much wstETH is minted.\n uint256 result = _wstETH.getWstETHByStETH(amount);\n\n // The fallback function on the wstETH contract automatically stakes and wraps any ETH sent to it.\n // We can then send the ETH safely, and only have to ensure that the call doesn't revert.\n //\n // This would be dangerous if `_wstETH` were set to the zero address. However, in this scenario,\n // this function would have already reverted during the call to `getWstETHByStETH`, preventing loss of funds.\n payable(address(_wstETH)).sendValue(amount);\n\n if (recipient != address(this)) {\n IERC20(_wstETH).safeTransfer(recipient, result);\n }\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n}\n"},"contracts/relayer/ReaperWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title ReaperWrapping\n * @notice Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\n * @dev All functions must be payable so that it can be called as part of a multicall involving ETH\n */\nabstract contract ReaperWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n function unwrapReaperVaultToken(\n IReaperTokenVault vaultToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The unwrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, vaultToken, amount);\n }\n\n IERC20 underlyingToken = IERC20(vaultToken.token());\n\n // Burn the rf shares and receive the underlying token.\n vaultToken.withdraw(amount);\n\n // Determine the amount of underlying returned for the shares burned.\n uint256 withdrawnAmount = underlyingToken.balanceOf(address(this));\n\n // Send the shares to the recipient\n underlyingToken.safeTransfer(recipient, withdrawnAmount);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, withdrawnAmount);\n }\n }\n\n function wrapReaperVaultToken(\n IReaperTokenVault vaultToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n IERC20 underlyingToken = IERC20(vaultToken.token());\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, underlyingToken, amount);\n }\n\n // Approve the vault token to spend the amount specified in the wrap\n underlyingToken.safeApprove(address(vaultToken), amount);\n\n // Deposit the tokens into the vault\n vaultToken.deposit(amount);\n\n // Determine the amount of shares gained from depositing\n uint256 sharesGained = vaultToken.balanceOf(address(this));\n\n // Send the shares to the recipient\n IERC20(vaultToken).safeTransfer(recipient, sharesGained);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, sharesGained);\n }\n }\n}\n"},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\n/**\n * @title DoubleEntrypointFixRelayer\n * @notice This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix\n * tokens). It doesn't use the standard relayer architecture to simplify the code.\n */\ncontract DoubleEntrypointFixRelayer is IFlashLoanRecipient {\n using SafeERC20 for IERC20;\n\n // solhint-disable const-name-snakecase\n IERC20 public constant BTC_STABLE_POOL_ADDRESS = IERC20(0xFeadd389a5c427952D8fdb8057D6C8ba1156cC56);\n bytes32 public constant BTC_STABLE_POOL_ID = 0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066;\n\n // solhint-disable const-name-snakecase\n IERC20 public constant wBTC = IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);\n IERC20 public constant renBTC = IERC20(0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D);\n IERC20 public constant sBTC = IERC20(0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6);\n IERC20 public constant sBTC_IMPLEMENTATION = IERC20(0x18FcC34bdEaaF9E3b69D2500343527c0c995b1d6);\n\n IERC20 public constant SNX_WEIGHTED_POOL_ADDRESS = IERC20(0x072f14B85ADd63488DDaD88f855Fda4A99d6aC9B);\n bytes32 public constant SNX_WEIGHTED_POOL_ID = 0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027;\n IERC20 public constant SNX = IERC20(0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F);\n IERC20 public constant WETH = IERC20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);\n IERC20 public constant SNX_IMPLEMENTATION = IERC20(0x639032d3900875a4cf4960aD6b9ee441657aA93C);\n // solhint-enable const-name-snakecase\n\n // This was removed from the StablePoolEncoder along with StablePool.\n uint256 private constant _STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT = 1;\n\n IVault private immutable _vault;\n IProtocolFeesCollector private immutable _protocolFeeCollector;\n\n constructor(IVault vault) {\n _vault = vault;\n _protocolFeeCollector = vault.getProtocolFeesCollector();\n }\n\n function getVault() public view returns (IVault) {\n return _vault;\n }\n\n /**\n * @notice Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact\n * nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n * Balancer Governance.\n */\n function exitBTCStablePool() external {\n IERC20[] memory tokens = new IERC20[](3);\n tokens[0] = wBTC;\n tokens[1] = renBTC;\n tokens[2] = sBTC;\n uint256 bptAmountIn = BTC_STABLE_POOL_ADDRESS.balanceOf(msg.sender);\n\n // Pull sBTC out from the Protocol Fee Collector and send it to the Vault ready for the exit. Computing the\n // exact amount of sBTC required is a complicated task, as it involves due protocol fees, so we simply send all\n // of it.\n _withdrawFromProtocolFeeCollector(sBTC, sBTC.balanceOf(address(_protocolFeeCollector)));\n\n // Perform the exit.\n bytes memory userData = abi.encode(_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest(\n _asIAsset(tokens),\n new uint256[](tokens.length),\n userData,\n false\n );\n getVault().exitPool(BTC_STABLE_POOL_ID, msg.sender, msg.sender, request);\n\n // Sweep any remaining sBTC back into the Protocol Fee Collector.\n IERC20[] memory sBTCEntrypoints = new IERC20[](2);\n sBTCEntrypoints[0] = sBTC_IMPLEMENTATION;\n sBTCEntrypoints[1] = IERC20(address(sBTC));\n sweepDoubleEntrypointToken(sBTCEntrypoints);\n }\n\n /**\n * @notice Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap\n * fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n * Balancer Governance.\n */\n function exitSNXWeightedPool() external {\n IERC20[] memory tokens = new IERC20[](2);\n tokens[0] = SNX;\n tokens[1] = WETH;\n uint256 bptAmountIn = SNX_WEIGHTED_POOL_ADDRESS.balanceOf(msg.sender);\n\n // Pull SNX out from the Protocol Fee Collector and send it to the Vault ready for the exit. Computing the\n // exact amount of SNX required is a complicated task, as it involves due protocol fees, so we simply send all\n // of it.\n _withdrawFromProtocolFeeCollector(SNX, SNX.balanceOf(address(_protocolFeeCollector)));\n\n // Perform the exit.\n bytes memory userData = abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest(\n _asIAsset(tokens),\n new uint256[](tokens.length),\n userData,\n false\n );\n getVault().exitPool(SNX_WEIGHTED_POOL_ID, msg.sender, msg.sender, request);\n\n // Sweep any remaining SNX back into the Protocol Fee Collector.\n IERC20[] memory snxEntrypoints = new IERC20[](2);\n snxEntrypoints[0] = SNX_IMPLEMENTATION;\n snxEntrypoints[1] = IERC20(address(SNX));\n sweepDoubleEntrypointToken(snxEntrypoints);\n }\n\n function _withdrawFromProtocolFeeCollector(IERC20 token, uint256 amount) internal {\n IERC20[] memory tokens = new IERC20[](1);\n tokens[0] = token;\n uint256[] memory amounts = new uint256[](1);\n amounts[0] = amount;\n\n _protocolFeeCollector.withdrawCollectedFees(tokens, amounts, address(_vault));\n }\n\n /**\n * @notice Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector.\n */\n function sweepSNXsBTC() public {\n IERC20[] memory snxEntrypoints = new IERC20[](2);\n snxEntrypoints[0] = SNX_IMPLEMENTATION;\n snxEntrypoints[1] = IERC20(address(SNX));\n\n sweepDoubleEntrypointToken(snxEntrypoints);\n\n IERC20[] memory sBTCEntrypoints = new IERC20[](2);\n sBTCEntrypoints[0] = sBTC_IMPLEMENTATION;\n sBTCEntrypoints[1] = IERC20(address(sBTC));\n sweepDoubleEntrypointToken(sBTCEntrypoints);\n }\n\n /**\n * @notice Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given\n * token.\n */\n function sweepDoubleEntrypointToken(IERC20[] memory tokens) public {\n uint256[] memory amounts = new uint256[](tokens.length);\n amounts[0] = tokens[0].balanceOf(address(_vault));\n _vault.flashLoan(this, tokens, amounts, \"0x\");\n }\n\n /**\n * @dev Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix\n * synth). We only need to repay the first loan as that will automatically all other loans.\n */\n function receiveFlashLoan(\n IERC20[] memory tokens,\n uint256[] memory amounts,\n uint256[] memory,\n bytes memory\n ) external override {\n _require(msg.sender == address(_vault), Errors.CALLER_NOT_VAULT);\n tokens[0].safeTransfer(address(_vault), amounts[0]);\n }\n}\n"},"contracts/relayer/UnbuttonWrapping.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title UnbuttonWrapping\n * @author @aalavandhan1984 (eng@fragments.org)\n * @notice Allows users to wrap and unwrap any rebasing elastic balance token into a\n * a non-rebasing static balance version using the Unbutton wrapper.\n * @dev All functions must be payable so that it can be called as part of a multicall involving ETH.\n * The rebasing token to be wrapped is called the \"underlying\" token.\n * The wrapped non-rebasing token is called the \"wrapped\" token.\n * Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\n */\nabstract contract UnbuttonWrapping is IBaseRelayerLibrary {\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n /// @param wrapperToken The address of the wrapper.\n /// @param sender The address of sender.\n /// @param sender The address of recepient.\n /// @param uAmount The underling token amount to be deposited into the wrapper.\n /// @param outputReference Chained output reference.\n function wrapUnbuttonToken(\n IUnbuttonToken wrapperToken,\n address sender,\n address recipient,\n uint256 uAmount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(uAmount)) {\n uAmount = _getChainedReferenceValue(uAmount);\n }\n\n IERC20 underlyingToken = IERC20(wrapperToken.underlying());\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, underlyingToken, uAmount);\n }\n\n underlyingToken.safeApprove(address(wrapperToken), uAmount);\n uint256 mintAmount = wrapperToken.depositFor(recipient, uAmount);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, mintAmount);\n }\n }\n\n /// @param wrapperToken The address of the wrapper.\n /// @param sender The address of sender.\n /// @param sender The address of recepient.\n /// @param amount The amount of wrapped tokens to be burnt for underlying tokens.\n /// @param outputReference Chained output reference.\n function unwrapUnbuttonToken(\n IUnbuttonToken wrapperToken,\n address sender,\n address recipient,\n uint256 amount,\n uint256 outputReference\n ) external payable {\n if (_isChainedReference(amount)) {\n amount = _getChainedReferenceValue(amount);\n }\n\n // The wrap caller is the implicit sender of tokens, so if the goal is for the tokens\n // to be sourced from outside the relayer, we must first them pull them here.\n if (sender != address(this)) {\n require(sender == msg.sender, \"Incorrect sender\");\n _pullToken(sender, wrapperToken, amount);\n }\n\n uint256 withdrawnUAmount = wrapperToken.burnTo(recipient, amount);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, withdrawnUAmount);\n }\n }\n}\n"},"contracts/relayer/VaultActions.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title VaultActions\n * @notice Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\n * @dev\n * Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers\n * from the Vault.\n *\n * All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract VaultActions is IBaseRelayerLibrary {\n using Math for uint256;\n\n struct OutputReference {\n uint256 index;\n uint256 key;\n }\n\n function swap(\n IVault.SingleSwap memory singleSwap,\n IVault.FundManagement calldata funds,\n uint256 limit,\n uint256 deadline,\n uint256 value,\n uint256 outputReference\n ) external payable {\n require(funds.sender == msg.sender || funds.sender == address(this), \"Incorrect sender\");\n\n if (_isChainedReference(singleSwap.amount)) {\n singleSwap.amount = _getChainedReferenceValue(singleSwap.amount);\n }\n\n uint256 result = getVault().swap{ value: value }(singleSwap, funds, limit, deadline);\n\n if (_isChainedReference(outputReference)) {\n _setChainedReferenceValue(outputReference, result);\n }\n }\n\n function batchSwap(\n IVault.SwapKind kind,\n IVault.BatchSwapStep[] memory swaps,\n IAsset[] calldata assets,\n IVault.FundManagement calldata funds,\n int256[] calldata limits,\n uint256 deadline,\n uint256 value,\n OutputReference[] calldata outputReferences\n ) external payable {\n require(funds.sender == msg.sender || funds.sender == address(this), \"Incorrect sender\");\n\n for (uint256 i = 0; i < swaps.length; ++i) {\n uint256 amount = swaps[i].amount;\n if (_isChainedReference(amount)) {\n swaps[i].amount = _getChainedReferenceValue(amount);\n }\n }\n\n int256[] memory results = getVault().batchSwap{ value: value }(kind, swaps, assets, funds, limits, deadline);\n\n for (uint256 i = 0; i < outputReferences.length; ++i) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n // Batch swap return values are signed, as they are Vault deltas (positive values correspond to assets sent\n // to the Vault, and negative values are assets received from the Vault). To simplify the chained reference\n // value model, we simply store the absolute value.\n // This should be fine for most use cases, as the caller can reason about swap results via the `limits`\n // parameter.\n _setChainedReferenceValue(outputReferences[i].key, Math.abs(results[outputReferences[i].index]));\n }\n }\n\n function manageUserBalance(IVault.UserBalanceOp[] calldata ops, uint256 value) external payable {\n for (uint256 i = 0; i < ops.length; i++) {\n require(ops[i].sender == msg.sender || ops[i].sender == address(this), \"Incorrect sender\");\n }\n getVault().manageUserBalance{ value: value }(ops);\n }\n\n enum PoolKind { WEIGHTED }\n\n function joinPool(\n bytes32 poolId,\n PoolKind kind,\n address sender,\n address recipient,\n IVault.JoinPoolRequest memory request,\n uint256 value,\n uint256 outputReference\n ) external payable {\n require(sender == msg.sender || sender == address(this), \"Incorrect sender\");\n\n // The output of a join will be the Pool's token contract, typically known as BPT (Balancer Pool Tokens).\n // Since the Vault is unaware of this (BPT tokens are minted directly to the recipient), we manually\n // measure this balance increase: but only if an output reference is provided.\n IERC20 bpt = IERC20(VaultHelpers.toPoolAddress(poolId));\n uint256 maybeInitialRecipientBPT = _isChainedReference(outputReference) ? bpt.balanceOf(recipient) : 0;\n\n request.userData = _doJoinPoolChainedReferenceReplacements(kind, request.userData);\n\n getVault().joinPool{ value: value }(poolId, sender, recipient, request);\n\n if (_isChainedReference(outputReference)) {\n // In this context, `maybeInitialRecipientBPT` is guaranteed to have been initialized, so we can safely read\n // from it. Note that we assume the recipient balance change has a positive sign (i.e. the recipient\n // received BPT).\n uint256 finalRecipientBPT = bpt.balanceOf(recipient);\n _setChainedReferenceValue(outputReference, finalRecipientBPT.sub(maybeInitialRecipientBPT));\n }\n }\n\n function _doJoinPoolChainedReferenceReplacements(PoolKind kind, bytes memory userData)\n private\n returns (bytes memory)\n {\n if (kind == PoolKind.WEIGHTED) {\n return _doWeightedJoinChainedReferenceReplacements(userData);\n } else {\n _revert(Errors.UNHANDLED_JOIN_KIND);\n }\n }\n\n function _doWeightedJoinChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n WeightedPoolUserData.JoinKind kind = WeightedPoolUserData.joinKind(userData);\n\n if (kind == WeightedPoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT) {\n return _doWeightedExactTokensInForBPTOutReplacements(userData);\n } else {\n // All other join kinds are 'given out' (i.e the parameter is a BPT amount), so we don't do replacements for\n // those.\n return userData;\n }\n }\n\n function _doWeightedExactTokensInForBPTOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256[] memory amountsIn, uint256 minBPTAmountOut) = WeightedPoolUserData.exactTokensInForBptOut(userData);\n\n bool replacedAmounts = false;\n for (uint256 i = 0; i < amountsIn.length; ++i) {\n uint256 amount = amountsIn[i];\n if (_isChainedReference(amount)) {\n amountsIn[i] = _getChainedReferenceValue(amount);\n replacedAmounts = true;\n }\n }\n\n // Save gas by only re-encoding the data if we actually performed a replacement\n return\n replacedAmounts\n ? abi.encode(WeightedPoolUserData.JoinKind.EXACT_TOKENS_IN_FOR_BPT_OUT, amountsIn, minBPTAmountOut)\n : userData;\n }\n\n function exitPool(\n bytes32 poolId,\n PoolKind kind,\n address sender,\n address payable recipient,\n IVault.ExitPoolRequest memory request,\n OutputReference[] calldata outputReferences\n ) external payable {\n require(sender == msg.sender || sender == address(this), \"Incorrect sender\");\n\n // To track the changes of internal balances, we need an array of token addresses.\n // We save this here to avoid having to recalculate after the exit.\n IERC20[] memory trackedTokens = new IERC20[](outputReferences.length);\n\n // Query initial balances for all tokens, and record them as chained references\n uint256[] memory initialRecipientBalances = new uint256[](outputReferences.length);\n for (uint256 i = 0; i < outputReferences.length; i++) {\n require(_isChainedReference(outputReferences[i].key), \"invalid chained reference\");\n\n IAsset asset = request.assets[outputReferences[i].index];\n if (request.toInternalBalance) {\n trackedTokens[i] = _asIERC20(asset);\n } else {\n initialRecipientBalances[i] = _isETH(asset) ? recipient.balance : _asIERC20(asset).balanceOf(recipient);\n }\n }\n if (request.toInternalBalance) {\n initialRecipientBalances = getVault().getInternalBalance(recipient, trackedTokens);\n }\n\n // Exit the Pool\n request.userData = _doExitPoolChainedReferenceReplacements(kind, request.userData);\n getVault().exitPool(poolId, sender, recipient, request);\n\n // Query final balances for all tokens of interest\n uint256[] memory finalRecipientTokenBalances = new uint256[](outputReferences.length);\n if (request.toInternalBalance) {\n finalRecipientTokenBalances = getVault().getInternalBalance(recipient, trackedTokens);\n } else {\n for (uint256 i = 0; i < outputReferences.length; i++) {\n IAsset asset = request.assets[outputReferences[i].index];\n finalRecipientTokenBalances[i] = _isETH(asset)\n ? recipient.balance\n : _asIERC20(asset).balanceOf(recipient);\n }\n }\n\n // Calculate deltas and save as chained references\n for (uint256 i = 0; i < outputReferences.length; i++) {\n _setChainedReferenceValue(\n outputReferences[i].key,\n finalRecipientTokenBalances[i].sub(initialRecipientBalances[i])\n );\n }\n }\n\n function _doExitPoolChainedReferenceReplacements(PoolKind kind, bytes memory userData)\n private\n returns (bytes memory)\n {\n if (kind == PoolKind.WEIGHTED) {\n return _doWeightedExitChainedReferenceReplacements(userData);\n } else {\n _revert(Errors.UNHANDLED_EXIT_KIND);\n }\n }\n\n function _doWeightedExitChainedReferenceReplacements(bytes memory userData) private returns (bytes memory) {\n WeightedPoolUserData.ExitKind kind = WeightedPoolUserData.exitKind(userData);\n\n if (kind == WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT) {\n return _doWeightedExactBptInForOneTokenOutReplacements(userData);\n } else if (kind == WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT) {\n return _doWeightedExactBptInForTokensOutReplacements(userData);\n } else {\n // All other exit kinds are 'given out' (i.e the parameter is a token amount),\n // so we don't do replacements for those.\n return userData;\n }\n }\n\n function _doWeightedExactBptInForOneTokenOutReplacements(bytes memory userData) private returns (bytes memory) {\n (uint256 bptAmountIn, uint256 tokenIndex) = WeightedPoolUserData.exactBptInForTokenOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_ONE_TOKEN_OUT, bptAmountIn, tokenIndex);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n\n function _doWeightedExactBptInForTokensOutReplacements(bytes memory userData) private returns (bytes memory) {\n uint256 bptAmountIn = WeightedPoolUserData.exactBptInForTokensOut(userData);\n\n if (_isChainedReference(bptAmountIn)) {\n bptAmountIn = _getChainedReferenceValue(bptAmountIn);\n return abi.encode(WeightedPoolUserData.ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, bptAmountIn);\n } else {\n // Save gas by only re-encoding the data if we actually performed a replacement\n return userData;\n }\n }\n}\n"},"contracts/relayer/VaultPermit.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\n\nimport \"./IBaseRelayerLibrary.sol\";\n\n/**\n * @title VaultPermit\n * @notice Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\n * @dev All functions must be payable so they can be called from a multicall involving ETH\n */\nabstract contract VaultPermit is IBaseRelayerLibrary {\n function vaultPermit(\n IERC20Permit token,\n address owner,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public payable {\n token.permit(owner, address(getVault()), value, deadline, v, r, s);\n }\n\n function vaultPermitDAI(\n IERC20PermitDAI token,\n address holder,\n uint256 nonce,\n uint256 expiry,\n bool allowed,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public payable {\n token.permit(holder, address(getVault()), nonce, expiry, allowed, v, r, s);\n }\n}\n"},"contracts/test/MockBaseRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\n//import \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBaseRelayerLibrary.sol\";\n\nimport \"../relayer/BaseRelayerLibrary.sol\";\n\ncontract MockBaseRelayerLibrary is BaseRelayerLibrary {\n event ChainedReferenceValueRead(uint256 value);\n\n constructor(IVault vault) BaseRelayerLibrary(vault) {}\n\n function isChainedReference(uint256 amount) public pure returns (bool) {\n return _isChainedReference(amount);\n }\n\n function setChainedReferenceValue(uint256 ref, uint256 value) public {\n _setChainedReferenceValue(ref, value);\n }\n\n function getChainedReferenceValue(uint256 ref) public {\n emit ChainedReferenceValueRead(_getChainedReferenceValue(ref));\n }\n\n function bytesTunnel(bytes memory input) public pure returns (bytes memory) {\n return input;\n }\n}\n"},"contracts/test/MockBatchRelayerLibrary.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"../BatchRelayerLibrary.sol\";\n\ncontract MockBatchRelayerLibrary is BatchRelayerLibrary {\n event ChainedReferenceValueRead(uint256 value);\n\n constructor(\n IVault vault,\n IERC20 wstETH,\n IBalancerMinter minter\n ) BatchRelayerLibrary(vault, wstETH, minter) {}\n\n function setChainedReferenceValue(uint256 ref, uint256 value) public {\n _setChainedReferenceValue(ref, value);\n }\n\n function getChainedReferenceValue(uint256 ref) public {\n emit ChainedReferenceValueRead(_getChainedReferenceValue(ref));\n }\n}\n"},"contracts/test/MockRecoveryRateProviderPool.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\";\nimport \"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\";\n\ncontract MockRecoveryRateProviderPool is IRateProviderPool, BasePoolAuthorization, RecoveryMode {\n IVault private immutable _vault;\n bool private _recoveryMode;\n\n IRateProvider[] private _rateProviders;\n\n constructor(IVault vault, IRateProvider[] memory rateProviders)\n Authentication(bytes32(uint256(address(this))))\n BasePoolAuthorization(_DELEGATE_OWNER)\n {\n _vault = vault;\n _rateProviders = rateProviders;\n }\n\n // IRateProviderPool\n\n function getRateProviders() external view override returns (IRateProvider[] memory) {\n return _rateProviders;\n }\n\n // BasePoolAuthorization\n\n function _getAuthorizer() internal view override returns (IAuthorizer) {\n return _vault.getAuthorizer();\n }\n\n // Recovery Mode\n\n function inRecoveryMode() public view override returns (bool) {\n return _recoveryMode;\n }\n\n function _setRecoveryMode(bool enabled) internal override {\n _recoveryMode = enabled;\n }\n\n function _doRecoveryModeExit(\n uint256[] memory,\n uint256,\n bytes memory\n ) internal override returns (uint256, uint256[] memory) {}\n}\n"},"contracts/test/MockRecoveryRateProviderPoolFactory.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\";\nimport \"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\";\nimport \"./MockRecoveryRateProviderPool.sol\";\n\ncontract MockRecoveryRateProviderPoolFactory is BasePoolFactory {\n constructor(IVault _vault, IProtocolFeePercentagesProvider protocolFeeProvider)\n BasePoolFactory(_vault, protocolFeeProvider, type(MockRecoveryRateProviderPool).creationCode)\n {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n function create(IRateProvider[] memory rateProviders) external returns (address) {\n return _create(abi.encode(getVault(), rateProviders));\n }\n}\n"},"contracts/test/MockRevertingRateProvider.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\n\ncontract MockRevertingRateProvider is IRateProvider {\n uint256 private _rate;\n\n bool private _revertOnGetRate;\n\n constructor() {\n _rate = FixedPoint.ONE;\n _revertOnGetRate = false;\n }\n\n function getRate() external view override returns (uint256) {\n if (_revertOnGetRate) {\n revert(\"getRate revert\");\n }\n\n return _rate;\n }\n\n function setRevertOnGetRate(bool revertOnGetRate) external {\n _revertOnGetRate = revertOnGetRate;\n }\n}\n"},"contracts/test/MockStaticATokenLM.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\";\n\ncontract MockStaticATokenLM is ERC20Mock, IStaticATokenLM {\n // Mock event to log calls, taken from\n // https://github.com/aave/protocol-v2/blob/ac58fea62bb8afee23f66197e8bce6d79ecda292/contracts/protocol/tokenization/StaticATokenLM.sol\n event Deposit(address depositor, address recipient, uint256 amount, uint16 referralCode, bool fromUnderlying);\n\n event Withdraw(address owner, address recipient, uint256 staticAmount, uint256 dynamicAmount, bool toUnderlying);\n\n uint256 private constant _rate = 1e27;\n IERC20 private immutable _ASSET;\n IERC20 private immutable _ATOKEN;\n\n constructor(\n string memory name,\n string memory symbol,\n IERC20 underlyingAsset,\n IERC20 aToken\n ) ERC20Mock(name, symbol) {\n _ASSET = underlyingAsset;\n _ATOKEN = aToken;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function ASSET() external view override returns (IERC20) {\n return _ASSET;\n }\n\n function ATOKEN() external view override returns (IERC20) {\n return _ATOKEN;\n }\n\n // solhint-disable-next-line func-name-mixedcase\n function LENDING_POOL() external pure override returns (address) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function rate() public pure override returns (uint256) {\n return _rate;\n }\n\n function deposit(\n address recipient,\n uint256 amount,\n uint16 referralCode,\n bool fromUnderlying\n ) external override returns (uint256) {\n emit Deposit(msg.sender, recipient, amount, referralCode, fromUnderlying);\n return amount;\n }\n\n function withdraw(\n address recipient,\n uint256 amount,\n bool toUnderlying\n ) external override returns (uint256, uint256) {\n emit Withdraw(msg.sender, recipient, amount, staticToDynamicAmount(amount), toUnderlying);\n return (amount, amount);\n }\n\n function staticToDynamicAmount(uint256 amount) public pure override returns (uint256) {\n return amount;\n }\n\n function dynamicToStaticAmount(uint256 amount) external pure override returns (uint256) {\n return amount;\n }\n\n function permit(\n address,\n address,\n uint256,\n uint256,\n uint8,\n bytes32,\n bytes32\n ) public pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getDomainSeparator() public pure override returns (bytes32) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function withdrawDynamicAmount(\n address,\n uint256,\n bool\n ) external pure override returns (uint256, uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function metaDeposit(\n address,\n address,\n uint256,\n uint16,\n bool,\n uint256,\n SignatureParams calldata\n ) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function metaWithdraw(\n address,\n address,\n uint256,\n uint256,\n bool,\n uint256,\n SignatureParams calldata\n ) external pure override returns (uint256, uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function dynamicBalanceOf(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function collectAndUpdateRewards() external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function claimRewardsOnBehalf(\n address,\n address,\n bool\n ) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function claimRewards(address, bool) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function claimRewardsToSelf(bool) external pure override {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getTotalClaimableRewards() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getClaimableRewards(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getUnclaimedRewards(address) external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getAccRewardsPerToken() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getLifetimeRewardsClaimed() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getLifetimeRewards() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function getLastRewardBlock() external pure override returns (uint256) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function INCENTIVES_CONTROLLER() external pure override returns (address) {\n _revert(Errors.UNIMPLEMENTED);\n }\n\n function REWARD_TOKEN() external pure override returns (IERC20) {\n _revert(Errors.UNIMPLEMENTED);\n }\n}\n"},"contracts/test/MockStETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\";\n\ncontract MockStETH is TestToken, IstETH {\n constructor(\n string memory name,\n string memory symbol,\n uint8 decimals\n ) TestToken(name, symbol, decimals) {\n // solhint-disable-previous-line no-empty-blocks\n }\n\n event EthStaked(uint256 amount);\n\n function submit(address) external payable override returns (uint256) {\n _mint(msg.sender, msg.value);\n emit EthStaked(msg.value);\n return msg.value;\n }\n}\n"},"contracts/test/MockWstETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\";\nimport \"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\";\n\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\";\n\ncontract MockWstETH is ERC20, IwstETH {\n using FixedPoint for uint256;\n using SafeERC20 for IERC20;\n\n IstETH public override stETH;\n uint256 public rate = 1.5e18;\n\n constructor(IstETH token) ERC20(\"Wrapped Staked Ether\", \"wstETH\") {\n stETH = token;\n }\n\n function wrap(uint256 _stETHAmount) external override returns (uint256) {\n IERC20(stETH).safeTransferFrom(msg.sender, address(this), _stETHAmount);\n uint256 wstETHAmount = getWstETHByStETH(_stETHAmount);\n _mint(msg.sender, wstETHAmount);\n return wstETHAmount;\n }\n\n function unwrap(uint256 _wstETHAmount) external override returns (uint256) {\n _burn(msg.sender, _wstETHAmount);\n uint256 stETHAmount = getStETHByWstETH(_wstETHAmount);\n IERC20(stETH).safeTransfer(msg.sender, stETHAmount);\n return stETHAmount;\n }\n\n receive() external payable {\n stETH.submit{ value: msg.value }(address(this));\n _mint(msg.sender, getWstETHByStETH(msg.value));\n }\n\n function getWstETHByStETH(uint256 _stETHAmount) public view override returns (uint256) {\n return _stETHAmount.divDown(rate);\n }\n\n function getStETHByWstETH(uint256 _wstETHAmount) public view override returns (uint256) {\n return _wstETHAmount.mulDown(rate);\n }\n\n function stEthPerToken() external view override returns (uint256) {\n return getStETHByWstETH(1 ether);\n }\n\n function tokensPerStEth() external view override returns (uint256) {\n return getWstETHByStETH(1 ether);\n }\n}\n"},"contracts/test/TestWETH.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n\npragma solidity ^0.7.0;\n\nimport \"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\";\n\ncontract TestWETH is IWETH {\n string public name = \"Wrapped Ether\";\n string public symbol = \"WETH\";\n uint8 public decimals = 18;\n\n event Deposit(address indexed dst, uint256 wad);\n event Withdrawal(address indexed src, uint256 wad);\n\n mapping(address => uint256) public override balanceOf;\n mapping(address => mapping(address => uint256)) public override allowance;\n\n receive() external payable {\n deposit();\n }\n\n function deposit() public payable override {\n balanceOf[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value);\n }\n\n function withdraw(uint256 wad) public override {\n require(balanceOf[msg.sender] >= wad, \"INSUFFICIENT_BALANCE\");\n balanceOf[msg.sender] -= wad;\n msg.sender.transfer(wad);\n emit Withdrawal(msg.sender, wad);\n }\n\n // For testing purposes - this creates WETH that cannot be redeemed for ETH via 'withdraw'\n function mint(address destinatary, uint256 amount) external {\n balanceOf[destinatary] += amount;\n emit Deposit(destinatary, amount);\n }\n\n function totalSupply() public view override returns (uint256) {\n return address(this).balance;\n }\n\n function approve(address guy, uint256 wad) public override returns (bool) {\n allowance[msg.sender][guy] = wad;\n emit Approval(msg.sender, guy, wad);\n return true;\n }\n\n function transfer(address dst, uint256 wad) public override returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(\n address src,\n address dst,\n uint256 wad\n ) public override returns (bool) {\n require(balanceOf[src] >= wad, \"INSUFFICIENT_BALANCE\");\n\n if (src != msg.sender && allowance[src][msg.sender] != uint256(-1)) {\n require(allowance[src][msg.sender] >= wad, \"INSUFFICIENT_ALLOWANCE\");\n allowance[src][msg.sender] -= wad;\n }\n\n balanceOf[src] -= wad;\n balanceOf[dst] += wad;\n\n emit Transfer(src, dst, wad);\n\n return true;\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":9999},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"errors":[{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:34:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1582,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1343},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol:42:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1827,"file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","start":1588},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:29:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":960,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":794},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:38:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function add(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1256,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1062},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:89:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function div(\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2814,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2642},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:83:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":2636,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":2456},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:47:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1541,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1375},"type":"Warning"},{"component":"general","errorCode":"8261","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol:56:5: Warning: Variable is shadowed in inline assembly by an instruction of the same name\n function sub(int256 a, int256 b) internal pure returns (int256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Variable is shadowed in inline assembly by an instruction of the same name","severity":"warning","sourceLocation":{"end":1840,"file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","start":1646},"type":"Warning"},{"component":"general","errorCode":"2018","formattedMessage":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol:77:5: Warning: Function state mutability can be restricted to pure\n function _getChainId() private view returns (uint256 chainId) {\n ^ (Relevant source part starts here and spans across multiple lines).\n","message":"Function state mutability can be restricted to pure","severity":"warning","sourceLocation":{"end":3620,"file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","start":3433},"type":"Warning"}],"sources":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","exportedSymbols":{"IAuthorizerAdaptor":[28]},"id":29,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:0"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2,"nodeType":"ImportDirective","scope":29,"sourceUnit":1881,"src":"721:55:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":3,"nodeType":"ImportDirective","scope":29,"sourceUnit":3618,"src":"777:29:0","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":4,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1880,"src":"840:15:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1880","typeString":"contract IAuthentication"}},"id":5,"nodeType":"InheritanceSpecifier","src":"840:15:0"}],"contractDependencies":[1880],"contractKind":"interface","fullyImplemented":false,"id":28,"linearizedBaseContracts":[28,1880],"name":"IAuthorizerAdaptor","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":6,"nodeType":"StructuredDocumentation","src":"862:53:0","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":11,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":7,"nodeType":"ParameterList","parameters":[],"src":"937:2:0"},"returnParameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11,"src":"963:6:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":8,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"963:6:0","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"962:8:0"},"scope":28,"src":"920:51:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":12,"nodeType":"StructuredDocumentation","src":"977:49:0","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":17,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[],"src":"1053:2:0"},"returnParameters":{"id":16,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":17,"src":"1079:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":14,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"1079:11:0","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1078:13:0"},"scope":28,"src":"1031:61:0","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":18,"nodeType":"StructuredDocumentation","src":"1098:331:0","text":" @notice Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\n @param target - Address of the contract to be called\n @param data - Calldata to be sent to the target contract\n @return The bytes encoded return value from the performed function call"},"functionSelector":"4036176a","id":27,"implemented":false,"kind":"function","modifiers":[],"name":"performAction","nodeType":"FunctionDefinition","parameters":{"id":23,"nodeType":"ParameterList","parameters":[{"constant":false,"id":20,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":27,"src":"1457:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"1457:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":22,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":27,"src":"1473:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":21,"name":"bytes","nodeType":"ElementaryTypeName","src":"1473:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1456:37:0"},"returnParameters":{"id":26,"nodeType":"ParameterList","parameters":[{"constant":false,"id":25,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":27,"src":"1520:12:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":24,"name":"bytes","nodeType":"ElementaryTypeName","src":"1520:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1519:14:0"},"scope":28,"src":"1434:100:0","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":29,"src":"808:728:0"}],"src":"688:849:0"},"id":0},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","exportedSymbols":{"IBalancerMinter":[175]},"id":176,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":30,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:1"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","file":"./IBalancerTokenAdmin.sol","id":31,"nodeType":"ImportDirective","scope":176,"sourceUnit":306,"src":"721:35:1","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","file":"./IGaugeController.sol","id":32,"nodeType":"ImportDirective","scope":176,"sourceUnit":381,"src":"757:32:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":175,"linearizedBaseContracts":[175],"name":"IBalancerMinter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":40,"name":"Minted","nodeType":"EventDefinition","parameters":{"id":39,"nodeType":"ParameterList","parameters":[{"constant":false,"id":34,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":40,"src":"836:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":33,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":36,"indexed":false,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":40,"src":"863:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":35,"name":"address","nodeType":"ElementaryTypeName","src":"863:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":38,"indexed":false,"mutability":"mutable","name":"minted","nodeType":"VariableDeclaration","scope":40,"src":"878:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":37,"name":"uint256","nodeType":"ElementaryTypeName","src":"878:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"835:58:1"},"src":"823:71:1"},{"documentation":{"id":41,"nodeType":"StructuredDocumentation","src":"900:79:1","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":46,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":42,"nodeType":"ParameterList","parameters":[],"src":"1009:2:1"},"returnParameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":46,"src":"1035:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":43,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1035:6:1","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1034:8:1"},"scope":175,"src":"984:59:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":47,"nodeType":"StructuredDocumentation","src":"1049:83:1","text":" @notice Returns the address of the Balancer Token Admin contract"},"functionSelector":"e6dec36f","id":52,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerTokenAdmin","nodeType":"FunctionDefinition","parameters":{"id":48,"nodeType":"ParameterList","parameters":[],"src":"1167:2:1"},"returnParameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":52,"src":"1193:19:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$305","typeString":"contract IBalancerTokenAdmin"},"typeName":{"id":49,"name":"IBalancerTokenAdmin","nodeType":"UserDefinedTypeName","referencedDeclaration":305,"src":"1193:19:1","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerTokenAdmin_$305","typeString":"contract IBalancerTokenAdmin"}},"visibility":"internal"}],"src":"1192:21:1"},"scope":175,"src":"1137:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":53,"nodeType":"StructuredDocumentation","src":"1220:70:1","text":" @notice Returns the address of the Gauge Controller"},"functionSelector":"58de9ade","id":58,"implemented":false,"kind":"function","modifiers":[],"name":"getGaugeController","nodeType":"FunctionDefinition","parameters":{"id":54,"nodeType":"ParameterList","parameters":[],"src":"1322:2:1"},"returnParameters":{"id":57,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":58,"src":"1348:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$380","typeString":"contract IGaugeController"},"typeName":{"id":55,"name":"IGaugeController","nodeType":"UserDefinedTypeName","referencedDeclaration":380,"src":"1348:16:1","typeDescriptions":{"typeIdentifier":"t_contract$_IGaugeController_$380","typeString":"contract IGaugeController"}},"visibility":"internal"}],"src":"1347:18:1"},"scope":175,"src":"1295:71:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":59,"nodeType":"StructuredDocumentation","src":"1372:162:1","text":" @notice Mint everything which belongs to `msg.sender` and send to them\n @param gauge `LiquidityGauge` address to get mintable amount from"},"functionSelector":"6a627842","id":66,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":62,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":66,"src":"1553:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"1553:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1552:15:1"},"returnParameters":{"id":65,"nodeType":"ParameterList","parameters":[{"constant":false,"id":64,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":66,"src":"1586:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":63,"name":"uint256","nodeType":"ElementaryTypeName","src":"1586:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1585:9:1"},"scope":175,"src":"1539:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"1601:151:1","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"397ada21","id":75,"implemented":false,"kind":"function","modifiers":[],"name":"mintMany","nodeType":"FunctionDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":75,"src":"1775:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":68,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":69,"nodeType":"ArrayTypeName","src":"1775:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1774:27:1"},"returnParameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":75,"src":"1820:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":72,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1819:9:1"},"scope":175,"src":"1757:72:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":76,"nodeType":"StructuredDocumentation","src":"1835:256:1","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"7504a15d","id":85,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":81,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":85,"src":"2113:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":77,"name":"address","nodeType":"ElementaryTypeName","src":"2113:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":85,"src":"2128:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79,"name":"address","nodeType":"ElementaryTypeName","src":"2128:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2112:29:1"},"returnParameters":{"id":84,"nodeType":"ParameterList","parameters":[{"constant":false,"id":83,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":85,"src":"2160:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82,"name":"uint256","nodeType":"ElementaryTypeName","src":"2160:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2159:9:1"},"scope":175,"src":"2096:73:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":86,"nodeType":"StructuredDocumentation","src":"2175:262:1","text":" @notice Mint tokens for `user` across multiple gauges\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauges List of `LiquidityGauge` addresses\n @param user Address to mint to"},"functionSelector":"3b9f7384","id":96,"implemented":false,"kind":"function","modifiers":[],"name":"mintManyFor","nodeType":"FunctionDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":96,"src":"2463:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":87,"name":"address","nodeType":"ElementaryTypeName","src":"2463:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":88,"nodeType":"ArrayTypeName","src":"2463:9:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":91,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":96,"src":"2490:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90,"name":"address","nodeType":"ElementaryTypeName","src":"2490:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2462:41:1"},"returnParameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":96,"src":"2522:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":93,"name":"uint256","nodeType":"ElementaryTypeName","src":"2522:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2521:9:1"},"scope":175,"src":"2442:89:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"2537:84:1","text":" @notice The total number of tokens minted for `user` from `gauge`"},"functionSelector":"8b752bb0","id":106,"implemented":false,"kind":"function","modifiers":[],"name":"minted","nodeType":"FunctionDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":106,"src":"2642:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"2642:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":101,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":106,"src":"2656:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"2656:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2641:29:1"},"returnParameters":{"id":105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":104,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":106,"src":"2694:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2694:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2693:9:1"},"scope":175,"src":"2626:77:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":107,"nodeType":"StructuredDocumentation","src":"2709:81:1","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"3c543bc6","id":116,"implemented":false,"kind":"function","modifiers":[],"name":"getMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":109,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":116,"src":"2822:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":108,"name":"address","nodeType":"ElementaryTypeName","src":"2822:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":111,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":116,"src":"2838:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":110,"name":"address","nodeType":"ElementaryTypeName","src":"2838:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2821:30:1"},"returnParameters":{"id":115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":114,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":116,"src":"2875:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":113,"name":"bool","nodeType":"ElementaryTypeName","src":"2875:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2874:6:1"},"scope":175,"src":"2795:86:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":117,"nodeType":"StructuredDocumentation","src":"2887:89:1","text":" @notice Set whether `minter` is approved to mint tokens on your behalf"},"functionSelector":"0de54ba0","id":124,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":124,"src":"3008:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"3008:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":124,"src":"3024:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120,"name":"bool","nodeType":"ElementaryTypeName","src":"3024:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3007:31:1"},"returnParameters":{"id":123,"nodeType":"ParameterList","parameters":[],"src":"3047:0:1"},"scope":175,"src":"2981:67:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":125,"nodeType":"StructuredDocumentation","src":"3054:145:1","text":" @notice Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing\n them."},"functionSelector":"c6542794","id":142,"implemented":false,"kind":"function","modifiers":[],"name":"setMinterApprovalWithSignature","nodeType":"FunctionDefinition","parameters":{"id":140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":127,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":142,"src":"3253:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"3253:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":129,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":142,"src":"3277:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":128,"name":"bool","nodeType":"ElementaryTypeName","src":"3277:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":131,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":142,"src":"3300:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":130,"name":"address","nodeType":"ElementaryTypeName","src":"3300:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":133,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":142,"src":"3322:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":132,"name":"uint256","nodeType":"ElementaryTypeName","src":"3322:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":135,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":142,"src":"3348:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":134,"name":"uint8","nodeType":"ElementaryTypeName","src":"3348:5:1","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":137,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":142,"src":"3365:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":136,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3365:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":139,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":142,"src":"3384:9:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":138,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3384:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3243:156:1"},"returnParameters":{"id":141,"nodeType":"ParameterList","parameters":[],"src":"3408:0:1"},"scope":175,"src":"3204:205:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":143,"nodeType":"StructuredDocumentation","src":"3629:81:1","text":" @notice Whether `minter` is approved to mint tokens for `user`"},"functionSelector":"a0990033","id":152,"implemented":false,"kind":"function","modifiers":[],"name":"allowed_to_mint_for","nodeType":"FunctionDefinition","parameters":{"id":148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":145,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":152,"src":"3744:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":144,"name":"address","nodeType":"ElementaryTypeName","src":"3744:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":147,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":152,"src":"3760:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":146,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3743:30:1"},"returnParameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":152,"src":"3797:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":149,"name":"bool","nodeType":"ElementaryTypeName","src":"3797:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3796:6:1"},"scope":175,"src":"3715:88:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":153,"nodeType":"StructuredDocumentation","src":"3809:247:1","text":" @notice Mint everything which belongs to `msg.sender` across multiple gauges\n @dev This function is not recommended as `mintMany()` is more flexible and gas efficient\n @param gauges List of `LiquidityGauge` addresses"},"functionSelector":"a51e1904","id":160,"implemented":false,"kind":"function","modifiers":[],"name":"mint_many","nodeType":"FunctionDefinition","parameters":{"id":158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":157,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":160,"src":"4080:26:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_calldata_ptr","typeString":"address[8]"},"typeName":{"baseType":{"id":154,"name":"address","nodeType":"ElementaryTypeName","src":"4080:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":156,"length":{"hexValue":"38","id":155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4088:1:1","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"nodeType":"ArrayTypeName","src":"4080:10:1","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$8_storage_ptr","typeString":"address[8]"}},"visibility":"internal"}],"src":"4079:28:1"},"returnParameters":{"id":159,"nodeType":"ParameterList","parameters":[],"src":"4116:0:1"},"scope":175,"src":"4061:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":161,"nodeType":"StructuredDocumentation","src":"4123:256:1","text":" @notice Mint tokens for `user`\n @dev Only possible when `msg.sender` has been approved by `user` to mint on their behalf\n @param gauge `LiquidityGauge` address to get mintable amount from\n @param user Address to mint to"},"functionSelector":"27f18ae3","id":168,"implemented":false,"kind":"function","modifiers":[],"name":"mint_for","nodeType":"FunctionDefinition","parameters":{"id":166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":163,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":168,"src":"4402:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":162,"name":"address","nodeType":"ElementaryTypeName","src":"4402:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":165,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":168,"src":"4417:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":164,"name":"address","nodeType":"ElementaryTypeName","src":"4417:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4401:29:1"},"returnParameters":{"id":167,"nodeType":"ParameterList","parameters":[],"src":"4439:0:1"},"scope":175,"src":"4384:56:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":169,"nodeType":"StructuredDocumentation","src":"4446:88:1","text":" @notice Toggle whether `minter` is approved to mint tokens for `user`"},"functionSelector":"dd289d60","id":174,"implemented":false,"kind":"function","modifiers":[],"name":"toggle_approve_mint","nodeType":"FunctionDefinition","parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":174,"src":"4568:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"4568:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4567:16:1"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[],"src":"4592:0:1"},"scope":175,"src":"4539:54:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":176,"src":"791:3804:1"}],"src":"688:3908:1"},"id":1},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","exportedSymbols":{"IBalancerToken":[252]},"id":253,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":177,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:2"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":178,"nodeType":"ImportDirective","scope":253,"sourceUnit":2091,"src":"721:51:2","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":179,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"802:6:2","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":180,"nodeType":"InheritanceSpecifier","src":"802:6:2"}],"contractDependencies":[2090],"contractKind":"interface","fullyImplemented":false,"id":252,"linearizedBaseContracts":[252,2090],"name":"IBalancerToken","nodeType":"ContractDefinition","nodes":[{"functionSelector":"40c10f19","id":187,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":182,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":187,"src":"829:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"829:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":184,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":187,"src":"841:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint256","nodeType":"ElementaryTypeName","src":"841:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"828:28:2"},"returnParameters":{"id":186,"nodeType":"ParameterList","parameters":[],"src":"865:0:2"},"scope":252,"src":"815:51:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ca15c873","id":194,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMemberCount","nodeType":"FunctionDefinition","parameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":194,"src":"900:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":188,"name":"bytes32","nodeType":"ElementaryTypeName","src":"900:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"899:14:2"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":192,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":194,"src":"937:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":191,"name":"uint256","nodeType":"ElementaryTypeName","src":"937:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"936:9:2"},"scope":252,"src":"872:74:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9010d07c","id":203,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleMember","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":196,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":203,"src":"975:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":195,"name":"bytes32","nodeType":"ElementaryTypeName","src":"975:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":198,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":203,"src":"989:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":197,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"974:29:2"},"returnParameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":201,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":203,"src":"1027:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":200,"name":"address","nodeType":"ElementaryTypeName","src":"1027:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1026:9:2"},"scope":252,"src":"952:84:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"91d14854","id":212,"implemented":false,"kind":"function","modifiers":[],"name":"hasRole","nodeType":"FunctionDefinition","parameters":{"id":208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":205,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":212,"src":"1059:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":204,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1059:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":207,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":212,"src":"1073:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":206,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1058:31:2"},"returnParameters":{"id":211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":210,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":212,"src":"1113:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":209,"name":"bool","nodeType":"ElementaryTypeName","src":"1113:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1112:6:2"},"scope":252,"src":"1042:77:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"248a9ca3","id":219,"implemented":false,"kind":"function","modifiers":[],"name":"getRoleAdmin","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[{"constant":false,"id":214,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":219,"src":"1147:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":213,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1147:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1146:14:2"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":219,"src":"1184:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":216,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1184:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1183:9:2"},"scope":252,"src":"1125:68:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2f2ff15d","id":226,"implemented":false,"kind":"function","modifiers":[],"name":"grantRole","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":226,"src":"1218:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1218:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":223,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":226,"src":"1232:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1217:31:2"},"returnParameters":{"id":225,"nodeType":"ParameterList","parameters":[],"src":"1257:0:2"},"scope":252,"src":"1199:59:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d547741f","id":233,"implemented":false,"kind":"function","modifiers":[],"name":"revokeRole","nodeType":"FunctionDefinition","parameters":{"id":231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":228,"mutability":"mutable","name":"role","nodeType":"VariableDeclaration","scope":233,"src":"1284:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1284:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":233,"src":"1298:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":229,"name":"address","nodeType":"ElementaryTypeName","src":"1298:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:31:2"},"returnParameters":{"id":232,"nodeType":"ParameterList","parameters":[],"src":"1323:0:2"},"scope":252,"src":"1264:60:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"a217fddf","id":238,"implemented":false,"kind":"function","modifiers":[],"name":"DEFAULT_ADMIN_ROLE","nodeType":"FunctionDefinition","parameters":{"id":234,"nodeType":"ParameterList","parameters":[],"src":"1410:2:2"},"returnParameters":{"id":237,"nodeType":"ParameterList","parameters":[{"constant":false,"id":236,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":238,"src":"1436:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":235,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1436:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1435:9:2"},"scope":252,"src":"1383:62:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d5391393","id":243,"implemented":false,"kind":"function","modifiers":[],"name":"MINTER_ROLE","nodeType":"FunctionDefinition","parameters":{"id":239,"nodeType":"ParameterList","parameters":[],"src":"1524:2:2"},"returnParameters":{"id":242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":243,"src":"1550:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":240,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1550:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1549:9:2"},"scope":252,"src":"1504:55:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7028e2cd","id":248,"implemented":false,"kind":"function","modifiers":[],"name":"SNAPSHOT_ROLE","nodeType":"FunctionDefinition","parameters":{"id":244,"nodeType":"ParameterList","parameters":[],"src":"1640:2:2"},"returnParameters":{"id":247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":246,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":248,"src":"1666:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":245,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1666:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1665:9:2"},"scope":252,"src":"1618:57:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9711715a","id":251,"implemented":false,"kind":"function","modifiers":[],"name":"snapshot","nodeType":"FunctionDefinition","parameters":{"id":249,"nodeType":"ParameterList","parameters":[],"src":"1698:2:2"},"returnParameters":{"id":250,"nodeType":"ParameterList","parameters":[],"src":"1709:0:2"},"scope":252,"src":"1681:29:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":253,"src":"774:938:2"}],"src":"688:1025:2"},"id":2},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol","exportedSymbols":{"IBalancerTokenAdmin":[305]},"id":306,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":254,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:3"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":255,"nodeType":"ImportDirective","scope":306,"sourceUnit":1881,"src":"721:55:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"./IBalancerToken.sol","id":256,"nodeType":"ImportDirective","scope":306,"sourceUnit":253,"src":"778:30:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":257,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1880,"src":"843:15:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1880","typeString":"contract IAuthentication"}},"id":258,"nodeType":"InheritanceSpecifier","src":"843:15:3"}],"contractDependencies":[1880],"contractKind":"interface","fullyImplemented":false,"id":305,"linearizedBaseContracts":[305,1880],"name":"IBalancerTokenAdmin","nodeType":"ContractDefinition","nodes":[{"functionSelector":"4dbac733","id":263,"implemented":false,"kind":"function","modifiers":[],"name":"INITIAL_RATE","nodeType":"FunctionDefinition","parameters":{"id":259,"nodeType":"ParameterList","parameters":[],"src":"929:2:3"},"returnParameters":{"id":262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":263,"src":"955:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":260,"name":"uint256","nodeType":"ElementaryTypeName","src":"955:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"954:9:3"},"scope":305,"src":"908:56:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b87b5616","id":268,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_TIME","nodeType":"FunctionDefinition","parameters":{"id":264,"nodeType":"ParameterList","parameters":[],"src":"998:2:3"},"returnParameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":266,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":268,"src":"1024:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":265,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:3"},"scope":305,"src":"970:63:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"21609bbf","id":273,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_REDUCTION_COEFFICIENT","nodeType":"FunctionDefinition","parameters":{"id":269,"nodeType":"ParameterList","parameters":[],"src":"1074:2:3"},"returnParameters":{"id":272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":271,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":273,"src":"1100:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":270,"name":"uint256","nodeType":"ElementaryTypeName","src":"1100:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1099:9:3"},"scope":305,"src":"1039:70:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7efad8e0","id":278,"implemented":false,"kind":"function","modifiers":[],"name":"RATE_DENOMINATOR","nodeType":"FunctionDefinition","parameters":{"id":274,"nodeType":"ParameterList","parameters":[],"src":"1140:2:3"},"returnParameters":{"id":277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":276,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":278,"src":"1166:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":275,"name":"uint256","nodeType":"ElementaryTypeName","src":"1166:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1165:9:3"},"scope":305,"src":"1115:60:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"1224:79:3","text":" @notice Returns the address of the Balancer Governance Token"},"functionSelector":"c0039699","id":284,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":280,"nodeType":"ParameterList","parameters":[],"src":"1333:2:3"},"returnParameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":282,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":284,"src":"1359:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":281,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1359:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1358:16:3"},"scope":305,"src":"1308:67:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0f15f4c0","id":287,"implemented":false,"kind":"function","modifiers":[],"name":"activate","nodeType":"FunctionDefinition","parameters":{"id":285,"nodeType":"ParameterList","parameters":[],"src":"1398:2:3"},"returnParameters":{"id":286,"nodeType":"ParameterList","parameters":[],"src":"1409:0:3"},"scope":305,"src":"1381:29:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2c4e722e","id":292,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[],"src":"1429:2:3"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":292,"src":"1455:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":289,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1454:9:3"},"scope":305,"src":"1416:48:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a228bced","id":297,"implemented":false,"kind":"function","modifiers":[],"name":"startEpochTimeWrite","nodeType":"FunctionDefinition","parameters":{"id":293,"nodeType":"ParameterList","parameters":[],"src":"1498:2:3"},"returnParameters":{"id":296,"nodeType":"ParameterList","parameters":[{"constant":false,"id":295,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":297,"src":"1519:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint256","nodeType":"ElementaryTypeName","src":"1519:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1518:9:3"},"scope":305,"src":"1470:58:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40c10f19","id":304,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":299,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":304,"src":"1548:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":298,"name":"address","nodeType":"ElementaryTypeName","src":"1548:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":301,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":304,"src":"1560:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":300,"name":"uint256","nodeType":"ElementaryTypeName","src":"1560:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1547:28:3"},"returnParameters":{"id":303,"nodeType":"ParameterList","parameters":[],"src":"1584:0:3"},"scope":305,"src":"1534:51:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":306,"src":"810:777:3"}],"src":"688:900:3"},"id":3},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol","exportedSymbols":{"IGaugeController":[380]},"id":381,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":307,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:4"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":308,"nodeType":"ImportDirective","scope":381,"sourceUnit":2091,"src":"721:51:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":309,"nodeType":"ImportDirective","scope":381,"sourceUnit":29,"src":"774:34:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","file":"./IVotingEscrow.sol","id":310,"nodeType":"ImportDirective","scope":381,"sourceUnit":621,"src":"809:29:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":380,"linearizedBaseContracts":[380],"name":"IGaugeController","nodeType":"ContractDefinition","nodes":[{"functionSelector":"615e5237","id":315,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint_gauge","nodeType":"FunctionDefinition","parameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":315,"src":"1077:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1076:15:4"},"returnParameters":{"id":314,"nodeType":"ParameterList","parameters":[],"src":"1100:0:4"},"scope":380,"src":"1051:50:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"d3078c94","id":324,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_relative_weight","nodeType":"FunctionDefinition","parameters":{"id":320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":317,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":324,"src":"1138:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":319,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":324,"src":"1153:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":318,"name":"uint256","nodeType":"ElementaryTypeName","src":"1153:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1137:29:4"},"returnParameters":{"id":323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":322,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":324,"src":"1190:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":321,"name":"uint256","nodeType":"ElementaryTypeName","src":"1190:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:9:4"},"scope":380,"src":"1107:92:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dfe05031","id":329,"implemented":false,"kind":"function","modifiers":[],"name":"voting_escrow","nodeType":"FunctionDefinition","parameters":{"id":325,"nodeType":"ParameterList","parameters":[],"src":"1227:2:4"},"returnParameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":327,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":329,"src":"1253:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$620","typeString":"contract IVotingEscrow"},"typeName":{"id":326,"name":"IVotingEscrow","nodeType":"UserDefinedTypeName","referencedDeclaration":620,"src":"1253:13:4","typeDescriptions":{"typeIdentifier":"t_contract$_IVotingEscrow_$620","typeString":"contract IVotingEscrow"}},"visibility":"internal"}],"src":"1252:15:4"},"scope":380,"src":"1205:63:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fc0c546a","id":334,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[],"src":"1288:2:4"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":332,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":334,"src":"1314:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":331,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1314:6:4","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1313:8:4"},"scope":380,"src":"1274:48:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"92d0d232","id":341,"implemented":false,"kind":"function","modifiers":[],"name":"add_type","nodeType":"FunctionDefinition","parameters":{"id":339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":341,"src":"1346:20:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":335,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":341,"src":"1368:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1368:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1345:38:4"},"returnParameters":{"id":340,"nodeType":"ParameterList","parameters":[],"src":"1392:0:4"},"scope":380,"src":"1328:65:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"db1ca260","id":348,"implemented":false,"kind":"function","modifiers":[],"name":"change_type_weight","nodeType":"FunctionDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":343,"mutability":"mutable","name":"typeId","nodeType":"VariableDeclaration","scope":348,"src":"1427:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":342,"name":"int128","nodeType":"ElementaryTypeName","src":"1427:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":345,"mutability":"mutable","name":"weight","nodeType":"VariableDeclaration","scope":348,"src":"1442:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":344,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1426:31:4"},"returnParameters":{"id":347,"nodeType":"ParameterList","parameters":[],"src":"1466:0:4"},"scope":380,"src":"1399:68:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"3a04f900","id":355,"implemented":false,"kind":"function","modifiers":[],"name":"add_gauge","nodeType":"FunctionDefinition","parameters":{"id":353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":350,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":355,"src":"1492:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":349,"name":"address","nodeType":"ElementaryTypeName","src":"1492:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":352,"mutability":"mutable","name":"gaugeType","nodeType":"VariableDeclaration","scope":355,"src":"1507:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":351,"name":"int128","nodeType":"ElementaryTypeName","src":"1507:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1491:33:4"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[],"src":"1533:0:4"},"scope":380,"src":"1473:61:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9fba03a1","id":360,"implemented":false,"kind":"function","modifiers":[],"name":"n_gauge_types","nodeType":"FunctionDefinition","parameters":{"id":356,"nodeType":"ParameterList","parameters":[],"src":"1562:2:4"},"returnParameters":{"id":359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":360,"src":"1588:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":357,"name":"int128","nodeType":"ElementaryTypeName","src":"1588:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1587:8:4"},"scope":380,"src":"1540:56:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"3f9095b7","id":367,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_types","nodeType":"FunctionDefinition","parameters":{"id":363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":367,"src":"1623:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"1623:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1622:15:4"},"returnParameters":{"id":366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":365,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":367,"src":"1661:6:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":364,"name":"int128","nodeType":"ElementaryTypeName","src":"1661:6:4","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"1660:8:4"},"scope":380,"src":"1602:67:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":372,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":368,"nodeType":"ParameterList","parameters":[],"src":"1689:2:4"},"returnParameters":{"id":371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":372,"src":"1715:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":369,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":28,"src":"1715:18:4","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1714:20:4"},"scope":380,"src":"1675:60:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"61df1bf9","id":379,"implemented":false,"kind":"function","modifiers":[],"name":"gauge_exists","nodeType":"FunctionDefinition","parameters":{"id":375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":374,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":379,"src":"1763:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":373,"name":"address","nodeType":"ElementaryTypeName","src":"1763:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1762:15:4"},"returnParameters":{"id":378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":379,"src":"1801:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":376,"name":"bool","nodeType":"ElementaryTypeName","src":"1801:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1800:6:4"},"scope":380,"src":"1741:66:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":381,"src":"1018:791:4"}],"src":"688:1122:4"},"id":4},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","exportedSymbols":{"ILiquidityGauge":[437]},"id":438,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":382,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:5"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":437,"linearizedBaseContracts":[437],"name":"ILiquidityGauge","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":386,"name":"RelativeWeightCapChanged","nodeType":"EventDefinition","parameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"indexed":false,"mutability":"mutable","name":"new_relative_weight_cap","nodeType":"VariableDeclaration","scope":386,"src":"1059:31:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":383,"name":"uint256","nodeType":"ElementaryTypeName","src":"1059:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1058:33:5"},"src":"1028:64:5"},{"documentation":{"id":387,"nodeType":"StructuredDocumentation","src":"1098:201:5","text":" @notice Returns BAL liquidity emissions calculated during checkpoints for the given user.\n @param user User address.\n @return uint256 BAL amount to issue for the address."},"functionSelector":"09400707","id":394,"implemented":false,"kind":"function","modifiers":[],"name":"integrate_fraction","nodeType":"FunctionDefinition","parameters":{"id":390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":389,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":394,"src":"1332:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":388,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1331:14:5"},"returnParameters":{"id":393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":392,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":394,"src":"1369:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":391,"name":"uint256","nodeType":"ElementaryTypeName","src":"1369:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1368:9:5"},"scope":437,"src":"1304:74:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":395,"nodeType":"StructuredDocumentation","src":"1384:130:5","text":" @notice Record a checkpoint for a given user.\n @param user User address.\n @return bool Always true."},"functionSelector":"4b820093","id":402,"implemented":false,"kind":"function","modifiers":[],"name":"user_checkpoint","nodeType":"FunctionDefinition","parameters":{"id":398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":397,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":402,"src":"1544:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":396,"name":"address","nodeType":"ElementaryTypeName","src":"1544:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1543:14:5"},"returnParameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":400,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":402,"src":"1576:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":399,"name":"bool","nodeType":"ElementaryTypeName","src":"1576:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1575:6:5"},"scope":437,"src":"1519:63:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":403,"nodeType":"StructuredDocumentation","src":"1588:76:5","text":" @notice Returns true if gauge is killed; false otherwise."},"functionSelector":"9c868ac0","id":408,"implemented":false,"kind":"function","modifiers":[],"name":"is_killed","nodeType":"FunctionDefinition","parameters":{"id":404,"nodeType":"ParameterList","parameters":[],"src":"1687:2:5"},"returnParameters":{"id":407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":408,"src":"1713:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":405,"name":"bool","nodeType":"ElementaryTypeName","src":"1713:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1712:6:5"},"scope":437,"src":"1669:50:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":409,"nodeType":"StructuredDocumentation","src":"1725:65:5","text":" @notice Kills the gauge so it cannot mint BAL."},"functionSelector":"ab8f0945","id":412,"implemented":false,"kind":"function","modifiers":[],"name":"killGauge","nodeType":"FunctionDefinition","parameters":{"id":410,"nodeType":"ParameterList","parameters":[],"src":"1813:2:5"},"returnParameters":{"id":411,"nodeType":"ParameterList","parameters":[],"src":"1824:0:5"},"scope":437,"src":"1795:30:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":413,"nodeType":"StructuredDocumentation","src":"1831:70:5","text":" @notice Unkills the gauge so it can mint BAL again."},"functionSelector":"d34fb267","id":416,"implemented":false,"kind":"function","modifiers":[],"name":"unkillGauge","nodeType":"FunctionDefinition","parameters":{"id":414,"nodeType":"ParameterList","parameters":[],"src":"1926:2:5"},"returnParameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"1937:0:5"},"scope":437,"src":"1906:32:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":417,"nodeType":"StructuredDocumentation","src":"1944:221:5","text":" @notice Sets a new relative weight cap for the gauge.\n The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\n @param relativeWeightCap New relative weight cap."},"functionSelector":"10d3eb04","id":422,"implemented":false,"kind":"function","modifiers":[],"name":"setRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":419,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":422,"src":"2200:25:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":418,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2199:27:5"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[],"src":"2235:0:5"},"scope":437,"src":"2170:66:5","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":423,"nodeType":"StructuredDocumentation","src":"2242:70:5","text":" @notice Gets the relative weight cap for the gauge."},"functionSelector":"83f5c39b","id":428,"implemented":false,"kind":"function","modifiers":[],"name":"getRelativeWeightCap","nodeType":"FunctionDefinition","parameters":{"id":424,"nodeType":"ParameterList","parameters":[],"src":"2346:2:5"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":428,"src":"2372:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":425,"name":"uint256","nodeType":"ElementaryTypeName","src":"2372:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2371:9:5"},"scope":437,"src":"2317:64:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":429,"nodeType":"StructuredDocumentation","src":"2387:178:5","text":" @notice Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\n @param time Timestamp in the past or present."},"functionSelector":"14e956f5","id":436,"implemented":false,"kind":"function","modifiers":[],"name":"getCappedRelativeWeight","nodeType":"FunctionDefinition","parameters":{"id":432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":431,"mutability":"mutable","name":"time","nodeType":"VariableDeclaration","scope":436,"src":"2603:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint256","nodeType":"ElementaryTypeName","src":"2603:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2602:14:5"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":434,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":436,"src":"2640:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":433,"name":"uint256","nodeType":"ElementaryTypeName","src":"2640:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2639:9:5"},"scope":437,"src":"2570:79:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":438,"src":"944:1707:5"}],"src":"688:1964:5"},"id":5},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","exportedSymbols":{"IRewardTokenDistributor":[513]},"id":514,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":439,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:6"},{"id":440,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:6"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":441,"nodeType":"ImportDirective","scope":514,"sourceUnit":2091,"src":"755:51:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":513,"linearizedBaseContracts":[513],"name":"IRewardTokenDistributor","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRewardTokenDistributor.Reward","id":454,"members":[{"constant":false,"id":443,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":454,"src":"1070:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":442,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1070:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":445,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":454,"src":"1092:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":444,"name":"address","nodeType":"ElementaryTypeName","src":"1092:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":447,"mutability":"mutable","name":"period_finish","nodeType":"VariableDeclaration","scope":454,"src":"1121:21:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":446,"name":"uint256","nodeType":"ElementaryTypeName","src":"1121:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":449,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":454,"src":"1152:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":448,"name":"uint256","nodeType":"ElementaryTypeName","src":"1152:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":451,"mutability":"mutable","name":"last_update","nodeType":"VariableDeclaration","scope":454,"src":"1174:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":453,"mutability":"mutable","name":"integral","nodeType":"VariableDeclaration","scope":454,"src":"1203:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1203:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Reward","nodeType":"StructDefinition","scope":513,"src":"1046:180:6","visibility":"public"},{"functionSelector":"54c49fe9","id":461,"implemented":false,"kind":"function","modifiers":[],"name":"reward_tokens","nodeType":"FunctionDefinition","parameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":461,"src":"1255:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint256","nodeType":"ElementaryTypeName","src":"1255:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1254:15:6"},"returnParameters":{"id":460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":459,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":461,"src":"1293:6:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":458,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1293:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1292:8:6"},"scope":513,"src":"1232:69:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"48e9c65e","id":468,"implemented":false,"kind":"function","modifiers":[],"name":"reward_data","nodeType":"FunctionDefinition","parameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":468,"src":"1328:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":462,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1328:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1327:14:6"},"returnParameters":{"id":467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":466,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":468,"src":"1365:13:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$454_memory_ptr","typeString":"struct IRewardTokenDistributor.Reward"},"typeName":{"id":465,"name":"Reward","nodeType":"UserDefinedTypeName","referencedDeclaration":454,"src":"1365:6:6","typeDescriptions":{"typeIdentifier":"t_struct$_Reward_$454_storage_ptr","typeString":"struct IRewardTokenDistributor.Reward"}},"visibility":"internal"}],"src":"1364:15:6"},"scope":513,"src":"1307:73:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"84e9bd7e","id":473,"implemented":false,"kind":"function","modifiers":[],"name":"claim_rewards","nodeType":"FunctionDefinition","parameters":{"id":471,"nodeType":"ParameterList","parameters":[{"constant":false,"id":470,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":473,"src":"1409:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":469,"name":"address","nodeType":"ElementaryTypeName","src":"1409:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1408:14:6"},"returnParameters":{"id":472,"nodeType":"ParameterList","parameters":[],"src":"1431:0:6"},"scope":513,"src":"1386:46:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e8de0d4d","id":480,"implemented":false,"kind":"function","modifiers":[],"name":"add_reward","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":475,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":480,"src":"1458:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":474,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1458:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":480,"src":"1478:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":476,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1457:41:6"},"returnParameters":{"id":479,"nodeType":"ParameterList","parameters":[],"src":"1507:0:6"},"scope":513,"src":"1438:70:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"058a3a24","id":487,"implemented":false,"kind":"function","modifiers":[],"name":"set_reward_distributor","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":487,"src":"1546:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":481,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1546:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"distributor","nodeType":"VariableDeclaration","scope":487,"src":"1566:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":483,"name":"address","nodeType":"ElementaryTypeName","src":"1566:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1545:41:6"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[],"src":"1595:0:6"},"scope":513,"src":"1514:82:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93f7aa67","id":494,"implemented":false,"kind":"function","modifiers":[],"name":"deposit_reward_token","nodeType":"FunctionDefinition","parameters":{"id":492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":489,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":494,"src":"1632:18:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":488,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1632:6:6","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":491,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":494,"src":"1652:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":490,"name":"uint256","nodeType":"ElementaryTypeName","src":"1652:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1631:36:6"},"returnParameters":{"id":493,"nodeType":"ParameterList","parameters":[],"src":"1676:0:6"},"scope":513,"src":"1602:75:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33fd6f74","id":503,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward","nodeType":"FunctionDefinition","parameters":{"id":499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":496,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":503,"src":"1709:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":495,"name":"address","nodeType":"ElementaryTypeName","src":"1709:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":498,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":503,"src":"1730:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":497,"name":"address","nodeType":"ElementaryTypeName","src":"1730:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1708:35:6"},"returnParameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":501,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":503,"src":"1767:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":500,"name":"uint256","nodeType":"ElementaryTypeName","src":"1767:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1766:9:6"},"scope":513,"src":"1683:93:6","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"59b7e409","id":512,"implemented":false,"kind":"function","modifiers":[],"name":"claimable_reward_write","nodeType":"FunctionDefinition","parameters":{"id":508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":505,"mutability":"mutable","name":"rewardToken","nodeType":"VariableDeclaration","scope":512,"src":"1814:19:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":504,"name":"address","nodeType":"ElementaryTypeName","src":"1814:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":507,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":512,"src":"1835:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":506,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1813:35:6"},"returnParameters":{"id":511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":510,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":512,"src":"1867:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1867:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1866:9:6"},"scope":513,"src":"1782:94:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":514,"src":"1006:872:6"}],"src":"688:1191:6"},"id":6},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","exportedSymbols":{"IStakingLiquidityGauge":[550]},"id":551,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":515,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:7"},{"id":516,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:7"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":517,"nodeType":"ImportDirective","scope":551,"sourceUnit":2091,"src":"755:51:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol","file":"./ILiquidityGauge.sol","id":518,"nodeType":"ImportDirective","scope":551,"sourceUnit":438,"src":"808:31:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol","file":"./IRewardTokenDistributor.sol","id":519,"nodeType":"ImportDirective","scope":551,"sourceUnit":514,"src":"840:39:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":520,"name":"IRewardTokenDistributor","nodeType":"UserDefinedTypeName","referencedDeclaration":513,"src":"1115:23:7","typeDescriptions":{"typeIdentifier":"t_contract$_IRewardTokenDistributor_$513","typeString":"contract IRewardTokenDistributor"}},"id":521,"nodeType":"InheritanceSpecifier","src":"1115:23:7"},{"baseName":{"id":522,"name":"ILiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":437,"src":"1140:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_ILiquidityGauge_$437","typeString":"contract ILiquidityGauge"}},"id":523,"nodeType":"InheritanceSpecifier","src":"1140:15:7"},{"baseName":{"id":524,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1157:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":525,"nodeType":"InheritanceSpecifier","src":"1157:6:7"}],"contractDependencies":[437,513,2090],"contractKind":"interface","fullyImplemented":false,"id":550,"linearizedBaseContracts":[550,2090,437,513],"name":"IStakingLiquidityGauge","nodeType":"ContractDefinition","nodes":[{"functionSelector":"cd6dc687","id":532,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","parameters":{"id":530,"nodeType":"ParameterList","parameters":[{"constant":false,"id":527,"mutability":"mutable","name":"lpToken","nodeType":"VariableDeclaration","scope":532,"src":"1190:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":526,"name":"address","nodeType":"ElementaryTypeName","src":"1190:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":529,"mutability":"mutable","name":"relativeWeightCap","nodeType":"VariableDeclaration","scope":532,"src":"1207:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1189:44:7"},"returnParameters":{"id":531,"nodeType":"ParameterList","parameters":[],"src":"1242:0:7"},"scope":550,"src":"1170:73:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"82c63066","id":537,"implemented":false,"kind":"function","modifiers":[],"name":"lp_token","nodeType":"FunctionDefinition","parameters":{"id":533,"nodeType":"ParameterList","parameters":[],"src":"1266:2:7"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":535,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":537,"src":"1292:6:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":534,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1292:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1291:8:7"},"scope":550,"src":"1249:51:7","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6e553f65","id":544,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":539,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":544,"src":"1323:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":538,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":544,"src":"1338:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":540,"name":"address","nodeType":"ElementaryTypeName","src":"1338:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1322:34:7"},"returnParameters":{"id":543,"nodeType":"ParameterList","parameters":[],"src":"1365:0:7"},"scope":550,"src":"1306:60:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":549,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":546,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":549,"src":"1390:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":545,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1389:15:7"},"returnParameters":{"id":548,"nodeType":"ParameterList","parameters":[],"src":"1413:0:7"},"scope":550,"src":"1372:42:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":551,"src":"1079:337:7"}],"src":"688:729:7"},"id":7},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol","exportedSymbols":{"IVotingEscrow":[620]},"id":621,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":552,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:8"},{"id":553,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:8"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"./IAuthorizerAdaptor.sol","id":554,"nodeType":"ImportDirective","scope":621,"sourceUnit":29,"src":"755:34:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":620,"linearizedBaseContracts":[620],"name":"IVotingEscrow","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IVotingEscrow.Point","id":563,"members":[{"constant":false,"id":556,"mutability":"mutable","name":"bias","nodeType":"VariableDeclaration","scope":563,"src":"1022:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":555,"name":"int128","nodeType":"ElementaryTypeName","src":"1022:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":558,"mutability":"mutable","name":"slope","nodeType":"VariableDeclaration","scope":563,"src":"1043:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":557,"name":"int128","nodeType":"ElementaryTypeName","src":"1043:6:8","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"},{"constant":false,"id":560,"mutability":"mutable","name":"ts","nodeType":"VariableDeclaration","scope":563,"src":"1083:10:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":562,"mutability":"mutable","name":"blk","nodeType":"VariableDeclaration","scope":563,"src":"1103:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":561,"name":"uint256","nodeType":"ElementaryTypeName","src":"1103:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Point","nodeType":"StructDefinition","scope":620,"src":"999:131:8","visibility":"public"},{"functionSelector":"900cf0cf","id":568,"implemented":false,"kind":"function","modifiers":[],"name":"epoch","nodeType":"FunctionDefinition","parameters":{"id":564,"nodeType":"ParameterList","parameters":[],"src":"1150:2:8"},"returnParameters":{"id":567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":568,"src":"1176:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":565,"name":"uint256","nodeType":"ElementaryTypeName","src":"1176:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1175:9:8"},"scope":620,"src":"1136:49:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bd85b039","id":575,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":570,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":575,"src":"1212:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":569,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1211:19:8"},"returnParameters":{"id":574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":573,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":575,"src":"1254:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":572,"name":"uint256","nodeType":"ElementaryTypeName","src":"1254:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1253:9:8"},"scope":620,"src":"1191:72:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"010ae757","id":582,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_epoch","nodeType":"FunctionDefinition","parameters":{"id":578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":577,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":582,"src":"1295:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":576,"name":"address","nodeType":"ElementaryTypeName","src":"1295:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1294:14:8"},"returnParameters":{"id":581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":580,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":582,"src":"1332:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":579,"name":"uint256","nodeType":"ElementaryTypeName","src":"1332:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1331:9:8"},"scope":620,"src":"1269:72:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d1febfb9","id":589,"implemented":false,"kind":"function","modifiers":[],"name":"point_history","nodeType":"FunctionDefinition","parameters":{"id":585,"nodeType":"ParameterList","parameters":[{"constant":false,"id":584,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":589,"src":"1370:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":583,"name":"uint256","nodeType":"ElementaryTypeName","src":"1370:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1369:19:8"},"returnParameters":{"id":588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":587,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":589,"src":"1412:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$563_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":586,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":563,"src":"1412:5:8","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$563_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1411:14:8"},"scope":620,"src":"1347:79:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"28d09d47","id":598,"implemented":false,"kind":"function","modifiers":[],"name":"user_point_history","nodeType":"FunctionDefinition","parameters":{"id":594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":598,"src":"1460:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"1460:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":593,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","scope":598,"src":"1474:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":592,"name":"uint256","nodeType":"ElementaryTypeName","src":"1474:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1459:33:8"},"returnParameters":{"id":597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":598,"src":"1516:12:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$563_memory_ptr","typeString":"struct IVotingEscrow.Point"},"typeName":{"id":595,"name":"Point","nodeType":"UserDefinedTypeName","referencedDeclaration":563,"src":"1516:5:8","typeDescriptions":{"typeIdentifier":"t_struct$_Point_$563_storage_ptr","typeString":"struct IVotingEscrow.Point"}},"visibility":"internal"}],"src":"1515:14:8"},"scope":620,"src":"1432:98:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c2c4c5c1","id":601,"implemented":false,"kind":"function","modifiers":[],"name":"checkpoint","nodeType":"FunctionDefinition","parameters":{"id":599,"nodeType":"ParameterList","parameters":[],"src":"1555:2:8"},"returnParameters":{"id":600,"nodeType":"ParameterList","parameters":[],"src":"1566:0:8"},"scope":620,"src":"1536:31:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f851a440","id":606,"implemented":false,"kind":"function","modifiers":[],"name":"admin","nodeType":"FunctionDefinition","parameters":{"id":602,"nodeType":"ParameterList","parameters":[],"src":"1587:2:8"},"returnParameters":{"id":605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":604,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":606,"src":"1613:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"},"typeName":{"id":603,"name":"IAuthorizerAdaptor","nodeType":"UserDefinedTypeName","referencedDeclaration":28,"src":"1613:18:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizerAdaptor_$28","typeString":"contract IAuthorizerAdaptor"}},"visibility":"internal"}],"src":"1612:20:8"},"scope":620,"src":"1573:60:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7175d4f7","id":611,"implemented":false,"kind":"function","modifiers":[],"name":"smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":607,"nodeType":"ParameterList","parameters":[],"src":"1668:2:8"},"returnParameters":{"id":610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":611,"src":"1694:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"1694:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1693:9:8"},"scope":620,"src":"1639:64:8","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"57f901e2","id":616,"implemented":false,"kind":"function","modifiers":[],"name":"commit_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":613,"mutability":"mutable","name":"newSmartWalletChecker","nodeType":"VariableDeclaration","scope":616,"src":"1746:29:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":612,"name":"address","nodeType":"ElementaryTypeName","src":"1746:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1745:31:8"},"returnParameters":{"id":615,"nodeType":"ParameterList","parameters":[],"src":"1785:0:8"},"scope":620,"src":"1709:77:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8e5b490f","id":619,"implemented":false,"kind":"function","modifiers":[],"name":"apply_smart_wallet_checker","nodeType":"FunctionDefinition","parameters":{"id":617,"nodeType":"ParameterList","parameters":[],"src":"1827:2:8"},"returnParameters":{"id":618,"nodeType":"ParameterList","parameters":[],"src":"1838:0:8"},"scope":620,"src":"1792:47:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":621,"src":"969:872:8"}],"src":"688:1154:8"},"id":8},"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol","exportedSymbols":{"IButtonWrapper":[759]},"id":760,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":622,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:9"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":759,"linearizedBaseContracts":[759],"name":"IButtonWrapper","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":623,"nodeType":"StructuredDocumentation","src":"1229:234:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens.\n @param amount The amount of wrapper tokens to mint.\n @return The amount of underlying tokens deposited."},"functionSelector":"a0712d68","id":630,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":625,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":630,"src":"1482:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":624,"name":"uint256","nodeType":"ElementaryTypeName","src":"1482:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1481:16:9"},"returnParameters":{"id":629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":628,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":630,"src":"1516:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":627,"name":"uint256","nodeType":"ElementaryTypeName","src":"1516:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1515:9:9"},"scope":759,"src":"1468:57:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":631,"nodeType":"StructuredDocumentation","src":"1531:306:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param amount The amount of wrapper tokens to mint.\n @return The amount of underlying tokens deposited."},"functionSelector":"da1919b3","id":640,"implemented":false,"kind":"function","modifiers":[],"name":"mintFor","nodeType":"FunctionDefinition","parameters":{"id":636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":633,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":640,"src":"1859:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":632,"name":"address","nodeType":"ElementaryTypeName","src":"1859:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":635,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":640,"src":"1871:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1871:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1858:28:9"},"returnParameters":{"id":639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":638,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":640,"src":"1905:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":637,"name":"uint256","nodeType":"ElementaryTypeName","src":"1905:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1904:9:9"},"scope":759,"src":"1842:72:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":641,"nodeType":"StructuredDocumentation","src":"1920:227:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param amount The amount of wrapper tokens to burn.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"42966c68","id":648,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":644,"nodeType":"ParameterList","parameters":[{"constant":false,"id":643,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":648,"src":"2166:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":642,"name":"uint256","nodeType":"ElementaryTypeName","src":"2166:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2165:16:9"},"returnParameters":{"id":647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":646,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":648,"src":"2200:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2199:9:9"},"scope":759,"src":"2152:57:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":649,"nodeType":"StructuredDocumentation","src":"2215:294:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param amount The amount of wrapper tokens to burn.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"ea785a5e","id":658,"implemented":false,"kind":"function","modifiers":[],"name":"burnTo","nodeType":"FunctionDefinition","parameters":{"id":654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":651,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":658,"src":"2530:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":650,"name":"address","nodeType":"ElementaryTypeName","src":"2530:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":653,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":658,"src":"2542:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":652,"name":"uint256","nodeType":"ElementaryTypeName","src":"2542:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2529:28:9"},"returnParameters":{"id":657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":656,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":658,"src":"2576:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":655,"name":"uint256","nodeType":"ElementaryTypeName","src":"2576:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2575:9:9"},"scope":759,"src":"2514:71:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":659,"nodeType":"StructuredDocumentation","src":"2591:171:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"9975038c","id":664,"implemented":false,"kind":"function","modifiers":[],"name":"burnAll","nodeType":"FunctionDefinition","parameters":{"id":660,"nodeType":"ParameterList","parameters":[],"src":"2783:2:9"},"returnParameters":{"id":663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":662,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":664,"src":"2804:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":661,"name":"uint256","nodeType":"ElementaryTypeName","src":"2804:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2803:9:9"},"scope":759,"src":"2767:46:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":665,"nodeType":"StructuredDocumentation","src":"2819:214:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param to The beneficiary account.\n @return The amount of underlying tokens withdrawn."},"functionSelector":"a4fa9568","id":672,"implemented":false,"kind":"function","modifiers":[],"name":"burnAllTo","nodeType":"FunctionDefinition","parameters":{"id":668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":667,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":672,"src":"3057:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":666,"name":"address","nodeType":"ElementaryTypeName","src":"3057:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3056:12:9"},"returnParameters":{"id":671,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":672,"src":"3087:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":669,"name":"uint256","nodeType":"ElementaryTypeName","src":"3087:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3086:9:9"},"scope":759,"src":"3038:58:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":673,"nodeType":"StructuredDocumentation","src":"3102:262:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param uAmount The amount of underlying tokens to deposit.\n @return The amount of wrapper tokens mint."},"functionSelector":"b6b55f25","id":680,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":676,"nodeType":"ParameterList","parameters":[{"constant":false,"id":675,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":680,"src":"3386:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":674,"name":"uint256","nodeType":"ElementaryTypeName","src":"3386:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3385:17:9"},"returnParameters":{"id":679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":680,"src":"3421:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":677,"name":"uint256","nodeType":"ElementaryTypeName","src":"3421:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3420:9:9"},"scope":759,"src":"3369:61:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":681,"nodeType":"StructuredDocumentation","src":"3436:305:9","text":"@notice Transfers underlying tokens from {msg.sender} to the contract and\n mints wrapper tokens to the specified beneficiary.\n @param to The beneficiary account.\n @param uAmount The amount of underlying tokens to deposit.\n @return The amount of wrapper tokens mint."},"functionSelector":"2f4f21e2","id":690,"implemented":false,"kind":"function","modifiers":[],"name":"depositFor","nodeType":"FunctionDefinition","parameters":{"id":686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":683,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":690,"src":"3766:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":682,"name":"address","nodeType":"ElementaryTypeName","src":"3766:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":685,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":690,"src":"3778:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":684,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3765:29:9"},"returnParameters":{"id":689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":688,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":690,"src":"3813:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"3813:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3812:9:9"},"scope":759,"src":"3746:76:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":691,"nodeType":"StructuredDocumentation","src":"3828:228:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param uAmount The amount of underlying tokens to withdraw.\n @return The amount of wrapper tokens burnt."},"functionSelector":"2e1a7d4d","id":698,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":693,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":698,"src":"4079:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":692,"name":"uint256","nodeType":"ElementaryTypeName","src":"4079:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4078:17:9"},"returnParameters":{"id":697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":696,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":698,"src":"4114:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":695,"name":"uint256","nodeType":"ElementaryTypeName","src":"4114:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4113:9:9"},"scope":759,"src":"4061:62:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":699,"nodeType":"StructuredDocumentation","src":"4129:300:9","text":"@notice Burns wrapper tokens from {msg.sender} and transfers\n the underlying tokens back to the specified beneficiary.\n @param to The beneficiary account.\n @param uAmount The amount of underlying tokens to withdraw.\n @return The amount of wrapper tokens burnt."},"functionSelector":"205c2878","id":708,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawTo","nodeType":"FunctionDefinition","parameters":{"id":704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":708,"src":"4454:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":700,"name":"address","nodeType":"ElementaryTypeName","src":"4454:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":703,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":708,"src":"4466:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":702,"name":"uint256","nodeType":"ElementaryTypeName","src":"4466:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4453:29:9"},"returnParameters":{"id":707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":706,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":708,"src":"4501:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":705,"name":"uint256","nodeType":"ElementaryTypeName","src":"4501:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4500:9:9"},"scope":759,"src":"4434:76:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":709,"nodeType":"StructuredDocumentation","src":"4516:164:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @return The amount of wrapper tokens burnt."},"functionSelector":"853828b6","id":714,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAll","nodeType":"FunctionDefinition","parameters":{"id":710,"nodeType":"ParameterList","parameters":[],"src":"4705:2:9"},"returnParameters":{"id":713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":712,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":714,"src":"4726:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":711,"name":"uint256","nodeType":"ElementaryTypeName","src":"4726:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4725:9:9"},"scope":759,"src":"4685:50:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":715,"nodeType":"StructuredDocumentation","src":"4741:207:9","text":"@notice Burns all wrapper tokens from {msg.sender} and transfers\n the underlying tokens back.\n @param to The beneficiary account.\n @return The amount of wrapper tokens burnt."},"functionSelector":"ca9add8f","id":722,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawAllTo","nodeType":"FunctionDefinition","parameters":{"id":718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":717,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":722,"src":"4976:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":716,"name":"address","nodeType":"ElementaryTypeName","src":"4976:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4975:12:9"},"returnParameters":{"id":721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":720,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":722,"src":"5006:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":719,"name":"uint256","nodeType":"ElementaryTypeName","src":"5006:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5005:9:9"},"scope":759,"src":"4953:62:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":723,"nodeType":"StructuredDocumentation","src":"5137:48:9","text":"@return The address of the underlying token."},"functionSelector":"6f307dc3","id":728,"implemented":false,"kind":"function","modifiers":[],"name":"underlying","nodeType":"FunctionDefinition","parameters":{"id":724,"nodeType":"ParameterList","parameters":[],"src":"5209:2:9"},"returnParameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":726,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":728,"src":"5235:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"5235:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5234:9:9"},"scope":759,"src":"5190:54:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":729,"nodeType":"StructuredDocumentation","src":"5250:69:9","text":"@return The total underlying tokens held by the wrapper contract."},"functionSelector":"c70920bc","id":734,"implemented":false,"kind":"function","modifiers":[],"name":"totalUnderlying","nodeType":"FunctionDefinition","parameters":{"id":730,"nodeType":"ParameterList","parameters":[],"src":"5348:2:9"},"returnParameters":{"id":733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":732,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":734,"src":"5374:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":731,"name":"uint256","nodeType":"ElementaryTypeName","src":"5374:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5373:9:9"},"scope":759,"src":"5324:59:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":735,"nodeType":"StructuredDocumentation","src":"5389:96:9","text":"@param who The account address.\n @return The underlying token balance of the account."},"functionSelector":"3af9e669","id":742,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOfUnderlying","nodeType":"FunctionDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":737,"mutability":"mutable","name":"who","nodeType":"VariableDeclaration","scope":742,"src":"5519:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":736,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5518:13:9"},"returnParameters":{"id":741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":740,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":742,"src":"5555:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":739,"name":"uint256","nodeType":"ElementaryTypeName","src":"5555:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5554:9:9"},"scope":759,"src":"5490:74:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":743,"nodeType":"StructuredDocumentation","src":"5570:110:9","text":"@param uAmount The amount of underlying tokens.\n @return The amount of wrapper tokens exchangeable."},"functionSelector":"ed0287c0","id":750,"implemented":false,"kind":"function","modifiers":[],"name":"underlyingToWrapper","nodeType":"FunctionDefinition","parameters":{"id":746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":745,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":750,"src":"5714:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":744,"name":"uint256","nodeType":"ElementaryTypeName","src":"5714:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5713:17:9"},"returnParameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":748,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":750,"src":"5754:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":747,"name":"uint256","nodeType":"ElementaryTypeName","src":"5754:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5753:9:9"},"scope":759,"src":"5685:78:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":751,"nodeType":"StructuredDocumentation","src":"5769:109:9","text":"@param amount The amount of wrapper tokens.\n @return The amount of underlying tokens exchangeable."},"functionSelector":"aab3b7db","id":758,"implemented":false,"kind":"function","modifiers":[],"name":"wrapperToUnderlying","nodeType":"FunctionDefinition","parameters":{"id":754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":753,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":758,"src":"5912:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":752,"name":"uint256","nodeType":"ElementaryTypeName","src":"5912:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5911:16:9"},"returnParameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":758,"src":"5951:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":755,"name":"uint256","nodeType":"ElementaryTypeName","src":"5951:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5950:9:9"},"scope":759,"src":"5883:77:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":760,"src":"1081:4881:9"}],"src":"688:5275:9"},"id":9},"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol","exportedSymbols":{"IReaperTokenVault":[795]},"id":796,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":761,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:10"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":762,"nodeType":"ImportDirective","scope":796,"sourceUnit":2091,"src":"721:51:10","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":763,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1232:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":764,"nodeType":"InheritanceSpecifier","src":"1232:6:10"}],"contractDependencies":[2090],"contractKind":"interface","fullyImplemented":false,"id":795,"linearizedBaseContracts":[795,2090],"name":"IReaperTokenVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":765,"nodeType":"StructuredDocumentation","src":"1245:87:10","text":" @dev returns the address of the vault's underlying asset (mainToken)"},"functionSelector":"fc0c546a","id":770,"implemented":false,"kind":"function","modifiers":[],"name":"token","nodeType":"FunctionDefinition","parameters":{"id":766,"nodeType":"ParameterList","parameters":[],"src":"1351:2:10"},"returnParameters":{"id":769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":768,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":770,"src":"1377:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":767,"name":"address","nodeType":"ElementaryTypeName","src":"1377:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1376:9:10"},"scope":795,"src":"1337:49:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":771,"nodeType":"StructuredDocumentation","src":"1392:126:10","text":" @dev returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18"},"functionSelector":"77c7b8fc","id":776,"implemented":false,"kind":"function","modifiers":[],"name":"getPricePerFullShare","nodeType":"FunctionDefinition","parameters":{"id":772,"nodeType":"ParameterList","parameters":[],"src":"1552:2:10"},"returnParameters":{"id":775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":774,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":776,"src":"1578:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":773,"name":"uint256","nodeType":"ElementaryTypeName","src":"1578:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1577:9:10"},"scope":795,"src":"1523:64:10","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":777,"nodeType":"StructuredDocumentation","src":"1593:227:10","text":" @notice Deposits `_amount` `token`, issuing shares to the caller.\n If Panic is activated, deposits will not be accepted and this call will fail.\n @param _amount The quantity of tokens to deposit.*"},"functionSelector":"b6b55f25","id":782,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"_amount","nodeType":"VariableDeclaration","scope":782,"src":"1842:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1842:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1841:17:10"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[],"src":"1867:0:10"},"scope":795,"src":"1825:43:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":783,"nodeType":"StructuredDocumentation","src":"1874:154:10","text":" @notice Withdraws the calling account's tokens from this Vault,\n redeeming amount `_shares` for an appropriate amount of tokens.*"},"functionSelector":"2e1a7d4d","id":788,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":785,"mutability":"mutable","name":"_shares","nodeType":"VariableDeclaration","scope":788,"src":"2051:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":784,"name":"uint256","nodeType":"ElementaryTypeName","src":"2051:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2050:17:10"},"returnParameters":{"id":787,"nodeType":"ParameterList","parameters":[],"src":"2076:0:10"},"scope":795,"src":"2033:44:10","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":789,"nodeType":"StructuredDocumentation","src":"2083:145:10","text":" @dev returns the number of decimals for this vault token.\n For reaper single-strat vaults, the decimals are fixed to 18."},"functionSelector":"313ce567","id":794,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":790,"nodeType":"ParameterList","parameters":[],"src":"2250:2:10"},"returnParameters":{"id":793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":794,"src":"2276:5:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":791,"name":"uint8","nodeType":"ElementaryTypeName","src":"2276:5:10","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2275:7:10"},"scope":795,"src":"2233:50:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":796,"src":"1201:1084:10"}],"src":"688:1598:10"},"id":10},"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol","exportedSymbols":{"IUnbuttonToken":[804]},"id":805,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":797,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:11"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":798,"nodeType":"ImportDirective","scope":805,"sourceUnit":2091,"src":"721:51:11","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol","file":"./IButtonWrapper.sol","id":799,"nodeType":"ImportDirective","scope":805,"sourceUnit":760,"src":"774:30:11","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":800,"name":"IButtonWrapper","nodeType":"UserDefinedTypeName","referencedDeclaration":759,"src":"956:14:11","typeDescriptions":{"typeIdentifier":"t_contract$_IButtonWrapper_$759","typeString":"contract IButtonWrapper"}},"id":801,"nodeType":"InheritanceSpecifier","src":"956:14:11"},{"baseName":{"id":802,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"972:6:11","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":803,"nodeType":"InheritanceSpecifier","src":"972:6:11"}],"contractDependencies":[759,2090],"contractKind":"interface","fullyImplemented":false,"id":804,"linearizedBaseContracts":[804,2090,759],"name":"IUnbuttonToken","nodeType":"ContractDefinition","nodes":[],"scope":805,"src":"928:107:11"}],"src":"688:348:11"},"id":11},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","exportedSymbols":{"StablePoolUserData":[970]},"id":971,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":806,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":970,"linearizedBaseContracts":[970],"name":"StablePoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StablePoolUserData.JoinKind","id":810,"members":[{"id":807,"name":"INIT","nodeType":"EnumValue","src":"770:4:12"},{"id":808,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"776:27:12"},{"id":809,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"805:26:12"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"754:79:12"},{"canonicalName":"StablePoolUserData.ExitKind","id":813,"members":[{"id":811,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"854:30:12"},{"id":812,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"886:27:12"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"838:77:12"},{"body":{"id":827,"nodeType":"Block","src":"991:52:12","statements":[{"expression":{"arguments":[{"id":822,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":815,"src":"1019:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":823,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"1026:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$810_$","typeString":"type(enum StablePoolUserData.JoinKind)"}}],"id":824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1025:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$810_$","typeString":"type(enum StablePoolUserData.JoinKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_JoinKind_$810_$","typeString":"type(enum StablePoolUserData.JoinKind)"}],"expression":{"id":820,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1008:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1008:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1008:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$810","typeString":"enum StablePoolUserData.JoinKind"}},"functionReturnParameters":819,"id":826,"nodeType":"Return","src":"1001:35:12"}]},"id":828,"implemented":true,"kind":"function","modifiers":[],"name":"joinKind","nodeType":"FunctionDefinition","parameters":{"id":816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":815,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":828,"src":"939:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":814,"name":"bytes","nodeType":"ElementaryTypeName","src":"939:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"938:19:12"},"returnParameters":{"id":819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":818,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":828,"src":"981:8:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$810","typeString":"enum StablePoolUserData.JoinKind"},"typeName":{"id":817,"name":"JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":810,"src":"981:8:12","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$810","typeString":"enum StablePoolUserData.JoinKind"}},"visibility":"internal"}],"src":"980:10:12"},"scope":970,"src":"921:122:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":842,"nodeType":"Block","src":"1119:52:12","statements":[{"expression":{"arguments":[{"id":837,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":830,"src":"1147:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":838,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"1154:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$813_$","typeString":"type(enum StablePoolUserData.ExitKind)"}}],"id":839,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1153:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$813_$","typeString":"type(enum StablePoolUserData.ExitKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_ExitKind_$813_$","typeString":"type(enum StablePoolUserData.ExitKind)"}],"expression":{"id":835,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1136:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1136:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1136:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$813","typeString":"enum StablePoolUserData.ExitKind"}},"functionReturnParameters":834,"id":841,"nodeType":"Return","src":"1129:35:12"}]},"id":843,"implemented":true,"kind":"function","modifiers":[],"name":"exitKind","nodeType":"FunctionDefinition","parameters":{"id":831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":830,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":843,"src":"1067:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":829,"name":"bytes","nodeType":"ElementaryTypeName","src":"1067:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1066:19:12"},"returnParameters":{"id":834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":833,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":843,"src":"1109:8:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$813","typeString":"enum StablePoolUserData.ExitKind"},"typeName":{"id":832,"name":"ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":813,"src":"1109:8:12","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$813","typeString":"enum StablePoolUserData.ExitKind"}},"visibility":"internal"}],"src":"1108:10:12"},"scope":970,"src":"1049:122:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":864,"nodeType":"Block","src":"1287:72:12","statements":[{"expression":{"id":862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":851,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"1300:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":852,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1297:13:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":855,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":845,"src":"1324:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":856,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"1331:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$810_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"baseExpression":{"id":858,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1341:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":857,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:12","typeDescriptions":{}}},"id":859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1341:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":860,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1330:21:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$810_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$810_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory))"}],"expression":{"id":853,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1313:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1313:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1313:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$810_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256[] memory)"}},"src":"1297:55:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":863,"nodeType":"ExpressionStatement","src":"1297:55:12"}]},"id":865,"implemented":true,"kind":"function","modifiers":[],"name":"initialAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":865,"src":"1217:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":844,"name":"bytes","nodeType":"ElementaryTypeName","src":"1217:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1216:19:12"},"returnParameters":{"id":850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":849,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":865,"src":"1259:26:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":847,"name":"uint256","nodeType":"ElementaryTypeName","src":"1259:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":848,"nodeType":"ArrayTypeName","src":"1259:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1258:28:12"},"scope":970,"src":"1191:168:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":891,"nodeType":"Block","src":"1520:98:12","statements":[{"expression":{"id":889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":875,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"1533:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":876,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"1544:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":877,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1530:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":880,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"1574:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":881,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"1581:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$810_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"baseExpression":{"id":883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1591:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1591:7:12","typeDescriptions":{}}},"id":884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1591:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":886,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1602:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":885,"name":"uint256","nodeType":"ElementaryTypeName","src":"1602:7:12","typeDescriptions":{}}}],"id":887,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1580:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$810_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$810_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":878,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1563:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1563:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:48:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$810_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256[] memory,uint256)"}},"src":"1530:81:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":890,"nodeType":"ExpressionStatement","src":"1530:81:12"}]},"id":892,"implemented":true,"kind":"function","modifiers":[],"name":"exactTokensInForBptOut","nodeType":"FunctionDefinition","parameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":892,"src":"1397:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":866,"name":"bytes","nodeType":"ElementaryTypeName","src":"1397:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1396:19:12"},"returnParameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":871,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":892,"src":"1463:26:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":869,"name":"uint256","nodeType":"ElementaryTypeName","src":"1463:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":870,"nodeType":"ArrayTypeName","src":"1463:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":892,"src":"1491:23:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":872,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1462:53:12"},"scope":970,"src":"1365:253:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":916,"nodeType":"Block","src":"1739:94:12","statements":[{"expression":{"id":914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":901,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":897,"src":"1752:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":902,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"1766:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":903,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1749:28:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":906,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":894,"src":"1791:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":907,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"1798:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$810_$","typeString":"type(enum StablePoolUserData.JoinKind)"}},{"id":909,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1808:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":908,"name":"uint256","nodeType":"ElementaryTypeName","src":"1808:7:12","typeDescriptions":{}}},{"id":911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1817:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"1817:7:12","typeDescriptions":{}}}],"id":912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1797:28:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$810_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$810_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.JoinKind),type(uint256),type(uint256))"}],"expression":{"id":904,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1780:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1780:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1780:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$810_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.JoinKind,uint256,uint256)"}},"src":"1749:77:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":915,"nodeType":"ExpressionStatement","src":"1749:77:12"}]},"id":917,"implemented":true,"kind":"function","modifiers":[],"name":"tokenInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":894,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":917,"src":"1655:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":893,"name":"bytes","nodeType":"ElementaryTypeName","src":"1655:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1654:19:12"},"returnParameters":{"id":900,"nodeType":"ParameterList","parameters":[{"constant":false,"id":897,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":917,"src":"1697:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":896,"name":"uint256","nodeType":"ElementaryTypeName","src":"1697:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":899,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":917,"src":"1719:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":898,"name":"uint256","nodeType":"ElementaryTypeName","src":"1719:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1696:42:12"},"scope":970,"src":"1624:209:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":941,"nodeType":"Block","src":"1967:93:12","statements":[{"expression":{"id":939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":926,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":922,"src":"1980:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":927,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":924,"src":"1993:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":928,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1977:27:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":931,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":919,"src":"2018:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":932,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2025:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$813_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"id":934,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2035:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":933,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:12","typeDescriptions":{}}},{"id":936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2044:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":935,"name":"uint256","nodeType":"ElementaryTypeName","src":"2044:7:12","typeDescriptions":{}}}],"id":937,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2024:28:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$813_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$813_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256),type(uint256))"}],"expression":{"id":929,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2007:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2007:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2007:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$813_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256,uint256)"}},"src":"1977:76:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":940,"nodeType":"ExpressionStatement","src":"1977:76:12"}]},"id":942,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokenOut","nodeType":"FunctionDefinition","parameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":919,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":942,"src":"1884:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":918,"name":"bytes","nodeType":"ElementaryTypeName","src":"1884:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1883:19:12"},"returnParameters":{"id":925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":922,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":942,"src":"1926:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":924,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":942,"src":"1947:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":923,"name":"uint256","nodeType":"ElementaryTypeName","src":"1947:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1925:41:12"},"scope":970,"src":"1853:207:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":968,"nodeType":"Block","src":"2221:98:12","statements":[{"expression":{"id":966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":952,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":948,"src":"2234:10:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":953,"name":"maxBPTAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":950,"src":"2246:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":954,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2231:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":957,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"2275:4:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":958,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":813,"src":"2282:8:12","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$813_$","typeString":"type(enum StablePoolUserData.ExitKind)"}},{"baseExpression":{"id":960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2292:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":959,"name":"uint256","nodeType":"ElementaryTypeName","src":"2292:7:12","typeDescriptions":{}}},"id":961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2292:9:12","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":963,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2303:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":962,"name":"uint256","nodeType":"ElementaryTypeName","src":"2303:7:12","typeDescriptions":{}}}],"id":964,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2281:30:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$813_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$813_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum StablePoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":955,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2264:3:12","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2264:10:12","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2264:48:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$813_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum StablePoolUserData.ExitKind,uint256[] memory,uint256)"}},"src":"2231:81:12","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":967,"nodeType":"ExpressionStatement","src":"2231:81:12"}]},"id":969,"implemented":true,"kind":"function","modifiers":[],"name":"bptInForExactTokensOut","nodeType":"FunctionDefinition","parameters":{"id":945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":944,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":969,"src":"2098:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":943,"name":"bytes","nodeType":"ElementaryTypeName","src":"2098:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2097:19:12"},"returnParameters":{"id":951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":948,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":969,"src":"2164:27:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":946,"name":"uint256","nodeType":"ElementaryTypeName","src":"2164:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":947,"nodeType":"ArrayTypeName","src":"2164:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":950,"mutability":"mutable","name":"maxBPTAmountIn","nodeType":"VariableDeclaration","scope":969,"src":"2193:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":949,"name":"uint256","nodeType":"ElementaryTypeName","src":"2193:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2163:53:12"},"scope":970,"src":"2066:253:12","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":971,"src":"721:1600:12"}],"src":"688:1634:12"},"id":12},"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol","exportedSymbols":{"BasePoolUserData":[1020]},"id":1021,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":972,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:13"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1020,"linearizedBaseContracts":[1020],"name":"BasePoolUserData","nodeType":"ContractDefinition","nodes":[{"constant":true,"functionSelector":"09564cb1","id":975,"mutability":"constant","name":"RECOVERY_MODE_EXIT_KIND","nodeType":"VariableDeclaration","scope":1020,"src":"963:51:13","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":973,"name":"uint8","nodeType":"ElementaryTypeName","src":"963:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"323535","id":974,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1011:3:13","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"visibility":"public"},{"body":{"id":997,"nodeType":"Block","src":"1154:163:13","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":982,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"1239:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1239:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1253:1:13","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1239:15:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":988,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"1269:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":990,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1276:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":989,"name":"uint8","nodeType":"ElementaryTypeName","src":"1276:5:13","typeDescriptions":{}}}],"id":991,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1275:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"expression":{"id":986,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1258:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1258:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1258:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":993,"name":"RECOVERY_MODE_EXIT_KIND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":975,"src":"1287:23:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1258:52:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1239:71:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":981,"id":996,"nodeType":"Return","src":"1232:78:13"}]},"id":998,"implemented":true,"kind":"function","modifiers":[],"name":"isRecoveryModeExitKind","nodeType":"FunctionDefinition","parameters":{"id":978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":977,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":998,"src":"1106:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":976,"name":"bytes","nodeType":"ElementaryTypeName","src":"1106:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1105:19:13"},"returnParameters":{"id":981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":980,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":998,"src":"1148:4:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":979,"name":"bool","nodeType":"ElementaryTypeName","src":"1148:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1147:6:13"},"scope":1020,"src":"1074:243:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1018,"nodeType":"Block","src":"1461:69:13","statements":[{"expression":{"id":1016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1005,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1003,"src":"1474:11:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1006,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1471:15:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1009,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"1500:4:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1011,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1507:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1010,"name":"uint8","nodeType":"ElementaryTypeName","src":"1507:5:13","typeDescriptions":{}}},{"id":1013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1514:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1514:7:13","typeDescriptions":{}}}],"id":1014,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1506:16:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_uint8_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint8),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_uint8_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(uint8),type(uint256))"}],"expression":{"id":1007,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1489:3:13","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1489:10:13","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1489:34:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint8_$_t_uint256_$","typeString":"tuple(uint8,uint256)"}},"src":"1471:52:13","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1017,"nodeType":"ExpressionStatement","src":"1471:52:13"}]},"id":1019,"implemented":true,"kind":"function","modifiers":[],"name":"recoveryModeExit","nodeType":"FunctionDefinition","parameters":{"id":1001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1000,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1019,"src":"1398:17:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":999,"name":"bytes","nodeType":"ElementaryTypeName","src":"1398:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1397:19:13"},"returnParameters":{"id":1004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1003,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":1019,"src":"1440:19:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1002,"name":"uint256","nodeType":"ElementaryTypeName","src":"1440:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1439:21:13"},"scope":1020,"src":"1372:158:13","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1021,"src":"721:811:13"}],"src":"688:845:13"},"id":13},"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","exportedSymbols":{"IBasePoolFactory":[1045]},"id":1046,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1022,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:14"},{"id":1023,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:14"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":1024,"nodeType":"ImportDirective","scope":1046,"sourceUnit":1881,"src":"755:55:14","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1025,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1880,"src":"842:15:14","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1880","typeString":"contract IAuthentication"}},"id":1026,"nodeType":"InheritanceSpecifier","src":"842:15:14"}],"contractDependencies":[1880],"contractKind":"interface","fullyImplemented":false,"id":1045,"linearizedBaseContracts":[1045,1880],"name":"IBasePoolFactory","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1027,"nodeType":"StructuredDocumentation","src":"864:75:14","text":" @dev Returns true if `pool` was created by this factory."},"functionSelector":"6634b753","id":1034,"implemented":false,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nodeType":"FunctionDefinition","parameters":{"id":1030,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1029,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":1034,"src":"971:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1028,"name":"address","nodeType":"ElementaryTypeName","src":"971:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"970:14:14"},"returnParameters":{"id":1033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1032,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1034,"src":"1008:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1031,"name":"bool","nodeType":"ElementaryTypeName","src":"1008:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1007:6:14"},"scope":1045,"src":"944:70:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1035,"nodeType":"StructuredDocumentation","src":"1020:76:14","text":" @dev Check whether the derived factory has been disabled."},"functionSelector":"6c57f5a9","id":1040,"implemented":false,"kind":"function","modifiers":[],"name":"isDisabled","nodeType":"FunctionDefinition","parameters":{"id":1036,"nodeType":"ParameterList","parameters":[],"src":"1120:2:14"},"returnParameters":{"id":1039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1038,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1040,"src":"1146:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1037,"name":"bool","nodeType":"ElementaryTypeName","src":"1146:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1145:6:14"},"scope":1045,"src":"1101:51:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1041,"nodeType":"StructuredDocumentation","src":"1158:182:14","text":" @dev Disable the factory, preventing the creation of more pools. Already existing pools are unaffected.\n Once a factory is disabled, it cannot be re-enabled."},"functionSelector":"2f2770db","id":1044,"implemented":false,"kind":"function","modifiers":[],"name":"disable","nodeType":"FunctionDefinition","parameters":{"id":1042,"nodeType":"ParameterList","parameters":[],"src":"1361:2:14"},"returnParameters":{"id":1043,"nodeType":"ParameterList","parameters":[],"src":"1372:0:14"},"scope":1045,"src":"1345:28:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1046,"src":"812:563:14"}],"src":"688:688:14"},"id":14},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","exportedSymbols":{"IRateProvider":[1054]},"id":1055,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1047,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1054,"linearizedBaseContracts":[1054],"name":"IRateProvider","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"751:191:15","text":" @dev Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying\n token. The meaning of this rate depends on the context."},"functionSelector":"679aefce","id":1053,"implemented":false,"kind":"function","modifiers":[],"name":"getRate","nodeType":"FunctionDefinition","parameters":{"id":1049,"nodeType":"ParameterList","parameters":[],"src":"963:2:15"},"returnParameters":{"id":1052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1051,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1053,"src":"989:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"989:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"988:9:15"},"scope":1054,"src":"947:51:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1055,"src":"721:279:15"}],"src":"688:313:15"},"id":15},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","exportedSymbols":{"IRateProviderPool":[1066]},"id":1067,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1056,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:16"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","file":"./IRateProvider.sol","id":1057,"nodeType":"ImportDirective","scope":1067,"sourceUnit":1055,"src":"721:29:16","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1058,"nodeType":"StructuredDocumentation","src":"752:79:16","text":" @dev Interface for Pools that assign rate providers to their tokens."},"fullyImplemented":false,"id":1066,"linearizedBaseContracts":[1066],"name":"IRateProviderPool","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"866:155:16","text":" @dev Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider\n for that token."},"functionSelector":"238a2d59","id":1065,"implemented":false,"kind":"function","modifiers":[],"name":"getRateProviders","nodeType":"FunctionDefinition","parameters":{"id":1060,"nodeType":"ParameterList","parameters":[],"src":"1051:2:16"},"returnParameters":{"id":1064,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1063,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1065,"src":"1077:22:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":1061,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"1077:13:16","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":1062,"nodeType":"ArrayTypeName","src":"1077:15:16","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1076:24:16"},"scope":1066,"src":"1026:75:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1067,"src":"832:271:16"}],"src":"688:416:16"},"id":16},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","exportedSymbols":{"IRecoveryMode":[1089]},"id":1090,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1068,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:17"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1069,"nodeType":"StructuredDocumentation","src":"721:54:17","text":" @dev Interface for the RecoveryMode module."},"fullyImplemented":false,"id":1089,"linearizedBaseContracts":[1089],"name":"IRecoveryMode","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1070,"nodeType":"StructuredDocumentation","src":"806:70:17","text":" @dev Emitted when the Recovery Mode status changes."},"id":1074,"name":"RecoveryModeStateChanged","nodeType":"EventDefinition","parameters":{"id":1073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1072,"indexed":false,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":1074,"src":"912:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1071,"name":"bool","nodeType":"ElementaryTypeName","src":"912:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"911:14:17"},"src":"881:45:17"},{"documentation":{"id":1075,"nodeType":"StructuredDocumentation","src":"932:198:17","text":" @notice Enables Recovery Mode in the Pool, disabling protocol fee collection and allowing for safe proportional\n exits with low computational complexity and no dependencies."},"functionSelector":"54a844ba","id":1078,"implemented":false,"kind":"function","modifiers":[],"name":"enableRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":1076,"nodeType":"ParameterList","parameters":[],"src":"1162:2:17"},"returnParameters":{"id":1077,"nodeType":"ParameterList","parameters":[],"src":"1173:0:17"},"scope":1089,"src":"1135:39:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1079,"nodeType":"StructuredDocumentation","src":"1180:132:17","text":" @notice Disables Recovery Mode in the Pool, restoring protocol fee collection and disallowing proportional exits."},"functionSelector":"b7b814fc","id":1082,"implemented":false,"kind":"function","modifiers":[],"name":"disableRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":1080,"nodeType":"ParameterList","parameters":[],"src":"1345:2:17"},"returnParameters":{"id":1081,"nodeType":"ParameterList","parameters":[],"src":"1356:0:17"},"scope":1089,"src":"1317:40:17","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1083,"nodeType":"StructuredDocumentation","src":"1363:72:17","text":" @notice Returns true if the Pool is in Recovery Mode."},"functionSelector":"b35056b8","id":1088,"implemented":false,"kind":"function","modifiers":[],"name":"inRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":1084,"nodeType":"ParameterList","parameters":[],"src":"1463:2:17"},"returnParameters":{"id":1087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1086,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1088,"src":"1489:4:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1085,"name":"bool","nodeType":"ElementaryTypeName","src":"1489:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1488:6:17"},"scope":1089,"src":"1440:55:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1090,"src":"776:721:17"}],"src":"688:810:17"},"id":17},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","exportedSymbols":{"WeightedPoolUserData":[1298]},"id":1299,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1091,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:18"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":1092,"nodeType":"ImportDirective","scope":1299,"sourceUnit":2091,"src":"721:51:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1298,"linearizedBaseContracts":[1298],"name":"WeightedPoolUserData","nodeType":"ContractDefinition","nodes":[{"canonicalName":"WeightedPoolUserData.JoinKind","id":1097,"members":[{"id":1093,"name":"INIT","nodeType":"EnumValue","src":"946:4:18"},{"id":1094,"name":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"EnumValue","src":"952:27:18"},{"id":1095,"name":"TOKEN_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"981:26:18"},{"id":1096,"name":"ALL_TOKENS_IN_FOR_EXACT_BPT_OUT","nodeType":"EnumValue","src":"1009:31:18"}],"name":"JoinKind","nodeType":"EnumDefinition","src":"930:112:18"},{"canonicalName":"WeightedPoolUserData.ExitKind","id":1101,"members":[{"id":1098,"name":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"EnumValue","src":"1063:30:18"},{"id":1099,"name":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"EnumValue","src":"1095:27:18"},{"id":1100,"name":"BPT_IN_FOR_EXACT_TOKENS_OUT","nodeType":"EnumValue","src":"1124:27:18"}],"name":"ExitKind","nodeType":"EnumDefinition","src":"1047:106:18"},{"body":{"id":1115,"nodeType":"Block","src":"1229:52:18","statements":[{"expression":{"arguments":[{"id":1110,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"1257:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1111,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"1264:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}}],"id":1112,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1263:10:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}],"expression":{"id":1108,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1246:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1109,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1246:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1246:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},"functionReturnParameters":1107,"id":1114,"nodeType":"Return","src":"1239:35:18"}]},"id":1116,"implemented":true,"kind":"function","modifiers":[],"name":"joinKind","nodeType":"FunctionDefinition","parameters":{"id":1104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1103,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1116,"src":"1177:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1102,"name":"bytes","nodeType":"ElementaryTypeName","src":"1177:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1176:19:18"},"returnParameters":{"id":1107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1106,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1116,"src":"1219:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"},"typeName":{"id":1105,"name":"JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":1097,"src":"1219:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},"visibility":"internal"}],"src":"1218:10:18"},"scope":1298,"src":"1159:122:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1130,"nodeType":"Block","src":"1357:52:18","statements":[{"expression":{"arguments":[{"id":1125,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1118,"src":"1385:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1126,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"1392:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}}],"id":1127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1391:10:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}],"expression":{"id":1123,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1374:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1374:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1374:28:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"functionReturnParameters":1122,"id":1129,"nodeType":"Return","src":"1367:35:18"}]},"id":1131,"implemented":true,"kind":"function","modifiers":[],"name":"exitKind","nodeType":"FunctionDefinition","parameters":{"id":1119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1118,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1131,"src":"1305:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1117,"name":"bytes","nodeType":"ElementaryTypeName","src":"1305:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1304:19:18"},"returnParameters":{"id":1122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1121,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1131,"src":"1347:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},"typeName":{"id":1120,"name":"ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":1101,"src":"1347:8:18","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"visibility":"internal"}],"src":"1346:10:18"},"scope":1298,"src":"1287:122:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1152,"nodeType":"Block","src":"1525:72:18","statements":[{"expression":{"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1139,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1137,"src":"1538:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":1140,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1535:13:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1143,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"1562:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1144,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"1569:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"baseExpression":{"id":1146,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1579:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1145,"name":"uint256","nodeType":"ElementaryTypeName","src":"1579:7:18","typeDescriptions":{}}},"id":1147,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1579:9:18","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":1148,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1568:21:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory))"}],"expression":{"id":1141,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1551:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1551:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1551:39:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$1097_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256[] memory)"}},"src":"1535:55:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1151,"nodeType":"ExpressionStatement","src":"1535:55:18"}]},"id":1153,"implemented":true,"kind":"function","modifiers":[],"name":"initialAmountsIn","nodeType":"FunctionDefinition","parameters":{"id":1134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1133,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1153,"src":"1455:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1132,"name":"bytes","nodeType":"ElementaryTypeName","src":"1455:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1454:19:18"},"returnParameters":{"id":1138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":1153,"src":"1497:26:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1135,"name":"uint256","nodeType":"ElementaryTypeName","src":"1497:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1136,"nodeType":"ArrayTypeName","src":"1497:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1496:28:18"},"scope":1298,"src":"1429:168:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1179,"nodeType":"Block","src":"1758:98:18","statements":[{"expression":{"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1163,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1159,"src":"1771:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1164,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1161,"src":"1782:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1165,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1768:30:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1168,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1155,"src":"1812:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1169,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"1819:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"baseExpression":{"id":1171,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1829:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1170,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:18","typeDescriptions":{}}},"id":1172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1829:9:18","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":1174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1840:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1173,"name":"uint256","nodeType":"ElementaryTypeName","src":"1840:7:18","typeDescriptions":{}}}],"id":1175,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1818:30:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":1166,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1801:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"1801:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1801:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$1097_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256[] memory,uint256)"}},"src":"1768:81:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1178,"nodeType":"ExpressionStatement","src":"1768:81:18"}]},"id":1180,"implemented":true,"kind":"function","modifiers":[],"name":"exactTokensInForBptOut","nodeType":"FunctionDefinition","parameters":{"id":1156,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1155,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1180,"src":"1635:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1154,"name":"bytes","nodeType":"ElementaryTypeName","src":"1635:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1634:19:18"},"returnParameters":{"id":1162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1159,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":1180,"src":"1701:26:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1157,"name":"uint256","nodeType":"ElementaryTypeName","src":"1701:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1158,"nodeType":"ArrayTypeName","src":"1701:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1161,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":1180,"src":"1729:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1160,"name":"uint256","nodeType":"ElementaryTypeName","src":"1729:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1700:53:18"},"scope":1298,"src":"1603:253:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1204,"nodeType":"Block","src":"1977:94:18","statements":[{"expression":{"id":1202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1189,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1185,"src":"1990:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1190,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1187,"src":"2004:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1191,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1987:28:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1194,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"2029:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1195,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"2036:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"id":1197,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2046:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1196,"name":"uint256","nodeType":"ElementaryTypeName","src":"2046:7:18","typeDescriptions":{}}},{"id":1199,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2055:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1198,"name":"uint256","nodeType":"ElementaryTypeName","src":"2055:7:18","typeDescriptions":{}}}],"id":1200,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2035:28:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256),type(uint256))"}],"expression":{"id":1192,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2018:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2018:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2018:46:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$1097_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256,uint256)"}},"src":"1987:77:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1203,"nodeType":"ExpressionStatement","src":"1987:77:18"}]},"id":1205,"implemented":true,"kind":"function","modifiers":[],"name":"tokenInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":1183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1205,"src":"1893:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1181,"name":"bytes","nodeType":"ElementaryTypeName","src":"1893:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1892:19:18"},"returnParameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1185,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":1205,"src":"1935:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1184,"name":"uint256","nodeType":"ElementaryTypeName","src":"1935:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1187,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":1205,"src":"1957:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1186,"name":"uint256","nodeType":"ElementaryTypeName","src":"1957:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1934:42:18"},"scope":1298,"src":"1862:209:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1224,"nodeType":"Block","src":"2176:73:18","statements":[{"expression":{"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1212,"name":"bptAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"2189:12:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1213,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2186:16:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1216,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1207,"src":"2216:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1217,"name":"JoinKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"2223:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},{"id":1219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2233:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1218,"name":"uint256","nodeType":"ElementaryTypeName","src":"2233:7:18","typeDescriptions":{}}}],"id":1220,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2222:19:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_JoinKind_$1097_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.JoinKind),type(uint256))"}],"expression":{"id":1214,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2205:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1215,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2205:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2205:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_JoinKind_$1097_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.JoinKind,uint256)"}},"src":"2186:56:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1223,"nodeType":"ExpressionStatement","src":"2186:56:18"}]},"id":1225,"implemented":true,"kind":"function","modifiers":[],"name":"allTokensInForExactBptOut","nodeType":"FunctionDefinition","parameters":{"id":1208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1207,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1225,"src":"2112:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1206,"name":"bytes","nodeType":"ElementaryTypeName","src":"2112:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2111:19:18"},"returnParameters":{"id":1211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1210,"mutability":"mutable","name":"bptAmountOut","nodeType":"VariableDeclaration","scope":1225,"src":"2154:20:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1209,"name":"uint256","nodeType":"ElementaryTypeName","src":"2154:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2153:22:18"},"scope":1298,"src":"2077:172:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1249,"nodeType":"Block","src":"2383:93:18","statements":[{"expression":{"id":1247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1234,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1230,"src":"2396:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1235,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"2409:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1236,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2393:27:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$_t_uint256_$","typeString":"tuple(,uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1239,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1227,"src":"2434:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1240,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"2441:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":1242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2451:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1241,"name":"uint256","nodeType":"ElementaryTypeName","src":"2451:7:18","typeDescriptions":{}}},{"id":1244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2460:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"2460:7:18","typeDescriptions":{}}}],"id":1245,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2440:28:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$1101_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$1101_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256),type(uint256))"}],"expression":{"id":1237,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2423:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2423:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2423:46:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$1101_$_t_uint256_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256,uint256)"}},"src":"2393:76:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1248,"nodeType":"ExpressionStatement","src":"2393:76:18"}]},"id":1250,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokenOut","nodeType":"FunctionDefinition","parameters":{"id":1228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1227,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1250,"src":"2300:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1226,"name":"bytes","nodeType":"ElementaryTypeName","src":"2300:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2299:19:18"},"returnParameters":{"id":1233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1230,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":1250,"src":"2342:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1229,"name":"uint256","nodeType":"ElementaryTypeName","src":"2342:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1232,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":1250,"src":"2363:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1231,"name":"uint256","nodeType":"ElementaryTypeName","src":"2363:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2341:41:18"},"scope":1298,"src":"2269:207:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1269,"nodeType":"Block","src":"2577:72:18","statements":[{"expression":{"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1257,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1255,"src":"2590:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1258,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2587:15:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1261,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1252,"src":"2616:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1262,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"2623:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"id":1264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2633:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1263,"name":"uint256","nodeType":"ElementaryTypeName","src":"2633:7:18","typeDescriptions":{}}}],"id":1265,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2622:19:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$1101_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$1101_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256))"}],"expression":{"id":1259,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2605:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1260,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2605:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2605:37:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$1101_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256)"}},"src":"2587:55:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1268,"nodeType":"ExpressionStatement","src":"2587:55:18"}]},"id":1270,"implemented":true,"kind":"function","modifiers":[],"name":"exactBptInForTokensOut","nodeType":"FunctionDefinition","parameters":{"id":1253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1252,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1270,"src":"2514:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1251,"name":"bytes","nodeType":"ElementaryTypeName","src":"2514:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2513:19:18"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1255,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":1270,"src":"2556:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1254,"name":"uint256","nodeType":"ElementaryTypeName","src":"2556:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2555:21:18"},"scope":1298,"src":"2482:167:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1296,"nodeType":"Block","src":"2810:98:18","statements":[{"expression":{"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":1280,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1276,"src":"2823:10:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":1281,"name":"maxBPTAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1278,"src":"2835:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1282,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2820:30:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1285,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1272,"src":"2864:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":1286,"name":"ExitKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"2871:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},{"baseExpression":{"id":1288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2881:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1287,"name":"uint256","nodeType":"ElementaryTypeName","src":"2881:7:18","typeDescriptions":{}}},"id":1289,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2881:9:18","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}},{"id":1291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2892:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1290,"name":"uint256","nodeType":"ElementaryTypeName","src":"2892:7:18","typeDescriptions":{}}}],"id":1292,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2870:30:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$1101_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_tuple$_t_type$_t_enum$_ExitKind_$1101_$_$_t_type$_t_array$_t_uint256_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$","typeString":"tuple(type(enum WeightedPoolUserData.ExitKind),type(uint256[] memory),type(uint256))"}],"expression":{"id":1283,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2853:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"2853:10:18","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":1293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2853:48:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_enum$_ExitKind_$1101_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(enum WeightedPoolUserData.ExitKind,uint256[] memory,uint256)"}},"src":"2820:81:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1295,"nodeType":"ExpressionStatement","src":"2820:81:18"}]},"id":1297,"implemented":true,"kind":"function","modifiers":[],"name":"bptInForExactTokensOut","nodeType":"FunctionDefinition","parameters":{"id":1273,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1272,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","scope":1297,"src":"2687:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1271,"name":"bytes","nodeType":"ElementaryTypeName","src":"2687:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2686:19:18"},"returnParameters":{"id":1279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1276,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":1297,"src":"2753:27:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1274,"name":"uint256","nodeType":"ElementaryTypeName","src":"2753:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1275,"nodeType":"ArrayTypeName","src":"2753:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":1278,"mutability":"mutable","name":"maxBPTAmountIn","nodeType":"VariableDeclaration","scope":1297,"src":"2782:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1277,"name":"uint256","nodeType":"ElementaryTypeName","src":"2782:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2752:53:18"},"scope":1298,"src":"2655:253:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1299,"src":"774:2136:18"}],"src":"688:2223:18"},"id":18},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","exportedSymbols":{"Errors":[1869],"_require":[1316,1335],"_revert":[1347,1367]},"id":1870,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1300,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:19"},{"body":{"id":1315,"nodeType":"Block","src":"984:43:19","statements":[{"condition":{"id":1309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"994:10:19","subExpression":{"id":1308,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"995:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1314,"nodeType":"IfStatement","src":"990:34:19","trueBody":{"expression":{"arguments":[{"id":1311,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1305,"src":"1014:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1310,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"1006:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1006:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1313,"nodeType":"ExpressionStatement","src":"1006:18:19"}}]},"documentation":{"id":1301,"nodeType":"StructuredDocumentation","src":"741:184:19","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported.\n Uses the default 'BAL' prefix for the error code"},"id":1316,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1303,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1316,"src":"944:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1302,"name":"bool","nodeType":"ElementaryTypeName","src":"944:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1305,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1316,"src":"960:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1304,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"943:35:19"},"returnParameters":{"id":1307,"nodeType":"ParameterList","parameters":[],"src":"984:0:19"},"scope":1870,"src":"926:101:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1334,"nodeType":"Block","src":"1249:51:19","statements":[{"condition":{"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1259:10:19","subExpression":{"id":1326,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1319,"src":"1260:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1333,"nodeType":"IfStatement","src":"1255:42:19","trueBody":{"expression":{"arguments":[{"id":1329,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1321,"src":"1279:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1330,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"1290:6:19","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1328,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1367,"src":"1271:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1271:26:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1332,"nodeType":"ExpressionStatement","src":"1271:26:19"}}]},"documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"1029:132:19","text":" @dev Reverts if `condition` is false, with a revert reason containing `errorCode`. Only codes up to 999 are\n supported."},"id":1335,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_require","nodeType":"FunctionDefinition","parameters":{"id":1324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1319,"mutability":"mutable","name":"condition","nodeType":"VariableDeclaration","scope":1335,"src":"1185:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1318,"name":"bool","nodeType":"ElementaryTypeName","src":"1185:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1321,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1335,"src":"1205:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1320,"name":"uint256","nodeType":"ElementaryTypeName","src":"1205:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1323,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1335,"src":"1228:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1322,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1228:6:19","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1179:64:19"},"returnParameters":{"id":1325,"nodeType":"ParameterList","parameters":[],"src":"1249:0:19"},"scope":1870,"src":"1162:138:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1346,"nodeType":"Block","src":"1500:85:19","statements":[{"expression":{"arguments":[{"id":1342,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"1514:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"3078343234313463","id":1343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1525:8:19","typeDescriptions":{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"},"value":"0x42414c"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4342092_by_1","typeString":"int_const 4342092"}],"id":1341,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1367,"src":"1506:7:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_bytes3_$returns$__$","typeString":"function (uint256,bytes3) pure"}},"id":1344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1345,"nodeType":"ExpressionStatement","src":"1506:28:19"}]},"documentation":{"id":1336,"nodeType":"StructuredDocumentation","src":"1302:156:19","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported.\n Uses the default 'BAL' prefix for the error code"},"id":1347,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1338,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1347,"src":"1476:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1337,"name":"uint256","nodeType":"ElementaryTypeName","src":"1476:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1475:19:19"},"returnParameters":{"id":1340,"nodeType":"ParameterList","parameters":[],"src":"1500:0:19"},"scope":1870,"src":"1459:126:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1366,"nodeType":"Block","src":"1748:3322:19","statements":[{"assignments":[1356],"declarations":[{"constant":false,"id":1356,"mutability":"mutable","name":"prefixUint","nodeType":"VariableDeclaration","scope":1366,"src":"1754:18:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1364,"initialValue":{"arguments":[{"arguments":[{"id":1361,"name":"prefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1352,"src":"1790:6:19","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes3","typeString":"bytes3"}],"id":1360,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1783:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":1359,"name":"uint24","nodeType":"ElementaryTypeName","src":"1783:6:19","typeDescriptions":{}}},"id":1362,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1783:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint24","typeString":"uint24"}],"id":1358,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1775:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1775:7:19","typeDescriptions":{}}},"id":1363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1775:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1754:44:19"},{"AST":{"nodeType":"YulBlock","src":"2587:2481:19","statements":[{"nodeType":"YulVariableDeclaration","src":"2861:42:19","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2882:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2893:2:19","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2878:3:19"},"nodeType":"YulFunctionCall","src":"2878:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2898:4:19","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2874:3:19"},"nodeType":"YulFunctionCall","src":"2874:29:19"},"variables":[{"name":"units","nodeType":"YulTypedName","src":"2865:5:19","type":""}]},{"nodeType":"YulAssignment","src":"2913:31:19","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2930:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2941:2:19","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2926:3:19"},"nodeType":"YulFunctionCall","src":"2926:18:19"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2913:9:19"}]},{"nodeType":"YulVariableDeclaration","src":"2953:43:19","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"2975:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2986:2:19","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"2971:3:19"},"nodeType":"YulFunctionCall","src":"2971:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2991:4:19","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2967:3:19"},"nodeType":"YulFunctionCall","src":"2967:29:19"},"variables":[{"name":"tenths","nodeType":"YulTypedName","src":"2957:6:19","type":""}]},{"nodeType":"YulAssignment","src":"3006:31:19","value":{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3023:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3034:2:19","type":"","value":"10"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3019:3:19"},"nodeType":"YulFunctionCall","src":"3019:18:19"},"variableNames":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3006:9:19"}]},{"nodeType":"YulVariableDeclaration","src":"3046:45:19","value":{"arguments":[{"arguments":[{"name":"errorCode","nodeType":"YulIdentifier","src":"3070:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3081:2:19","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"3066:3:19"},"nodeType":"YulFunctionCall","src":"3066:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3086:4:19","type":"","value":"0x30"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3062:3:19"},"nodeType":"YulFunctionCall","src":"3062:29:19"},"variables":[{"name":"hundreds","nodeType":"YulTypedName","src":"3050:8:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3724:61:19","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3751:2:19","type":"","value":"24"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3759:4:19","type":"","value":"0x23"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3769:1:19","type":"","value":"8"},{"name":"prefixUint","nodeType":"YulIdentifier","src":"3772:10:19"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3765:3:19"},"nodeType":"YulFunctionCall","src":"3765:18:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3755:3:19"},"nodeType":"YulFunctionCall","src":"3755:29:19"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3747:3:19"},"nodeType":"YulFunctionCall","src":"3747:38:19"},"variables":[{"name":"formattedPrefix","nodeType":"YulTypedName","src":"3728:15:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3795:102:19","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3819:3:19","type":"","value":"200"},{"arguments":[{"name":"formattedPrefix","nodeType":"YulIdentifier","src":"3828:15:19"},{"arguments":[{"arguments":[{"name":"units","nodeType":"YulIdentifier","src":"3853:5:19"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3864:1:19","type":"","value":"8"},{"name":"tenths","nodeType":"YulIdentifier","src":"3867:6:19"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3860:3:19"},"nodeType":"YulFunctionCall","src":"3860:14:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3849:3:19"},"nodeType":"YulFunctionCall","src":"3849:26:19"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3881:2:19","type":"","value":"16"},{"name":"hundreds","nodeType":"YulIdentifier","src":"3885:8:19"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3877:3:19"},"nodeType":"YulFunctionCall","src":"3877:17:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3845:3:19"},"nodeType":"YulFunctionCall","src":"3845:50:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3824:3:19"},"nodeType":"YulFunctionCall","src":"3824:72:19"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3815:3:19"},"nodeType":"YulFunctionCall","src":"3815:82:19"},"variables":[{"name":"revertReason","nodeType":"YulTypedName","src":"3799:12:19","type":""}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4412:3:19","type":"","value":"0x0"},{"kind":"number","nodeType":"YulLiteral","src":"4417:66:19","type":"","value":"0x08c379a000000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4405:6:19"},"nodeType":"YulFunctionCall","src":"4405:79:19"},"nodeType":"YulExpressionStatement","src":"4405:79:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4617:4:19","type":"","value":"0x04"},{"kind":"number","nodeType":"YulLiteral","src":"4623:66:19","type":"","value":"0x0000000000000000000000000000000000000000000000000000000000000020"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4610:6:19"},"nodeType":"YulFunctionCall","src":"4610:80:19"},"nodeType":"YulExpressionStatement","src":"4610:80:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4759:4:19","type":"","value":"0x24"},{"kind":"number","nodeType":"YulLiteral","src":"4765:1:19","type":"","value":"7"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4752:6:19"},"nodeType":"YulFunctionCall","src":"4752:15:19"},"nodeType":"YulExpressionStatement","src":"4752:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4832:4:19","type":"","value":"0x44"},{"name":"revertReason","nodeType":"YulIdentifier","src":"4838:12:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4825:6:19"},"nodeType":"YulFunctionCall","src":"4825:26:19"},"nodeType":"YulExpressionStatement","src":"4825:26:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5055:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5058:3:19","type":"","value":"100"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5048:6:19"},"nodeType":"YulFunctionCall","src":"5048:14:19"},"nodeType":"YulExpressionStatement","src":"5048:14:19"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2882:9:19","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2913:9:19","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2930:9:19","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"2975:9:19","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"3006:9:19","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"3023:9:19","valueSize":1},{"declaration":1350,"isOffset":false,"isSlot":false,"src":"3070:9:19","valueSize":1},{"declaration":1356,"isOffset":false,"isSlot":false,"src":"3772:10:19","valueSize":1}],"id":1365,"nodeType":"InlineAssembly","src":"2578:2490:19"}]},"documentation":{"id":1348,"nodeType":"StructuredDocumentation","src":"1587:104:19","text":" @dev Reverts with a revert reason containing `errorCode`. Only codes up to 999 are supported."},"id":1367,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_revert","nodeType":"FunctionDefinition","parameters":{"id":1353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1350,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":1367,"src":"1709:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1349,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1352,"mutability":"mutable","name":"prefix","nodeType":"VariableDeclaration","scope":1367,"src":"1728:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"},"typeName":{"id":1351,"name":"bytes3","nodeType":"ElementaryTypeName","src":"1728:6:19","typeDescriptions":{"typeIdentifier":"t_bytes3","typeString":"bytes3"}},"visibility":"internal"}],"src":"1708:34:19"},"returnParameters":{"id":1354,"nodeType":"ParameterList","parameters":[],"src":"1748:0:19"},"scope":1870,"src":"1692:3378:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1869,"linearizedBaseContracts":[1869],"name":"Errors","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1370,"mutability":"constant","name":"ADD_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"5105:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1368,"name":"uint256","nodeType":"ElementaryTypeName","src":"5105:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":1369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5146:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":1373,"mutability":"constant","name":"SUB_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"5153:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1371,"name":"uint256","nodeType":"ElementaryTypeName","src":"5153:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":1372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5194:1:19","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":1376,"mutability":"constant","name":"SUB_UNDERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"5201:43:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1374,"name":"uint256","nodeType":"ElementaryTypeName","src":"5201:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":1375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:19","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":1379,"mutability":"constant","name":"MUL_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"5250:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1377,"name":"uint256","nodeType":"ElementaryTypeName","src":"5250:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":1378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5291:1:19","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"},{"constant":true,"id":1382,"mutability":"constant","name":"ZERO_DIVISION","nodeType":"VariableDeclaration","scope":1869,"src":"5298:43:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1380,"name":"uint256","nodeType":"ElementaryTypeName","src":"5298:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"34","id":1381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5340:1:19","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"visibility":"internal"},{"constant":true,"id":1385,"mutability":"constant","name":"DIV_INTERNAL","nodeType":"VariableDeclaration","scope":1869,"src":"5347:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1383,"name":"uint256","nodeType":"ElementaryTypeName","src":"5347:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"35","id":1384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5388:1:19","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"visibility":"internal"},{"constant":true,"id":1388,"mutability":"constant","name":"X_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1869,"src":"5395:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1386,"name":"uint256","nodeType":"ElementaryTypeName","src":"5395:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"36","id":1387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5439:1:19","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"visibility":"internal"},{"constant":true,"id":1391,"mutability":"constant","name":"Y_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1869,"src":"5446:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"5446:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"37","id":1390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5490:1:19","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"visibility":"internal"},{"constant":true,"id":1394,"mutability":"constant","name":"PRODUCT_OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1869,"src":"5497:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1392,"name":"uint256","nodeType":"ElementaryTypeName","src":"5497:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"38","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5547:1:19","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"internal"},{"constant":true,"id":1397,"mutability":"constant","name":"INVALID_EXPONENT","nodeType":"VariableDeclaration","scope":1869,"src":"5554:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1395,"name":"uint256","nodeType":"ElementaryTypeName","src":"5554:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"39","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5599:1:19","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"visibility":"internal"},{"constant":true,"id":1400,"mutability":"constant","name":"OUT_OF_BOUNDS","nodeType":"VariableDeclaration","scope":1869,"src":"5620:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1398,"name":"uint256","nodeType":"ElementaryTypeName","src":"5620:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313030","id":1399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5662:3:19","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"visibility":"internal"},{"constant":true,"id":1403,"mutability":"constant","name":"UNSORTED_ARRAY","nodeType":"VariableDeclaration","scope":1869,"src":"5671:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1401,"name":"uint256","nodeType":"ElementaryTypeName","src":"5671:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313031","id":1402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5714:3:19","typeDescriptions":{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"},"value":"101"},"visibility":"internal"},{"constant":true,"id":1406,"mutability":"constant","name":"UNSORTED_TOKENS","nodeType":"VariableDeclaration","scope":1869,"src":"5723:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1404,"name":"uint256","nodeType":"ElementaryTypeName","src":"5723:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313032","id":1405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5767:3:19","typeDescriptions":{"typeIdentifier":"t_rational_102_by_1","typeString":"int_const 102"},"value":"102"},"visibility":"internal"},{"constant":true,"id":1409,"mutability":"constant","name":"INPUT_LENGTH_MISMATCH","nodeType":"VariableDeclaration","scope":1869,"src":"5776:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1407,"name":"uint256","nodeType":"ElementaryTypeName","src":"5776:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313033","id":1408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5826:3:19","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"visibility":"internal"},{"constant":true,"id":1412,"mutability":"constant","name":"ZERO_TOKEN","nodeType":"VariableDeclaration","scope":1869,"src":"5835:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1410,"name":"uint256","nodeType":"ElementaryTypeName","src":"5835:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313034","id":1411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5874:3:19","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},"visibility":"internal"},{"constant":true,"id":1415,"mutability":"constant","name":"INSUFFICIENT_DATA","nodeType":"VariableDeclaration","scope":1869,"src":"5883:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1413,"name":"uint256","nodeType":"ElementaryTypeName","src":"5883:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"313035","id":1414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5929:3:19","typeDescriptions":{"typeIdentifier":"t_rational_105_by_1","typeString":"int_const 105"},"value":"105"},"visibility":"internal"},{"constant":true,"id":1418,"mutability":"constant","name":"MIN_TOKENS","nodeType":"VariableDeclaration","scope":1869,"src":"5959:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1416,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323030","id":1417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5998:3:19","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},"visibility":"internal"},{"constant":true,"id":1421,"mutability":"constant","name":"MAX_TOKENS","nodeType":"VariableDeclaration","scope":1869,"src":"6007:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1419,"name":"uint256","nodeType":"ElementaryTypeName","src":"6007:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323031","id":1420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6046:3:19","typeDescriptions":{"typeIdentifier":"t_rational_201_by_1","typeString":"int_const 201"},"value":"201"},"visibility":"internal"},{"constant":true,"id":1424,"mutability":"constant","name":"MAX_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1869,"src":"6055:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1422,"name":"uint256","nodeType":"ElementaryTypeName","src":"6055:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323032","id":1423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6107:3:19","typeDescriptions":{"typeIdentifier":"t_rational_202_by_1","typeString":"int_const 202"},"value":"202"},"visibility":"internal"},{"constant":true,"id":1427,"mutability":"constant","name":"MIN_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1869,"src":"6116:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1425,"name":"uint256","nodeType":"ElementaryTypeName","src":"6116:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323033","id":1426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6168:3:19","typeDescriptions":{"typeIdentifier":"t_rational_203_by_1","typeString":"int_const 203"},"value":"203"},"visibility":"internal"},{"constant":true,"id":1430,"mutability":"constant","name":"MINIMUM_BPT","nodeType":"VariableDeclaration","scope":1869,"src":"6177:43:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1428,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323034","id":1429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6217:3:19","typeDescriptions":{"typeIdentifier":"t_rational_204_by_1","typeString":"int_const 204"},"value":"204"},"visibility":"internal"},{"constant":true,"id":1433,"mutability":"constant","name":"CALLER_NOT_VAULT","nodeType":"VariableDeclaration","scope":1869,"src":"6226:48:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1431,"name":"uint256","nodeType":"ElementaryTypeName","src":"6226:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323035","id":1432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6271:3:19","typeDescriptions":{"typeIdentifier":"t_rational_205_by_1","typeString":"int_const 205"},"value":"205"},"visibility":"internal"},{"constant":true,"id":1436,"mutability":"constant","name":"UNINITIALIZED","nodeType":"VariableDeclaration","scope":1869,"src":"6280:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"6280:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323036","id":1435,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6322:3:19","typeDescriptions":{"typeIdentifier":"t_rational_206_by_1","typeString":"int_const 206"},"value":"206"},"visibility":"internal"},{"constant":true,"id":1439,"mutability":"constant","name":"BPT_IN_MAX_AMOUNT","nodeType":"VariableDeclaration","scope":1869,"src":"6331:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1437,"name":"uint256","nodeType":"ElementaryTypeName","src":"6331:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323037","id":1438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6377:3:19","typeDescriptions":{"typeIdentifier":"t_rational_207_by_1","typeString":"int_const 207"},"value":"207"},"visibility":"internal"},{"constant":true,"id":1442,"mutability":"constant","name":"BPT_OUT_MIN_AMOUNT","nodeType":"VariableDeclaration","scope":1869,"src":"6386:50:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1440,"name":"uint256","nodeType":"ElementaryTypeName","src":"6386:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323038","id":1441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6433:3:19","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},"visibility":"internal"},{"constant":true,"id":1445,"mutability":"constant","name":"EXPIRED_PERMIT","nodeType":"VariableDeclaration","scope":1869,"src":"6442:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1443,"name":"uint256","nodeType":"ElementaryTypeName","src":"6442:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323039","id":1444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6485:3:19","typeDescriptions":{"typeIdentifier":"t_rational_209_by_1","typeString":"int_const 209"},"value":"209"},"visibility":"internal"},{"constant":true,"id":1448,"mutability":"constant","name":"NOT_TWO_TOKENS","nodeType":"VariableDeclaration","scope":1869,"src":"6494:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1446,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323130","id":1447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6537:3:19","typeDescriptions":{"typeIdentifier":"t_rational_210_by_1","typeString":"int_const 210"},"value":"210"},"visibility":"internal"},{"constant":true,"id":1451,"mutability":"constant","name":"DISABLED","nodeType":"VariableDeclaration","scope":1869,"src":"6546:40:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1449,"name":"uint256","nodeType":"ElementaryTypeName","src":"6546:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"323131","id":1450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6583:3:19","typeDescriptions":{"typeIdentifier":"t_rational_211_by_1","typeString":"int_const 211"},"value":"211"},"visibility":"internal"},{"constant":true,"id":1454,"mutability":"constant","name":"MIN_AMP","nodeType":"VariableDeclaration","scope":1869,"src":"6606:39:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1452,"name":"uint256","nodeType":"ElementaryTypeName","src":"6606:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333030","id":1453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:3:19","typeDescriptions":{"typeIdentifier":"t_rational_300_by_1","typeString":"int_const 300"},"value":"300"},"visibility":"internal"},{"constant":true,"id":1457,"mutability":"constant","name":"MAX_AMP","nodeType":"VariableDeclaration","scope":1869,"src":"6651:39:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1455,"name":"uint256","nodeType":"ElementaryTypeName","src":"6651:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333031","id":1456,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6687:3:19","typeDescriptions":{"typeIdentifier":"t_rational_301_by_1","typeString":"int_const 301"},"value":"301"},"visibility":"internal"},{"constant":true,"id":1460,"mutability":"constant","name":"MIN_WEIGHT","nodeType":"VariableDeclaration","scope":1869,"src":"6696:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1458,"name":"uint256","nodeType":"ElementaryTypeName","src":"6696:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333032","id":1459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6735:3:19","typeDescriptions":{"typeIdentifier":"t_rational_302_by_1","typeString":"int_const 302"},"value":"302"},"visibility":"internal"},{"constant":true,"id":1463,"mutability":"constant","name":"MAX_STABLE_TOKENS","nodeType":"VariableDeclaration","scope":1869,"src":"6744:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1461,"name":"uint256","nodeType":"ElementaryTypeName","src":"6744:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333033","id":1462,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6790:3:19","typeDescriptions":{"typeIdentifier":"t_rational_303_by_1","typeString":"int_const 303"},"value":"303"},"visibility":"internal"},{"constant":true,"id":1466,"mutability":"constant","name":"MAX_IN_RATIO","nodeType":"VariableDeclaration","scope":1869,"src":"6799:44:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1464,"name":"uint256","nodeType":"ElementaryTypeName","src":"6799:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333034","id":1465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6840:3:19","typeDescriptions":{"typeIdentifier":"t_rational_304_by_1","typeString":"int_const 304"},"value":"304"},"visibility":"internal"},{"constant":true,"id":1469,"mutability":"constant","name":"MAX_OUT_RATIO","nodeType":"VariableDeclaration","scope":1869,"src":"6849:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1467,"name":"uint256","nodeType":"ElementaryTypeName","src":"6849:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333035","id":1468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:3:19","typeDescriptions":{"typeIdentifier":"t_rational_305_by_1","typeString":"int_const 305"},"value":"305"},"visibility":"internal"},{"constant":true,"id":1472,"mutability":"constant","name":"MIN_BPT_IN_FOR_TOKEN_OUT","nodeType":"VariableDeclaration","scope":1869,"src":"6900:56:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1470,"name":"uint256","nodeType":"ElementaryTypeName","src":"6900:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333036","id":1471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:3:19","typeDescriptions":{"typeIdentifier":"t_rational_306_by_1","typeString":"int_const 306"},"value":"306"},"visibility":"internal"},{"constant":true,"id":1475,"mutability":"constant","name":"MAX_OUT_BPT_FOR_TOKEN_IN","nodeType":"VariableDeclaration","scope":1869,"src":"6962:56:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1473,"name":"uint256","nodeType":"ElementaryTypeName","src":"6962:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333037","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7015:3:19","typeDescriptions":{"typeIdentifier":"t_rational_307_by_1","typeString":"int_const 307"},"value":"307"},"visibility":"internal"},{"constant":true,"id":1478,"mutability":"constant","name":"NORMALIZED_WEIGHT_INVARIANT","nodeType":"VariableDeclaration","scope":1869,"src":"7024:59:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1476,"name":"uint256","nodeType":"ElementaryTypeName","src":"7024:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333038","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7080:3:19","typeDescriptions":{"typeIdentifier":"t_rational_308_by_1","typeString":"int_const 308"},"value":"308"},"visibility":"internal"},{"constant":true,"id":1481,"mutability":"constant","name":"INVALID_TOKEN","nodeType":"VariableDeclaration","scope":1869,"src":"7089:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1479,"name":"uint256","nodeType":"ElementaryTypeName","src":"7089:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333039","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7131:3:19","typeDescriptions":{"typeIdentifier":"t_rational_309_by_1","typeString":"int_const 309"},"value":"309"},"visibility":"internal"},{"constant":true,"id":1484,"mutability":"constant","name":"UNHANDLED_JOIN_KIND","nodeType":"VariableDeclaration","scope":1869,"src":"7140:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1482,"name":"uint256","nodeType":"ElementaryTypeName","src":"7140:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333130","id":1483,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7188:3:19","typeDescriptions":{"typeIdentifier":"t_rational_310_by_1","typeString":"int_const 310"},"value":"310"},"visibility":"internal"},{"constant":true,"id":1487,"mutability":"constant","name":"ZERO_INVARIANT","nodeType":"VariableDeclaration","scope":1869,"src":"7197:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1485,"name":"uint256","nodeType":"ElementaryTypeName","src":"7197:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333131","id":1486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7240:3:19","typeDescriptions":{"typeIdentifier":"t_rational_311_by_1","typeString":"int_const 311"},"value":"311"},"visibility":"internal"},{"constant":true,"id":1490,"mutability":"constant","name":"ORACLE_INVALID_SECONDS_QUERY","nodeType":"VariableDeclaration","scope":1869,"src":"7249:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1488,"name":"uint256","nodeType":"ElementaryTypeName","src":"7249:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333132","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7306:3:19","typeDescriptions":{"typeIdentifier":"t_rational_312_by_1","typeString":"int_const 312"},"value":"312"},"visibility":"internal"},{"constant":true,"id":1493,"mutability":"constant","name":"ORACLE_NOT_INITIALIZED","nodeType":"VariableDeclaration","scope":1869,"src":"7315:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1491,"name":"uint256","nodeType":"ElementaryTypeName","src":"7315:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333133","id":1492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:3:19","typeDescriptions":{"typeIdentifier":"t_rational_313_by_1","typeString":"int_const 313"},"value":"313"},"visibility":"internal"},{"constant":true,"id":1496,"mutability":"constant","name":"ORACLE_QUERY_TOO_OLD","nodeType":"VariableDeclaration","scope":1869,"src":"7375:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1494,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333134","id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7424:3:19","typeDescriptions":{"typeIdentifier":"t_rational_314_by_1","typeString":"int_const 314"},"value":"314"},"visibility":"internal"},{"constant":true,"id":1499,"mutability":"constant","name":"ORACLE_INVALID_INDEX","nodeType":"VariableDeclaration","scope":1869,"src":"7433:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1497,"name":"uint256","nodeType":"ElementaryTypeName","src":"7433:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333135","id":1498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7482:3:19","typeDescriptions":{"typeIdentifier":"t_rational_315_by_1","typeString":"int_const 315"},"value":"315"},"visibility":"internal"},{"constant":true,"id":1502,"mutability":"constant","name":"ORACLE_BAD_SECS","nodeType":"VariableDeclaration","scope":1869,"src":"7491:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1500,"name":"uint256","nodeType":"ElementaryTypeName","src":"7491:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333136","id":1501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7535:3:19","typeDescriptions":{"typeIdentifier":"t_rational_316_by_1","typeString":"int_const 316"},"value":"316"},"visibility":"internal"},{"constant":true,"id":1505,"mutability":"constant","name":"AMP_END_TIME_TOO_CLOSE","nodeType":"VariableDeclaration","scope":1869,"src":"7544:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1503,"name":"uint256","nodeType":"ElementaryTypeName","src":"7544:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333137","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7595:3:19","typeDescriptions":{"typeIdentifier":"t_rational_317_by_1","typeString":"int_const 317"},"value":"317"},"visibility":"internal"},{"constant":true,"id":1508,"mutability":"constant","name":"AMP_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":1869,"src":"7604:50:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1506,"name":"uint256","nodeType":"ElementaryTypeName","src":"7604:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333138","id":1507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7651:3:19","typeDescriptions":{"typeIdentifier":"t_rational_318_by_1","typeString":"int_const 318"},"value":"318"},"visibility":"internal"},{"constant":true,"id":1511,"mutability":"constant","name":"AMP_RATE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1869,"src":"7660:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1509,"name":"uint256","nodeType":"ElementaryTypeName","src":"7660:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333139","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7706:3:19","typeDescriptions":{"typeIdentifier":"t_rational_319_by_1","typeString":"int_const 319"},"value":"319"},"visibility":"internal"},{"constant":true,"id":1514,"mutability":"constant","name":"AMP_NO_ONGOING_UPDATE","nodeType":"VariableDeclaration","scope":1869,"src":"7715:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1512,"name":"uint256","nodeType":"ElementaryTypeName","src":"7715:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333230","id":1513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7765:3:19","typeDescriptions":{"typeIdentifier":"t_rational_320_by_1","typeString":"int_const 320"},"value":"320"},"visibility":"internal"},{"constant":true,"id":1517,"mutability":"constant","name":"STABLE_INVARIANT_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":1869,"src":"7774:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"7774:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333231","id":1516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7834:3:19","typeDescriptions":{"typeIdentifier":"t_rational_321_by_1","typeString":"int_const 321"},"value":"321"},"visibility":"internal"},{"constant":true,"id":1520,"mutability":"constant","name":"STABLE_GET_BALANCE_DIDNT_CONVERGE","nodeType":"VariableDeclaration","scope":1869,"src":"7843:65:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1518,"name":"uint256","nodeType":"ElementaryTypeName","src":"7843:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333232","id":1519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7905:3:19","typeDescriptions":{"typeIdentifier":"t_rational_322_by_1","typeString":"int_const 322"},"value":"322"},"visibility":"internal"},{"constant":true,"id":1523,"mutability":"constant","name":"RELAYER_NOT_CONTRACT","nodeType":"VariableDeclaration","scope":1869,"src":"7914:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1521,"name":"uint256","nodeType":"ElementaryTypeName","src":"7914:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333233","id":1522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7963:3:19","typeDescriptions":{"typeIdentifier":"t_rational_323_by_1","typeString":"int_const 323"},"value":"323"},"visibility":"internal"},{"constant":true,"id":1526,"mutability":"constant","name":"BASE_POOL_RELAYER_NOT_CALLED","nodeType":"VariableDeclaration","scope":1869,"src":"7972:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1524,"name":"uint256","nodeType":"ElementaryTypeName","src":"7972:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333234","id":1525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8029:3:19","typeDescriptions":{"typeIdentifier":"t_rational_324_by_1","typeString":"int_const 324"},"value":"324"},"visibility":"internal"},{"constant":true,"id":1529,"mutability":"constant","name":"REBALANCING_RELAYER_REENTERED","nodeType":"VariableDeclaration","scope":1869,"src":"8038:61:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1527,"name":"uint256","nodeType":"ElementaryTypeName","src":"8038:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333235","id":1528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8096:3:19","typeDescriptions":{"typeIdentifier":"t_rational_325_by_1","typeString":"int_const 325"},"value":"325"},"visibility":"internal"},{"constant":true,"id":1532,"mutability":"constant","name":"GRADUAL_UPDATE_TIME_TRAVEL","nodeType":"VariableDeclaration","scope":1869,"src":"8105:58:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1530,"name":"uint256","nodeType":"ElementaryTypeName","src":"8105:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333236","id":1531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8160:3:19","typeDescriptions":{"typeIdentifier":"t_rational_326_by_1","typeString":"int_const 326"},"value":"326"},"visibility":"internal"},{"constant":true,"id":1535,"mutability":"constant","name":"SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":1869,"src":"8169:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1533,"name":"uint256","nodeType":"ElementaryTypeName","src":"8169:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333237","id":1534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8212:3:19","typeDescriptions":{"typeIdentifier":"t_rational_327_by_1","typeString":"int_const 327"},"value":"327"},"visibility":"internal"},{"constant":true,"id":1538,"mutability":"constant","name":"CALLER_IS_NOT_LBP_OWNER","nodeType":"VariableDeclaration","scope":1869,"src":"8221:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1536,"name":"uint256","nodeType":"ElementaryTypeName","src":"8221:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333238","id":1537,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8273:3:19","typeDescriptions":{"typeIdentifier":"t_rational_328_by_1","typeString":"int_const 328"},"value":"328"},"visibility":"internal"},{"constant":true,"id":1541,"mutability":"constant","name":"PRICE_RATE_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"8282:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1539,"name":"uint256","nodeType":"ElementaryTypeName","src":"8282:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333239","id":1540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8330:3:19","typeDescriptions":{"typeIdentifier":"t_rational_329_by_1","typeString":"int_const 329"},"value":"329"},"visibility":"internal"},{"constant":true,"id":1544,"mutability":"constant","name":"INVALID_JOIN_EXIT_KIND_WHILE_SWAPS_DISABLED","nodeType":"VariableDeclaration","scope":1869,"src":"8339:75:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1542,"name":"uint256","nodeType":"ElementaryTypeName","src":"8339:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333330","id":1543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8411:3:19","typeDescriptions":{"typeIdentifier":"t_rational_330_by_1","typeString":"int_const 330"},"value":"330"},"visibility":"internal"},{"constant":true,"id":1547,"mutability":"constant","name":"WEIGHT_CHANGE_TOO_FAST","nodeType":"VariableDeclaration","scope":1869,"src":"8420:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1545,"name":"uint256","nodeType":"ElementaryTypeName","src":"8420:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333331","id":1546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:3:19","typeDescriptions":{"typeIdentifier":"t_rational_331_by_1","typeString":"int_const 331"},"value":"331"},"visibility":"internal"},{"constant":true,"id":1550,"mutability":"constant","name":"LOWER_GREATER_THAN_UPPER_TARGET","nodeType":"VariableDeclaration","scope":1869,"src":"8480:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1548,"name":"uint256","nodeType":"ElementaryTypeName","src":"8480:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333332","id":1549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8540:3:19","typeDescriptions":{"typeIdentifier":"t_rational_332_by_1","typeString":"int_const 332"},"value":"332"},"visibility":"internal"},{"constant":true,"id":1553,"mutability":"constant","name":"UPPER_TARGET_TOO_HIGH","nodeType":"VariableDeclaration","scope":1869,"src":"8549:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1551,"name":"uint256","nodeType":"ElementaryTypeName","src":"8549:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333333","id":1552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8599:3:19","typeDescriptions":{"typeIdentifier":"t_rational_333_by_1","typeString":"int_const 333"},"value":"333"},"visibility":"internal"},{"constant":true,"id":1556,"mutability":"constant","name":"UNHANDLED_BY_LINEAR_POOL","nodeType":"VariableDeclaration","scope":1869,"src":"8608:56:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1554,"name":"uint256","nodeType":"ElementaryTypeName","src":"8608:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333334","id":1555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8661:3:19","typeDescriptions":{"typeIdentifier":"t_rational_334_by_1","typeString":"int_const 334"},"value":"334"},"visibility":"internal"},{"constant":true,"id":1559,"mutability":"constant","name":"OUT_OF_TARGET_RANGE","nodeType":"VariableDeclaration","scope":1869,"src":"8670:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1557,"name":"uint256","nodeType":"ElementaryTypeName","src":"8670:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333335","id":1558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8718:3:19","typeDescriptions":{"typeIdentifier":"t_rational_335_by_1","typeString":"int_const 335"},"value":"335"},"visibility":"internal"},{"constant":true,"id":1562,"mutability":"constant","name":"UNHANDLED_EXIT_KIND","nodeType":"VariableDeclaration","scope":1869,"src":"8727:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1560,"name":"uint256","nodeType":"ElementaryTypeName","src":"8727:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333336","id":1561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8775:3:19","typeDescriptions":{"typeIdentifier":"t_rational_336_by_1","typeString":"int_const 336"},"value":"336"},"visibility":"internal"},{"constant":true,"id":1565,"mutability":"constant","name":"UNAUTHORIZED_EXIT","nodeType":"VariableDeclaration","scope":1869,"src":"8784:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1563,"name":"uint256","nodeType":"ElementaryTypeName","src":"8784:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333337","id":1564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8830:3:19","typeDescriptions":{"typeIdentifier":"t_rational_337_by_1","typeString":"int_const 337"},"value":"337"},"visibility":"internal"},{"constant":true,"id":1568,"mutability":"constant","name":"MAX_MANAGEMENT_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1869,"src":"8839:66:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1566,"name":"uint256","nodeType":"ElementaryTypeName","src":"8839:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333338","id":1567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8902:3:19","typeDescriptions":{"typeIdentifier":"t_rational_338_by_1","typeString":"int_const 338"},"value":"338"},"visibility":"internal"},{"constant":true,"id":1571,"mutability":"constant","name":"UNHANDLED_BY_MANAGED_POOL","nodeType":"VariableDeclaration","scope":1869,"src":"8911:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1569,"name":"uint256","nodeType":"ElementaryTypeName","src":"8911:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333339","id":1570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8965:3:19","typeDescriptions":{"typeIdentifier":"t_rational_339_by_1","typeString":"int_const 339"},"value":"339"},"visibility":"internal"},{"constant":true,"id":1574,"mutability":"constant","name":"UNHANDLED_BY_PHANTOM_POOL","nodeType":"VariableDeclaration","scope":1869,"src":"8974:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1572,"name":"uint256","nodeType":"ElementaryTypeName","src":"8974:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333430","id":1573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9028:3:19","typeDescriptions":{"typeIdentifier":"t_rational_340_by_1","typeString":"int_const 340"},"value":"340"},"visibility":"internal"},{"constant":true,"id":1577,"mutability":"constant","name":"TOKEN_DOES_NOT_HAVE_RATE_PROVIDER","nodeType":"VariableDeclaration","scope":1869,"src":"9037:65:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1575,"name":"uint256","nodeType":"ElementaryTypeName","src":"9037:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333431","id":1576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:3:19","typeDescriptions":{"typeIdentifier":"t_rational_341_by_1","typeString":"int_const 341"},"value":"341"},"visibility":"internal"},{"constant":true,"id":1580,"mutability":"constant","name":"INVALID_INITIALIZATION","nodeType":"VariableDeclaration","scope":1869,"src":"9108:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1578,"name":"uint256","nodeType":"ElementaryTypeName","src":"9108:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333432","id":1579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9159:3:19","typeDescriptions":{"typeIdentifier":"t_rational_342_by_1","typeString":"int_const 342"},"value":"342"},"visibility":"internal"},{"constant":true,"id":1583,"mutability":"constant","name":"OUT_OF_NEW_TARGET_RANGE","nodeType":"VariableDeclaration","scope":1869,"src":"9168:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"9168:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333433","id":1582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9220:3:19","typeDescriptions":{"typeIdentifier":"t_rational_343_by_1","typeString":"int_const 343"},"value":"343"},"visibility":"internal"},{"constant":true,"id":1586,"mutability":"constant","name":"FEATURE_DISABLED","nodeType":"VariableDeclaration","scope":1869,"src":"9229:48:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1584,"name":"uint256","nodeType":"ElementaryTypeName","src":"9229:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333434","id":1585,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9274:3:19","typeDescriptions":{"typeIdentifier":"t_rational_344_by_1","typeString":"int_const 344"},"value":"344"},"visibility":"internal"},{"constant":true,"id":1589,"mutability":"constant","name":"UNINITIALIZED_POOL_CONTROLLER","nodeType":"VariableDeclaration","scope":1869,"src":"9283:61:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1587,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333435","id":1588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9341:3:19","typeDescriptions":{"typeIdentifier":"t_rational_345_by_1","typeString":"int_const 345"},"value":"345"},"visibility":"internal"},{"constant":true,"id":1592,"mutability":"constant","name":"SET_SWAP_FEE_DURING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":1869,"src":"9350:62:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1590,"name":"uint256","nodeType":"ElementaryTypeName","src":"9350:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333436","id":1591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9409:3:19","typeDescriptions":{"typeIdentifier":"t_rational_346_by_1","typeString":"int_const 346"},"value":"346"},"visibility":"internal"},{"constant":true,"id":1595,"mutability":"constant","name":"SET_SWAP_FEE_PENDING_FEE_CHANGE","nodeType":"VariableDeclaration","scope":1869,"src":"9418:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1593,"name":"uint256","nodeType":"ElementaryTypeName","src":"9418:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333437","id":1594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9478:3:19","typeDescriptions":{"typeIdentifier":"t_rational_347_by_1","typeString":"int_const 347"},"value":"347"},"visibility":"internal"},{"constant":true,"id":1598,"mutability":"constant","name":"CHANGE_TOKENS_DURING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":1869,"src":"9487:66:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1596,"name":"uint256","nodeType":"ElementaryTypeName","src":"9487:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333438","id":1597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9550:3:19","typeDescriptions":{"typeIdentifier":"t_rational_348_by_1","typeString":"int_const 348"},"value":"348"},"visibility":"internal"},{"constant":true,"id":1601,"mutability":"constant","name":"CHANGE_TOKENS_PENDING_WEIGHT_CHANGE","nodeType":"VariableDeclaration","scope":1869,"src":"9559:67:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1599,"name":"uint256","nodeType":"ElementaryTypeName","src":"9559:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333439","id":1600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9623:3:19","typeDescriptions":{"typeIdentifier":"t_rational_349_by_1","typeString":"int_const 349"},"value":"349"},"visibility":"internal"},{"constant":true,"id":1604,"mutability":"constant","name":"MAX_WEIGHT","nodeType":"VariableDeclaration","scope":1869,"src":"9632:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1602,"name":"uint256","nodeType":"ElementaryTypeName","src":"9632:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333530","id":1603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9671:3:19","typeDescriptions":{"typeIdentifier":"t_rational_350_by_1","typeString":"int_const 350"},"value":"350"},"visibility":"internal"},{"constant":true,"id":1607,"mutability":"constant","name":"UNAUTHORIZED_JOIN","nodeType":"VariableDeclaration","scope":1869,"src":"9680:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1605,"name":"uint256","nodeType":"ElementaryTypeName","src":"9680:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333531","id":1606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9726:3:19","typeDescriptions":{"typeIdentifier":"t_rational_351_by_1","typeString":"int_const 351"},"value":"351"},"visibility":"internal"},{"constant":true,"id":1610,"mutability":"constant","name":"MAX_MANAGEMENT_AUM_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":1869,"src":"9735:65:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1608,"name":"uint256","nodeType":"ElementaryTypeName","src":"9735:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333532","id":1609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9797:3:19","typeDescriptions":{"typeIdentifier":"t_rational_352_by_1","typeString":"int_const 352"},"value":"352"},"visibility":"internal"},{"constant":true,"id":1613,"mutability":"constant","name":"FRACTIONAL_TARGET","nodeType":"VariableDeclaration","scope":1869,"src":"9806:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1611,"name":"uint256","nodeType":"ElementaryTypeName","src":"9806:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333533","id":1612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9852:3:19","typeDescriptions":{"typeIdentifier":"t_rational_353_by_1","typeString":"int_const 353"},"value":"353"},"visibility":"internal"},{"constant":true,"id":1616,"mutability":"constant","name":"ADD_OR_REMOVE_BPT","nodeType":"VariableDeclaration","scope":1869,"src":"9861:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1614,"name":"uint256","nodeType":"ElementaryTypeName","src":"9861:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333534","id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9907:3:19","typeDescriptions":{"typeIdentifier":"t_rational_354_by_1","typeString":"int_const 354"},"value":"354"},"visibility":"internal"},{"constant":true,"id":1619,"mutability":"constant","name":"INVALID_CIRCUIT_BREAKER_BOUNDS","nodeType":"VariableDeclaration","scope":1869,"src":"9916:62:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1617,"name":"uint256","nodeType":"ElementaryTypeName","src":"9916:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333535","id":1618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9975:3:19","typeDescriptions":{"typeIdentifier":"t_rational_355_by_1","typeString":"int_const 355"},"value":"355"},"visibility":"internal"},{"constant":true,"id":1622,"mutability":"constant","name":"CIRCUIT_BREAKER_TRIPPED","nodeType":"VariableDeclaration","scope":1869,"src":"9984:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1620,"name":"uint256","nodeType":"ElementaryTypeName","src":"9984:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333536","id":1621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10036:3:19","typeDescriptions":{"typeIdentifier":"t_rational_356_by_1","typeString":"int_const 356"},"value":"356"},"visibility":"internal"},{"constant":true,"id":1625,"mutability":"constant","name":"MALICIOUS_QUERY_REVERT","nodeType":"VariableDeclaration","scope":1869,"src":"10045:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"10045:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"333537","id":1624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10096:3:19","typeDescriptions":{"typeIdentifier":"t_rational_357_by_1","typeString":"int_const 357"},"value":"357"},"visibility":"internal"},{"constant":true,"id":1628,"mutability":"constant","name":"REENTRANCY","nodeType":"VariableDeclaration","scope":1869,"src":"10117:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1626,"name":"uint256","nodeType":"ElementaryTypeName","src":"10117:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343030","id":1627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10156:3:19","typeDescriptions":{"typeIdentifier":"t_rational_400_by_1","typeString":"int_const 400"},"value":"400"},"visibility":"internal"},{"constant":true,"id":1631,"mutability":"constant","name":"SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":1869,"src":"10165:50:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1629,"name":"uint256","nodeType":"ElementaryTypeName","src":"10165:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343031","id":1630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10212:3:19","typeDescriptions":{"typeIdentifier":"t_rational_401_by_1","typeString":"int_const 401"},"value":"401"},"visibility":"internal"},{"constant":true,"id":1634,"mutability":"constant","name":"PAUSED","nodeType":"VariableDeclaration","scope":1869,"src":"10221:38:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1632,"name":"uint256","nodeType":"ElementaryTypeName","src":"10221:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343032","id":1633,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10256:3:19","typeDescriptions":{"typeIdentifier":"t_rational_402_by_1","typeString":"int_const 402"},"value":"402"},"visibility":"internal"},{"constant":true,"id":1637,"mutability":"constant","name":"PAUSE_WINDOW_EXPIRED","nodeType":"VariableDeclaration","scope":1869,"src":"10265:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1635,"name":"uint256","nodeType":"ElementaryTypeName","src":"10265:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343033","id":1636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10314:3:19","typeDescriptions":{"typeIdentifier":"t_rational_403_by_1","typeString":"int_const 403"},"value":"403"},"visibility":"internal"},{"constant":true,"id":1640,"mutability":"constant","name":"MAX_PAUSE_WINDOW_DURATION","nodeType":"VariableDeclaration","scope":1869,"src":"10323:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1638,"name":"uint256","nodeType":"ElementaryTypeName","src":"10323:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343034","id":1639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10377:3:19","typeDescriptions":{"typeIdentifier":"t_rational_404_by_1","typeString":"int_const 404"},"value":"404"},"visibility":"internal"},{"constant":true,"id":1643,"mutability":"constant","name":"MAX_BUFFER_PERIOD_DURATION","nodeType":"VariableDeclaration","scope":1869,"src":"10386:58:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1641,"name":"uint256","nodeType":"ElementaryTypeName","src":"10386:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343035","id":1642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:19","typeDescriptions":{"typeIdentifier":"t_rational_405_by_1","typeString":"int_const 405"},"value":"405"},"visibility":"internal"},{"constant":true,"id":1646,"mutability":"constant","name":"INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"10450:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1644,"name":"uint256","nodeType":"ElementaryTypeName","src":"10450:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343036","id":1645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10499:3:19","typeDescriptions":{"typeIdentifier":"t_rational_406_by_1","typeString":"int_const 406"},"value":"406"},"visibility":"internal"},{"constant":true,"id":1649,"mutability":"constant","name":"INSUFFICIENT_ALLOWANCE","nodeType":"VariableDeclaration","scope":1869,"src":"10508:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1647,"name":"uint256","nodeType":"ElementaryTypeName","src":"10508:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343037","id":1648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10559:3:19","typeDescriptions":{"typeIdentifier":"t_rational_407_by_1","typeString":"int_const 407"},"value":"407"},"visibility":"internal"},{"constant":true,"id":1652,"mutability":"constant","name":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1869,"src":"10568:64:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1650,"name":"uint256","nodeType":"ElementaryTypeName","src":"10568:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343038","id":1651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10629:3:19","typeDescriptions":{"typeIdentifier":"t_rational_408_by_1","typeString":"int_const 408"},"value":"408"},"visibility":"internal"},{"constant":true,"id":1655,"mutability":"constant","name":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1869,"src":"10638:62:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1653,"name":"uint256","nodeType":"ElementaryTypeName","src":"10638:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343039","id":1654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10697:3:19","typeDescriptions":{"typeIdentifier":"t_rational_409_by_1","typeString":"int_const 409"},"value":"409"},"visibility":"internal"},{"constant":true,"id":1658,"mutability":"constant","name":"ERC20_MINT_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1869,"src":"10706:58:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1656,"name":"uint256","nodeType":"ElementaryTypeName","src":"10706:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343130","id":1657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10761:3:19","typeDescriptions":{"typeIdentifier":"t_rational_410_by_1","typeString":"int_const 410"},"value":"410"},"visibility":"internal"},{"constant":true,"id":1661,"mutability":"constant","name":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1869,"src":"10770:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1659,"name":"uint256","nodeType":"ElementaryTypeName","src":"10770:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343131","id":1660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10827:3:19","typeDescriptions":{"typeIdentifier":"t_rational_411_by_1","typeString":"int_const 411"},"value":"411"},"visibility":"internal"},{"constant":true,"id":1664,"mutability":"constant","name":"ERC20_APPROVE_FROM_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1869,"src":"10836:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1662,"name":"uint256","nodeType":"ElementaryTypeName","src":"10836:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343132","id":1663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10896:3:19","typeDescriptions":{"typeIdentifier":"t_rational_412_by_1","typeString":"int_const 412"},"value":"412"},"visibility":"internal"},{"constant":true,"id":1667,"mutability":"constant","name":"ERC20_APPROVE_TO_ZERO_ADDRESS","nodeType":"VariableDeclaration","scope":1869,"src":"10905:61:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1665,"name":"uint256","nodeType":"ElementaryTypeName","src":"10905:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343133","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10963:3:19","typeDescriptions":{"typeIdentifier":"t_rational_413_by_1","typeString":"int_const 413"},"value":"413"},"visibility":"internal"},{"constant":true,"id":1670,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":1869,"src":"10972:64:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1668,"name":"uint256","nodeType":"ElementaryTypeName","src":"10972:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343134","id":1669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11033:3:19","typeDescriptions":{"typeIdentifier":"t_rational_414_by_1","typeString":"int_const 414"},"value":"414"},"visibility":"internal"},{"constant":true,"id":1673,"mutability":"constant","name":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"VariableDeclaration","scope":1869,"src":"11042:68:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1671,"name":"uint256","nodeType":"ElementaryTypeName","src":"11042:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343135","id":1672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11107:3:19","typeDescriptions":{"typeIdentifier":"t_rational_415_by_1","typeString":"int_const 415"},"value":"415"},"visibility":"internal"},{"constant":true,"id":1676,"mutability":"constant","name":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"11116:62:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1674,"name":"uint256","nodeType":"ElementaryTypeName","src":"11116:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343136","id":1675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11175:3:19","typeDescriptions":{"typeIdentifier":"t_rational_416_by_1","typeString":"int_const 416"},"value":"416"},"visibility":"internal"},{"constant":true,"id":1679,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"VariableDeclaration","scope":1869,"src":"11184:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1677,"name":"uint256","nodeType":"ElementaryTypeName","src":"11184:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343137","id":1678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11241:3:19","typeDescriptions":{"typeIdentifier":"t_rational_417_by_1","typeString":"int_const 417"},"value":"417"},"visibility":"internal"},{"constant":true,"id":1682,"mutability":"constant","name":"SAFE_ERC20_CALL_FAILED","nodeType":"VariableDeclaration","scope":1869,"src":"11250:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1680,"name":"uint256","nodeType":"ElementaryTypeName","src":"11250:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343138","id":1681,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11301:3:19","typeDescriptions":{"typeIdentifier":"t_rational_418_by_1","typeString":"int_const 418"},"value":"418"},"visibility":"internal"},{"constant":true,"id":1685,"mutability":"constant","name":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"11310:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1683,"name":"uint256","nodeType":"ElementaryTypeName","src":"11310:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343139","id":1684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11367:3:19","typeDescriptions":{"typeIdentifier":"t_rational_419_by_1","typeString":"int_const 419"},"value":"419"},"visibility":"internal"},{"constant":true,"id":1688,"mutability":"constant","name":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"VariableDeclaration","scope":1869,"src":"11376:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1686,"name":"uint256","nodeType":"ElementaryTypeName","src":"11376:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343230","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11430:3:19","typeDescriptions":{"typeIdentifier":"t_rational_420_by_1","typeString":"int_const 420"},"value":"420"},"visibility":"internal"},{"constant":true,"id":1691,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"VariableDeclaration","scope":1869,"src":"11439:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1689,"name":"uint256","nodeType":"ElementaryTypeName","src":"11439:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343231","id":1690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11499:3:19","typeDescriptions":{"typeIdentifier":"t_rational_421_by_1","typeString":"int_const 421"},"value":"421"},"visibility":"internal"},{"constant":true,"id":1694,"mutability":"constant","name":"GRANT_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":1869,"src":"11508:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1692,"name":"uint256","nodeType":"ElementaryTypeName","src":"11508:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343232","id":1693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11559:3:19","typeDescriptions":{"typeIdentifier":"t_rational_422_by_1","typeString":"int_const 422"},"value":"422"},"visibility":"internal"},{"constant":true,"id":1697,"mutability":"constant","name":"REVOKE_SENDER_NOT_ADMIN","nodeType":"VariableDeclaration","scope":1869,"src":"11568:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1695,"name":"uint256","nodeType":"ElementaryTypeName","src":"11568:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343233","id":1696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11620:3:19","typeDescriptions":{"typeIdentifier":"t_rational_423_by_1","typeString":"int_const 423"},"value":"423"},"visibility":"internal"},{"constant":true,"id":1700,"mutability":"constant","name":"RENOUNCE_SENDER_NOT_ALLOWED","nodeType":"VariableDeclaration","scope":1869,"src":"11629:59:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1698,"name":"uint256","nodeType":"ElementaryTypeName","src":"11629:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343234","id":1699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11685:3:19","typeDescriptions":{"typeIdentifier":"t_rational_424_by_1","typeString":"int_const 424"},"value":"424"},"visibility":"internal"},{"constant":true,"id":1703,"mutability":"constant","name":"BUFFER_PERIOD_EXPIRED","nodeType":"VariableDeclaration","scope":1869,"src":"11694:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1701,"name":"uint256","nodeType":"ElementaryTypeName","src":"11694:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343235","id":1702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11744:3:19","typeDescriptions":{"typeIdentifier":"t_rational_425_by_1","typeString":"int_const 425"},"value":"425"},"visibility":"internal"},{"constant":true,"id":1706,"mutability":"constant","name":"CALLER_IS_NOT_OWNER","nodeType":"VariableDeclaration","scope":1869,"src":"11753:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1704,"name":"uint256","nodeType":"ElementaryTypeName","src":"11753:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343236","id":1705,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11801:3:19","typeDescriptions":{"typeIdentifier":"t_rational_426_by_1","typeString":"int_const 426"},"value":"426"},"visibility":"internal"},{"constant":true,"id":1709,"mutability":"constant","name":"NEW_OWNER_IS_ZERO","nodeType":"VariableDeclaration","scope":1869,"src":"11810:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1707,"name":"uint256","nodeType":"ElementaryTypeName","src":"11810:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343237","id":1708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11856:3:19","typeDescriptions":{"typeIdentifier":"t_rational_427_by_1","typeString":"int_const 427"},"value":"427"},"visibility":"internal"},{"constant":true,"id":1712,"mutability":"constant","name":"CODE_DEPLOYMENT_FAILED","nodeType":"VariableDeclaration","scope":1869,"src":"11865:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1710,"name":"uint256","nodeType":"ElementaryTypeName","src":"11865:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343238","id":1711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11916:3:19","typeDescriptions":{"typeIdentifier":"t_rational_428_by_1","typeString":"int_const 428"},"value":"428"},"visibility":"internal"},{"constant":true,"id":1715,"mutability":"constant","name":"CALL_TO_NON_CONTRACT","nodeType":"VariableDeclaration","scope":1869,"src":"11925:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"11925:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343239","id":1714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11974:3:19","typeDescriptions":{"typeIdentifier":"t_rational_429_by_1","typeString":"int_const 429"},"value":"429"},"visibility":"internal"},{"constant":true,"id":1718,"mutability":"constant","name":"LOW_LEVEL_CALL_FAILED","nodeType":"VariableDeclaration","scope":1869,"src":"11983:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1716,"name":"uint256","nodeType":"ElementaryTypeName","src":"11983:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343330","id":1717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12033:3:19","typeDescriptions":{"typeIdentifier":"t_rational_430_by_1","typeString":"int_const 430"},"value":"430"},"visibility":"internal"},{"constant":true,"id":1721,"mutability":"constant","name":"NOT_PAUSED","nodeType":"VariableDeclaration","scope":1869,"src":"12042:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1719,"name":"uint256","nodeType":"ElementaryTypeName","src":"12042:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343331","id":1720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12081:3:19","typeDescriptions":{"typeIdentifier":"t_rational_431_by_1","typeString":"int_const 431"},"value":"431"},"visibility":"internal"},{"constant":true,"id":1724,"mutability":"constant","name":"ADDRESS_ALREADY_ALLOWLISTED","nodeType":"VariableDeclaration","scope":1869,"src":"12090:59:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1722,"name":"uint256","nodeType":"ElementaryTypeName","src":"12090:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343332","id":1723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12146:3:19","typeDescriptions":{"typeIdentifier":"t_rational_432_by_1","typeString":"int_const 432"},"value":"432"},"visibility":"internal"},{"constant":true,"id":1727,"mutability":"constant","name":"ADDRESS_NOT_ALLOWLISTED","nodeType":"VariableDeclaration","scope":1869,"src":"12155:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"12155:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343333","id":1726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12207:3:19","typeDescriptions":{"typeIdentifier":"t_rational_433_by_1","typeString":"int_const 433"},"value":"433"},"visibility":"internal"},{"constant":true,"id":1730,"mutability":"constant","name":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"12216:58:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1728,"name":"uint256","nodeType":"ElementaryTypeName","src":"12216:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343334","id":1729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12271:3:19","typeDescriptions":{"typeIdentifier":"t_rational_434_by_1","typeString":"int_const 434"},"value":"434"},"visibility":"internal"},{"constant":true,"id":1733,"mutability":"constant","name":"INVALID_OPERATION","nodeType":"VariableDeclaration","scope":1869,"src":"12280:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1731,"name":"uint256","nodeType":"ElementaryTypeName","src":"12280:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343335","id":1732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12326:3:19","typeDescriptions":{"typeIdentifier":"t_rational_435_by_1","typeString":"int_const 435"},"value":"435"},"visibility":"internal"},{"constant":true,"id":1736,"mutability":"constant","name":"CODEC_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"12335:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1734,"name":"uint256","nodeType":"ElementaryTypeName","src":"12335:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343336","id":1735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12378:3:19","typeDescriptions":{"typeIdentifier":"t_rational_436_by_1","typeString":"int_const 436"},"value":"436"},"visibility":"internal"},{"constant":true,"id":1739,"mutability":"constant","name":"IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":1869,"src":"12387:48:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1737,"name":"uint256","nodeType":"ElementaryTypeName","src":"12387:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343337","id":1738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12432:3:19","typeDescriptions":{"typeIdentifier":"t_rational_437_by_1","typeString":"int_const 437"},"value":"437"},"visibility":"internal"},{"constant":true,"id":1742,"mutability":"constant","name":"NOT_IN_RECOVERY_MODE","nodeType":"VariableDeclaration","scope":1869,"src":"12441:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1740,"name":"uint256","nodeType":"ElementaryTypeName","src":"12441:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343338","id":1741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12490:3:19","typeDescriptions":{"typeIdentifier":"t_rational_438_by_1","typeString":"int_const 438"},"value":"438"},"visibility":"internal"},{"constant":true,"id":1745,"mutability":"constant","name":"INDUCED_FAILURE","nodeType":"VariableDeclaration","scope":1869,"src":"12499:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1743,"name":"uint256","nodeType":"ElementaryTypeName","src":"12499:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343339","id":1744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12543:3:19","typeDescriptions":{"typeIdentifier":"t_rational_439_by_1","typeString":"int_const 439"},"value":"439"},"visibility":"internal"},{"constant":true,"id":1748,"mutability":"constant","name":"EXPIRED_SIGNATURE","nodeType":"VariableDeclaration","scope":1869,"src":"12552:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1746,"name":"uint256","nodeType":"ElementaryTypeName","src":"12552:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343430","id":1747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12598:3:19","typeDescriptions":{"typeIdentifier":"t_rational_440_by_1","typeString":"int_const 440"},"value":"440"},"visibility":"internal"},{"constant":true,"id":1751,"mutability":"constant","name":"MALFORMED_SIGNATURE","nodeType":"VariableDeclaration","scope":1869,"src":"12607:51:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1749,"name":"uint256","nodeType":"ElementaryTypeName","src":"12607:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343431","id":1750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12655:3:19","typeDescriptions":{"typeIdentifier":"t_rational_441_by_1","typeString":"int_const 441"},"value":"441"},"visibility":"internal"},{"constant":true,"id":1754,"mutability":"constant","name":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"VariableDeclaration","scope":1869,"src":"12664:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1752,"name":"uint256","nodeType":"ElementaryTypeName","src":"12664:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343432","id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12724:3:19","typeDescriptions":{"typeIdentifier":"t_rational_442_by_1","typeString":"int_const 442"},"value":"442"},"visibility":"internal"},{"constant":true,"id":1757,"mutability":"constant","name":"UNHANDLED_FEE_TYPE","nodeType":"VariableDeclaration","scope":1869,"src":"12733:50:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1755,"name":"uint256","nodeType":"ElementaryTypeName","src":"12733:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343433","id":1756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12780:3:19","typeDescriptions":{"typeIdentifier":"t_rational_443_by_1","typeString":"int_const 443"},"value":"443"},"visibility":"internal"},{"constant":true,"id":1760,"mutability":"constant","name":"BURN_FROM_ZERO","nodeType":"VariableDeclaration","scope":1869,"src":"12789:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1758,"name":"uint256","nodeType":"ElementaryTypeName","src":"12789:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"343434","id":1759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12832:3:19","typeDescriptions":{"typeIdentifier":"t_rational_444_by_1","typeString":"int_const 444"},"value":"444"},"visibility":"internal"},{"constant":true,"id":1763,"mutability":"constant","name":"INVALID_POOL_ID","nodeType":"VariableDeclaration","scope":1869,"src":"12855:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1761,"name":"uint256","nodeType":"ElementaryTypeName","src":"12855:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":1762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12899:3:19","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"internal"},{"constant":true,"id":1766,"mutability":"constant","name":"CALLER_NOT_POOL","nodeType":"VariableDeclaration","scope":1869,"src":"12908:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1764,"name":"uint256","nodeType":"ElementaryTypeName","src":"12908:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353031","id":1765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:3:19","typeDescriptions":{"typeIdentifier":"t_rational_501_by_1","typeString":"int_const 501"},"value":"501"},"visibility":"internal"},{"constant":true,"id":1769,"mutability":"constant","name":"SENDER_NOT_ASSET_MANAGER","nodeType":"VariableDeclaration","scope":1869,"src":"12961:56:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1767,"name":"uint256","nodeType":"ElementaryTypeName","src":"12961:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353032","id":1768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13014:3:19","typeDescriptions":{"typeIdentifier":"t_rational_502_by_1","typeString":"int_const 502"},"value":"502"},"visibility":"internal"},{"constant":true,"id":1772,"mutability":"constant","name":"USER_DOESNT_ALLOW_RELAYER","nodeType":"VariableDeclaration","scope":1869,"src":"13023:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1770,"name":"uint256","nodeType":"ElementaryTypeName","src":"13023:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353033","id":1771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13077:3:19","typeDescriptions":{"typeIdentifier":"t_rational_503_by_1","typeString":"int_const 503"},"value":"503"},"visibility":"internal"},{"constant":true,"id":1775,"mutability":"constant","name":"INVALID_SIGNATURE","nodeType":"VariableDeclaration","scope":1869,"src":"13086:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1773,"name":"uint256","nodeType":"ElementaryTypeName","src":"13086:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353034","id":1774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13132:3:19","typeDescriptions":{"typeIdentifier":"t_rational_504_by_1","typeString":"int_const 504"},"value":"504"},"visibility":"internal"},{"constant":true,"id":1778,"mutability":"constant","name":"EXIT_BELOW_MIN","nodeType":"VariableDeclaration","scope":1869,"src":"13141:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1776,"name":"uint256","nodeType":"ElementaryTypeName","src":"13141:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353035","id":1777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13184:3:19","typeDescriptions":{"typeIdentifier":"t_rational_505_by_1","typeString":"int_const 505"},"value":"505"},"visibility":"internal"},{"constant":true,"id":1781,"mutability":"constant","name":"JOIN_ABOVE_MAX","nodeType":"VariableDeclaration","scope":1869,"src":"13193:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1779,"name":"uint256","nodeType":"ElementaryTypeName","src":"13193:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353036","id":1780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13236:3:19","typeDescriptions":{"typeIdentifier":"t_rational_506_by_1","typeString":"int_const 506"},"value":"506"},"visibility":"internal"},{"constant":true,"id":1784,"mutability":"constant","name":"SWAP_LIMIT","nodeType":"VariableDeclaration","scope":1869,"src":"13245:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1782,"name":"uint256","nodeType":"ElementaryTypeName","src":"13245:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353037","id":1783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13284:3:19","typeDescriptions":{"typeIdentifier":"t_rational_507_by_1","typeString":"int_const 507"},"value":"507"},"visibility":"internal"},{"constant":true,"id":1787,"mutability":"constant","name":"SWAP_DEADLINE","nodeType":"VariableDeclaration","scope":1869,"src":"13293:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1785,"name":"uint256","nodeType":"ElementaryTypeName","src":"13293:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353038","id":1786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13335:3:19","typeDescriptions":{"typeIdentifier":"t_rational_508_by_1","typeString":"int_const 508"},"value":"508"},"visibility":"internal"},{"constant":true,"id":1790,"mutability":"constant","name":"CANNOT_SWAP_SAME_TOKEN","nodeType":"VariableDeclaration","scope":1869,"src":"13344:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1788,"name":"uint256","nodeType":"ElementaryTypeName","src":"13344:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353039","id":1789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13395:3:19","typeDescriptions":{"typeIdentifier":"t_rational_509_by_1","typeString":"int_const 509"},"value":"509"},"visibility":"internal"},{"constant":true,"id":1793,"mutability":"constant","name":"UNKNOWN_AMOUNT_IN_FIRST_SWAP","nodeType":"VariableDeclaration","scope":1869,"src":"13404:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1791,"name":"uint256","nodeType":"ElementaryTypeName","src":"13404:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353130","id":1792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13461:3:19","typeDescriptions":{"typeIdentifier":"t_rational_510_by_1","typeString":"int_const 510"},"value":"510"},"visibility":"internal"},{"constant":true,"id":1796,"mutability":"constant","name":"MALCONSTRUCTED_MULTIHOP_SWAP","nodeType":"VariableDeclaration","scope":1869,"src":"13470:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1794,"name":"uint256","nodeType":"ElementaryTypeName","src":"13470:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353131","id":1795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13527:3:19","typeDescriptions":{"typeIdentifier":"t_rational_511_by_1","typeString":"int_const 511"},"value":"511"},"visibility":"internal"},{"constant":true,"id":1799,"mutability":"constant","name":"INTERNAL_BALANCE_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"13536:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1797,"name":"uint256","nodeType":"ElementaryTypeName","src":"13536:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353132","id":1798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13590:3:19","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"},"value":"512"},"visibility":"internal"},{"constant":true,"id":1802,"mutability":"constant","name":"INSUFFICIENT_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"13599:61:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1800,"name":"uint256","nodeType":"ElementaryTypeName","src":"13599:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353133","id":1801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13657:3:19","typeDescriptions":{"typeIdentifier":"t_rational_513_by_1","typeString":"int_const 513"},"value":"513"},"visibility":"internal"},{"constant":true,"id":1805,"mutability":"constant","name":"INVALID_ETH_INTERNAL_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"13666:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1803,"name":"uint256","nodeType":"ElementaryTypeName","src":"13666:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353134","id":1804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13723:3:19","typeDescriptions":{"typeIdentifier":"t_rational_514_by_1","typeString":"int_const 514"},"value":"514"},"visibility":"internal"},{"constant":true,"id":1808,"mutability":"constant","name":"INVALID_POST_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"13732:57:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1806,"name":"uint256","nodeType":"ElementaryTypeName","src":"13732:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353135","id":1807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13786:3:19","typeDescriptions":{"typeIdentifier":"t_rational_515_by_1","typeString":"int_const 515"},"value":"515"},"visibility":"internal"},{"constant":true,"id":1811,"mutability":"constant","name":"INSUFFICIENT_ETH","nodeType":"VariableDeclaration","scope":1869,"src":"13795:48:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1809,"name":"uint256","nodeType":"ElementaryTypeName","src":"13795:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353136","id":1810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13840:3:19","typeDescriptions":{"typeIdentifier":"t_rational_516_by_1","typeString":"int_const 516"},"value":"516"},"visibility":"internal"},{"constant":true,"id":1814,"mutability":"constant","name":"UNALLOCATED_ETH","nodeType":"VariableDeclaration","scope":1869,"src":"13849:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1812,"name":"uint256","nodeType":"ElementaryTypeName","src":"13849:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353137","id":1813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13893:3:19","typeDescriptions":{"typeIdentifier":"t_rational_517_by_1","typeString":"int_const 517"},"value":"517"},"visibility":"internal"},{"constant":true,"id":1817,"mutability":"constant","name":"ETH_TRANSFER","nodeType":"VariableDeclaration","scope":1869,"src":"13902:44:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1815,"name":"uint256","nodeType":"ElementaryTypeName","src":"13902:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353138","id":1816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13943:3:19","typeDescriptions":{"typeIdentifier":"t_rational_518_by_1","typeString":"int_const 518"},"value":"518"},"visibility":"internal"},{"constant":true,"id":1820,"mutability":"constant","name":"CANNOT_USE_ETH_SENTINEL","nodeType":"VariableDeclaration","scope":1869,"src":"13952:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1818,"name":"uint256","nodeType":"ElementaryTypeName","src":"13952:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353139","id":1819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14004:3:19","typeDescriptions":{"typeIdentifier":"t_rational_519_by_1","typeString":"int_const 519"},"value":"519"},"visibility":"internal"},{"constant":true,"id":1823,"mutability":"constant","name":"TOKENS_MISMATCH","nodeType":"VariableDeclaration","scope":1869,"src":"14013:47:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1821,"name":"uint256","nodeType":"ElementaryTypeName","src":"14013:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353230","id":1822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14057:3:19","typeDescriptions":{"typeIdentifier":"t_rational_520_by_1","typeString":"int_const 520"},"value":"520"},"visibility":"internal"},{"constant":true,"id":1826,"mutability":"constant","name":"TOKEN_NOT_REGISTERED","nodeType":"VariableDeclaration","scope":1869,"src":"14066:52:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1824,"name":"uint256","nodeType":"ElementaryTypeName","src":"14066:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353231","id":1825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14115:3:19","typeDescriptions":{"typeIdentifier":"t_rational_521_by_1","typeString":"int_const 521"},"value":"521"},"visibility":"internal"},{"constant":true,"id":1829,"mutability":"constant","name":"TOKEN_ALREADY_REGISTERED","nodeType":"VariableDeclaration","scope":1869,"src":"14124:56:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1827,"name":"uint256","nodeType":"ElementaryTypeName","src":"14124:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353232","id":1828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14177:3:19","typeDescriptions":{"typeIdentifier":"t_rational_522_by_1","typeString":"int_const 522"},"value":"522"},"visibility":"internal"},{"constant":true,"id":1832,"mutability":"constant","name":"TOKENS_ALREADY_SET","nodeType":"VariableDeclaration","scope":1869,"src":"14186:50:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1830,"name":"uint256","nodeType":"ElementaryTypeName","src":"14186:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353233","id":1831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14233:3:19","typeDescriptions":{"typeIdentifier":"t_rational_523_by_1","typeString":"int_const 523"},"value":"523"},"visibility":"internal"},{"constant":true,"id":1835,"mutability":"constant","name":"TOKENS_LENGTH_MUST_BE_2","nodeType":"VariableDeclaration","scope":1869,"src":"14242:55:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1833,"name":"uint256","nodeType":"ElementaryTypeName","src":"14242:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353234","id":1834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14294:3:19","typeDescriptions":{"typeIdentifier":"t_rational_524_by_1","typeString":"int_const 524"},"value":"524"},"visibility":"internal"},{"constant":true,"id":1838,"mutability":"constant","name":"NONZERO_TOKEN_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"14303:53:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1836,"name":"uint256","nodeType":"ElementaryTypeName","src":"14303:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353235","id":1837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14353:3:19","typeDescriptions":{"typeIdentifier":"t_rational_525_by_1","typeString":"int_const 525"},"value":"525"},"visibility":"internal"},{"constant":true,"id":1841,"mutability":"constant","name":"BALANCE_TOTAL_OVERFLOW","nodeType":"VariableDeclaration","scope":1869,"src":"14362:54:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1839,"name":"uint256","nodeType":"ElementaryTypeName","src":"14362:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353236","id":1840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14413:3:19","typeDescriptions":{"typeIdentifier":"t_rational_526_by_1","typeString":"int_const 526"},"value":"526"},"visibility":"internal"},{"constant":true,"id":1844,"mutability":"constant","name":"POOL_NO_TOKENS","nodeType":"VariableDeclaration","scope":1869,"src":"14422:46:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1842,"name":"uint256","nodeType":"ElementaryTypeName","src":"14422:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353237","id":1843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14465:3:19","typeDescriptions":{"typeIdentifier":"t_rational_527_by_1","typeString":"int_const 527"},"value":"527"},"visibility":"internal"},{"constant":true,"id":1847,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_BALANCE","nodeType":"VariableDeclaration","scope":1869,"src":"14474:63:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1845,"name":"uint256","nodeType":"ElementaryTypeName","src":"14474:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353238","id":1846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14534:3:19","typeDescriptions":{"typeIdentifier":"t_rational_528_by_1","typeString":"int_const 528"},"value":"528"},"visibility":"internal"},{"constant":true,"id":1850,"mutability":"constant","name":"SWAP_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1869,"src":"14556:60:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1848,"name":"uint256","nodeType":"ElementaryTypeName","src":"14556:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363030","id":1849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14613:3:19","typeDescriptions":{"typeIdentifier":"t_rational_600_by_1","typeString":"int_const 600"},"value":"600"},"visibility":"internal"},{"constant":true,"id":1853,"mutability":"constant","name":"FLASH_LOAN_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1869,"src":"14622:66:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"14622:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363031","id":1852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14685:3:19","typeDescriptions":{"typeIdentifier":"t_rational_601_by_1","typeString":"int_const 601"},"value":"601"},"visibility":"internal"},{"constant":true,"id":1856,"mutability":"constant","name":"INSUFFICIENT_FLASH_LOAN_FEE_AMOUNT","nodeType":"VariableDeclaration","scope":1869,"src":"14694:66:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"14694:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363032","id":1855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14757:3:19","typeDescriptions":{"typeIdentifier":"t_rational_602_by_1","typeString":"int_const 602"},"value":"602"},"visibility":"internal"},{"constant":true,"id":1859,"mutability":"constant","name":"AUM_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1869,"src":"14766:59:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1857,"name":"uint256","nodeType":"ElementaryTypeName","src":"14766:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"363033","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14822:3:19","typeDescriptions":{"typeIdentifier":"t_rational_603_by_1","typeString":"int_const 603"},"value":"603"},"visibility":"internal"},{"constant":true,"id":1862,"mutability":"constant","name":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"VariableDeclaration","scope":1869,"src":"14851:64:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1860,"name":"uint256","nodeType":"ElementaryTypeName","src":"14851:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"373030","id":1861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14912:3:19","typeDescriptions":{"typeIdentifier":"t_rational_700_by_1","typeString":"int_const 700"},"value":"700"},"visibility":"internal"},{"constant":true,"id":1865,"mutability":"constant","name":"UNIMPLEMENTED","nodeType":"VariableDeclaration","scope":1869,"src":"14934:45:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1863,"name":"uint256","nodeType":"ElementaryTypeName","src":"14934:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393938","id":1864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14976:3:19","typeDescriptions":{"typeIdentifier":"t_rational_998_by_1","typeString":"int_const 998"},"value":"998"},"visibility":"internal"},{"constant":true,"id":1868,"mutability":"constant","name":"SHOULD_NOT_HAPPEN","nodeType":"VariableDeclaration","scope":1869,"src":"14985:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1866,"name":"uint256","nodeType":"ElementaryTypeName","src":"14985:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"393939","id":1867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15031:3:19","typeDescriptions":{"typeIdentifier":"t_rational_999_by_1","typeString":"int_const 999"},"value":"999"},"visibility":"internal"}],"scope":1870,"src":"5072:9965:19"}],"src":"688:14350:19"},"id":19},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","exportedSymbols":{"IAuthentication":[1880]},"id":1881,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1871,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:20"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":1880,"linearizedBaseContracts":[1880],"name":"IAuthentication","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1872,"nodeType":"StructuredDocumentation","src":"753:116:20","text":" @dev Returns the action identifier associated with the external function described by `selector`."},"functionSelector":"851c1bb3","id":1879,"implemented":false,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","parameters":{"id":1875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1874,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":1879,"src":"895:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1873,"name":"bytes4","nodeType":"ElementaryTypeName","src":"895:6:20","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"894:17:20"},"returnParameters":{"id":1878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1877,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1879,"src":"935:7:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1876,"name":"bytes32","nodeType":"ElementaryTypeName","src":"935:7:20","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"934:9:20"},"scope":1880,"src":"874:70:20","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1881,"src":"721:225:20"}],"src":"688:259:20"},"id":20},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","exportedSymbols":{"ISignaturesValidator":[1898]},"id":1899,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1882,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1883,"nodeType":"StructuredDocumentation","src":"721:95:21","text":" @dev Interface for the SignatureValidator helper, used to support meta-transactions."},"fullyImplemented":false,"id":1898,"linearizedBaseContracts":[1898],"name":"ISignaturesValidator","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1884,"nodeType":"StructuredDocumentation","src":"854:60:21","text":" @dev Returns the EIP712 domain separator."},"functionSelector":"ed24911d","id":1889,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":1885,"nodeType":"ParameterList","parameters":[],"src":"946:2:21"},"returnParameters":{"id":1888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1889,"src":"972:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1886,"name":"bytes32","nodeType":"ElementaryTypeName","src":"972:7:21","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"971:9:21"},"scope":1898,"src":"919:62:21","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1890,"nodeType":"StructuredDocumentation","src":"987:83:21","text":" @dev Returns the next nonce used by an address to sign messages."},"functionSelector":"90193b7c","id":1897,"implemented":false,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","parameters":{"id":1893,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1892,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":1897,"src":"1097:12:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1891,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:21","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1096:14:21"},"returnParameters":{"id":1896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1895,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1897,"src":"1134:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1133:9:21"},"scope":1898,"src":"1075:68:21","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1899,"src":"817:328:21"}],"src":"688:458:21"},"id":21},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","exportedSymbols":{"ITemporarilyPausable":[1917]},"id":1918,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1900,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:22"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":1901,"nodeType":"StructuredDocumentation","src":"721:61:22","text":" @dev Interface for the TemporarilyPausable helper."},"fullyImplemented":false,"id":1917,"linearizedBaseContracts":[1917],"name":"ITemporarilyPausable","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1902,"nodeType":"StructuredDocumentation","src":"820:83:22","text":" @dev Emitted every time the pause state changes by `_setPaused`."},"id":1906,"name":"PausedStateChanged","nodeType":"EventDefinition","parameters":{"id":1905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1904,"indexed":false,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":1906,"src":"933:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1903,"name":"bool","nodeType":"ElementaryTypeName","src":"933:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"932:13:22"},"src":"908:38:22"},{"documentation":{"id":1907,"nodeType":"StructuredDocumentation","src":"952:57:22","text":" @dev Returns the current paused state."},"functionSelector":"1c0de051","id":1916,"implemented":false,"kind":"function","modifiers":[],"name":"getPausedState","nodeType":"FunctionDefinition","parameters":{"id":1908,"nodeType":"ParameterList","parameters":[],"src":"1037:2:22"},"returnParameters":{"id":1915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1910,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":1916,"src":"1100:11:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1909,"name":"bool","nodeType":"ElementaryTypeName","src":"1100:4:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1912,"mutability":"mutable","name":"pauseWindowEndTime","nodeType":"VariableDeclaration","scope":1916,"src":"1125:26:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1911,"name":"uint256","nodeType":"ElementaryTypeName","src":"1125:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1914,"mutability":"mutable","name":"bufferPeriodEndTime","nodeType":"VariableDeclaration","scope":1916,"src":"1165:27:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1913,"name":"uint256","nodeType":"ElementaryTypeName","src":"1165:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1086:116:22"},"scope":1917,"src":"1014:189:22","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1918,"src":"783:422:22"}],"src":"688:518:22"},"id":22},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","exportedSymbols":{"IERC4626":[1997]},"id":1998,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1919,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:23"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":1920,"nodeType":"ImportDirective","scope":1998,"sourceUnit":2091,"src":"721:36:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1921,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"781:6:23","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":1922,"nodeType":"InheritanceSpecifier","src":"781:6:23"}],"contractDependencies":[2090],"contractKind":"interface","fullyImplemented":false,"id":1997,"linearizedBaseContracts":[1997,2090],"name":"IERC4626","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":1923,"nodeType":"StructuredDocumentation","src":"794:112:23","text":" @dev `caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`."},"id":1933,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":1932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1925,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":1933,"src":"925:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1924,"name":"address","nodeType":"ElementaryTypeName","src":"925:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1927,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1933,"src":"949:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1926,"name":"address","nodeType":"ElementaryTypeName","src":"949:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1929,"indexed":false,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1933,"src":"972:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1928,"name":"uint256","nodeType":"ElementaryTypeName","src":"972:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1931,"indexed":false,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1933,"src":"988:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1930,"name":"uint256","nodeType":"ElementaryTypeName","src":"988:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"924:79:23"},"src":"911:93:23"},{"anonymous":false,"documentation":{"id":1934,"nodeType":"StructuredDocumentation","src":"1010:146:23","text":" @dev `caller` has exchanged `shares`, owned by `owner`, for `assets`,\n and transferred those `assets` to `receiver`."},"id":1946,"name":"Withdraw","nodeType":"EventDefinition","parameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1936,"indexed":true,"mutability":"mutable","name":"caller","nodeType":"VariableDeclaration","scope":1946,"src":"1185:22:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1935,"name":"address","nodeType":"ElementaryTypeName","src":"1185:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1938,"indexed":true,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1946,"src":"1217:24:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1937,"name":"address","nodeType":"ElementaryTypeName","src":"1217:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1940,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1946,"src":"1251:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1939,"name":"address","nodeType":"ElementaryTypeName","src":"1251:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1942,"indexed":false,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1946,"src":"1282:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1282:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1944,"indexed":false,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1946,"src":"1306:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1306:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1175:151:23"},"src":"1161:166:23"},{"documentation":{"id":1947,"nodeType":"StructuredDocumentation","src":"1333:118:23","text":" @dev Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens."},"functionSelector":"6e553f65","id":1956,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":1952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1949,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1956,"src":"1473:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1948,"name":"uint256","nodeType":"ElementaryTypeName","src":"1473:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1951,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1956,"src":"1489:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1950,"name":"address","nodeType":"ElementaryTypeName","src":"1489:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1472:34:23"},"returnParameters":{"id":1955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1954,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1956,"src":"1525:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1525:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1524:16:23"},"scope":1997,"src":"1456:85:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1957,"nodeType":"StructuredDocumentation","src":"1547:114:23","text":" @dev Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`."},"functionSelector":"ba087652","id":1968,"implemented":false,"kind":"function","modifiers":[],"name":"redeem","nodeType":"FunctionDefinition","parameters":{"id":1964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1959,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1968,"src":"1691:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1958,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1961,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":1968,"src":"1715:16:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1960,"name":"address","nodeType":"ElementaryTypeName","src":"1715:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1963,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":1968,"src":"1741:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1962,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1681:79:23"},"returnParameters":{"id":1967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1966,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1968,"src":"1779:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1965,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1778:16:23"},"scope":1997,"src":"1666:129:23","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1969,"nodeType":"StructuredDocumentation","src":"1801:124:23","text":" @dev The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing."},"functionSelector":"38d52e0f","id":1974,"implemented":false,"kind":"function","modifiers":[],"name":"asset","nodeType":"FunctionDefinition","parameters":{"id":1970,"nodeType":"ParameterList","parameters":[],"src":"1944:2:23"},"returnParameters":{"id":1973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1972,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1974,"src":"1970:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1971,"name":"address","nodeType":"ElementaryTypeName","src":"1970:7:23","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1969:9:23"},"scope":1997,"src":"1930:49:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1975,"nodeType":"StructuredDocumentation","src":"1985:92:23","text":" @dev Total amount of the underlying asset that is “managed” by Vault."},"functionSelector":"01e1d114","id":1980,"implemented":false,"kind":"function","modifiers":[],"name":"totalAssets","nodeType":"FunctionDefinition","parameters":{"id":1976,"nodeType":"ParameterList","parameters":[],"src":"2102:2:23"},"returnParameters":{"id":1979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1978,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":1980,"src":"2128:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1977,"name":"uint256","nodeType":"ElementaryTypeName","src":"2128:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2127:9:23"},"scope":1997,"src":"2082:55:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1981,"nodeType":"StructuredDocumentation","src":"2143:180:23","text":" @dev The amount of `assets` that the Vault would exchange for the amount\n of `shares` provided, in an ideal scenario where all the conditions are met."},"functionSelector":"07a2d13a","id":1988,"implemented":false,"kind":"function","modifiers":[],"name":"convertToAssets","nodeType":"FunctionDefinition","parameters":{"id":1984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1983,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1988,"src":"2353:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1982,"name":"uint256","nodeType":"ElementaryTypeName","src":"2353:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2352:16:23"},"returnParameters":{"id":1987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1986,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1988,"src":"2392:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1985,"name":"uint256","nodeType":"ElementaryTypeName","src":"2392:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2391:16:23"},"scope":1997,"src":"2328:80:23","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1989,"nodeType":"StructuredDocumentation","src":"2414:180:23","text":" @dev The amount of `shares` that the Vault would exchange for the amount\n of `assets` provided, in an ideal scenario where all the conditions are met."},"functionSelector":"c6e6f592","id":1996,"implemented":false,"kind":"function","modifiers":[],"name":"convertToShares","nodeType":"FunctionDefinition","parameters":{"id":1992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1991,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":1996,"src":"2624:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1990,"name":"uint256","nodeType":"ElementaryTypeName","src":"2624:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2623:16:23"},"returnParameters":{"id":1995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1994,"mutability":"mutable","name":"shares","nodeType":"VariableDeclaration","scope":1996,"src":"2663:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1993,"name":"uint256","nodeType":"ElementaryTypeName","src":"2663:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2662:16:23"},"scope":1997,"src":"2599:80:23","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1998,"src":"759:1922:23"}],"src":"688:1994:23"},"id":23},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","exportedSymbols":{"IWETH":[2012]},"id":2013,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":1999,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:24"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../openzeppelin/IERC20.sol","id":2000,"nodeType":"ImportDirective","scope":2013,"sourceUnit":2091,"src":"721:36:24","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2002,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"929:6:24","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":2003,"nodeType":"InheritanceSpecifier","src":"929:6:24"}],"contractDependencies":[2090],"contractKind":"interface","documentation":{"id":2001,"nodeType":"StructuredDocumentation","src":"759:150:24","text":" @dev Interface for WETH9.\n See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol"},"fullyImplemented":false,"id":2012,"linearizedBaseContracts":[2012,2090],"name":"IWETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"d0e30db0","id":2006,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2004,"nodeType":"ParameterList","parameters":[],"src":"958:2:24"},"returnParameters":{"id":2005,"nodeType":"ParameterList","parameters":[],"src":"977:0:24"},"scope":2012,"src":"942:36:24","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2e1a7d4d","id":2011,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2008,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2011,"src":"1002:14:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2007,"name":"uint256","nodeType":"ElementaryTypeName","src":"1002:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1001:16:24"},"returnParameters":{"id":2010,"nodeType":"ParameterList","parameters":[],"src":"1026:0:24"},"scope":2012,"src":"984:43:24","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2013,"src":"910:119:24"}],"src":"688:342:24"},"id":24},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","exportedSymbols":{"IERC20":[2090]},"id":2091,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2014,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:25"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2015,"nodeType":"StructuredDocumentation","src":"66:70:25","text":" @dev Interface of the ERC20 standard as defined in the EIP."},"fullyImplemented":false,"id":2090,"linearizedBaseContracts":[2090],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"160:66:25","text":" @dev Returns the amount of tokens in existence."},"functionSelector":"18160ddd","id":2021,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","parameters":{"id":2017,"nodeType":"ParameterList","parameters":[],"src":"251:2:25"},"returnParameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2019,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2021,"src":"277:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2018,"name":"uint256","nodeType":"ElementaryTypeName","src":"277:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"276:9:25"},"scope":2090,"src":"231:55:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2022,"nodeType":"StructuredDocumentation","src":"292:72:25","text":" @dev Returns the amount of tokens owned by `account`."},"functionSelector":"70a08231","id":2029,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","parameters":{"id":2025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2024,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2029,"src":"388:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2023,"name":"address","nodeType":"ElementaryTypeName","src":"388:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:17:25"},"returnParameters":{"id":2028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2029,"src":"428:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2026,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"427:9:25"},"scope":2090,"src":"369:68:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2030,"nodeType":"StructuredDocumentation","src":"443:209:25","text":" @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"a9059cbb","id":2039,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","parameters":{"id":2035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2032,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2039,"src":"675:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2031,"name":"address","nodeType":"ElementaryTypeName","src":"675:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2034,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2039,"src":"694:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2033,"name":"uint256","nodeType":"ElementaryTypeName","src":"694:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"674:35:25"},"returnParameters":{"id":2038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2037,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2039,"src":"728:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2036,"name":"bool","nodeType":"ElementaryTypeName","src":"728:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"727:6:25"},"scope":2090,"src":"657:77:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2040,"nodeType":"StructuredDocumentation","src":"740:264:25","text":" @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."},"functionSelector":"dd62ed3e","id":2049,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","parameters":{"id":2045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2042,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2049,"src":"1028:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2041,"name":"address","nodeType":"ElementaryTypeName","src":"1028:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2044,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2049,"src":"1043:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2043,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1027:32:25"},"returnParameters":{"id":2048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2047,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2049,"src":"1083:7:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1082:9:25"},"scope":2090,"src":"1009:83:25","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2050,"nodeType":"StructuredDocumentation","src":"1098:642:25","text":" @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":2059,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","parameters":{"id":2055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2052,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2059,"src":"1762:15:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2051,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2054,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2059,"src":"1779:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2053,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1761:33:25"},"returnParameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2057,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2059,"src":"1813:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2056,"name":"bool","nodeType":"ElementaryTypeName","src":"1813:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1812:6:25"},"scope":2090,"src":"1745:74:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2060,"nodeType":"StructuredDocumentation","src":"1825:296:25","text":" @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":2071,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","parameters":{"id":2067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2062,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2071,"src":"2157:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2061,"name":"address","nodeType":"ElementaryTypeName","src":"2157:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2064,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2071,"src":"2181:17:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2063,"name":"address","nodeType":"ElementaryTypeName","src":"2181:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2066,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2071,"src":"2208:14:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2065,"name":"uint256","nodeType":"ElementaryTypeName","src":"2208:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2147:81:25"},"returnParameters":{"id":2070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2069,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2071,"src":"2247:4:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2068,"name":"bool","nodeType":"ElementaryTypeName","src":"2247:4:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2246:6:25"},"scope":2090,"src":"2126:127:25","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":2072,"nodeType":"StructuredDocumentation","src":"2259:158:25","text":" @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."},"id":2080,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":2079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2074,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":2080,"src":"2437:20:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2073,"name":"address","nodeType":"ElementaryTypeName","src":"2437:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2076,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":2080,"src":"2459:18:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2075,"name":"address","nodeType":"ElementaryTypeName","src":"2459:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2078,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2080,"src":"2479:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2077,"name":"uint256","nodeType":"ElementaryTypeName","src":"2479:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2436:57:25"},"src":"2422:72:25"},{"anonymous":false,"documentation":{"id":2081,"nodeType":"StructuredDocumentation","src":"2500:148:25","text":" @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."},"id":2089,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":2088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2083,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2089,"src":"2668:21:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2082,"name":"address","nodeType":"ElementaryTypeName","src":"2668:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2085,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2089,"src":"2691:23:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2084,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:25","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2087,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2089,"src":"2716:13:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2716:7:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2667:63:25"},"src":"2653:78:25"}],"scope":2091,"src":"137:2596:25"}],"src":"33:2701:25"},"id":25},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[2126]},"id":2127,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2092,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:26"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2093,"nodeType":"StructuredDocumentation","src":"66:482:26","text":" @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":false,"id":2126,"linearizedBaseContracts":[2126],"name":"IERC20Permit","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2094,"nodeType":"StructuredDocumentation","src":"578:788:26","text":" @dev Sets `value` as the allowance of `spender` over `owner`'s tokens,\n given `owner`'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section]."},"functionSelector":"d505accf","id":2111,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2096,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2111,"src":"1396:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2095,"name":"address","nodeType":"ElementaryTypeName","src":"1396:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2098,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2111,"src":"1419:15:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2097,"name":"address","nodeType":"ElementaryTypeName","src":"1419:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2100,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2111,"src":"1444:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2099,"name":"uint256","nodeType":"ElementaryTypeName","src":"1444:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2102,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2111,"src":"1467:16:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2101,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2104,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2111,"src":"1493:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2103,"name":"uint8","nodeType":"ElementaryTypeName","src":"1493:5:26","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2106,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2111,"src":"1510:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2105,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1510:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2108,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2111,"src":"1529:9:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1529:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1386:158:26"},"returnParameters":{"id":2110,"nodeType":"ParameterList","parameters":[],"src":"1553:0:26"},"scope":2126,"src":"1371:183:26","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2112,"nodeType":"StructuredDocumentation","src":"1560:294:26","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":2119,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","parameters":{"id":2115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2114,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2119,"src":"1875:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2113,"name":"address","nodeType":"ElementaryTypeName","src":"1875:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1874:15:26"},"returnParameters":{"id":2118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2117,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2119,"src":"1913:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2116,"name":"uint256","nodeType":"ElementaryTypeName","src":"1913:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1912:9:26"},"scope":2126,"src":"1859:63:26","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2120,"nodeType":"StructuredDocumentation","src":"1928:128:26","text":" @dev Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}."},"functionSelector":"3644e515","id":2125,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","parameters":{"id":2121,"nodeType":"ParameterList","parameters":[],"src":"2139:2:26"},"returnParameters":{"id":2124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2123,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2125,"src":"2165:7:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2122,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2165:7:26","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2164:9:26"},"scope":2126,"src":"2114:60:26","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2127,"src":"549:1627:26"}],"src":"33:2144:26"},"id":26},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","exportedSymbols":{"IERC20PermitDAI":[2149]},"id":2150,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2128,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"33:31:27"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2149,"linearizedBaseContracts":[2149],"name":"IERC20PermitDAI","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2129,"nodeType":"StructuredDocumentation","src":"98:485:27","text":" @notice update allowance with a signed permit\n @param holder Token owner's address (Authorizer)\n @param spender Spender's address\n @param nonce The permit nonce\n @param expiry The time at which this expires (unix time)\n @param allowed Whether the spender is allowed or disallowed from spending\n @param v v of the signature\n @param r r of the signature\n @param s s of the signature"},"functionSelector":"8fcbaf0c","id":2148,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2131,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":2148,"src":"613:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2130,"name":"address","nodeType":"ElementaryTypeName","src":"613:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2133,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2148,"src":"637:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2132,"name":"address","nodeType":"ElementaryTypeName","src":"637:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2135,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":2148,"src":"662:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2134,"name":"uint256","nodeType":"ElementaryTypeName","src":"662:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2137,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":2148,"src":"685:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2136,"name":"uint256","nodeType":"ElementaryTypeName","src":"685:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2139,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":2148,"src":"709:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2138,"name":"bool","nodeType":"ElementaryTypeName","src":"709:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2141,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2148,"src":"731:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2140,"name":"uint8","nodeType":"ElementaryTypeName","src":"731:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2143,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2148,"src":"748:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2142,"name":"bytes32","nodeType":"ElementaryTypeName","src":"748:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2145,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2148,"src":"767:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2144,"name":"bytes32","nodeType":"ElementaryTypeName","src":"767:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"603:179:27"},"returnParameters":{"id":2147,"nodeType":"ParameterList","parameters":[],"src":"791:0:27"},"scope":2149,"src":"588:204:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2150,"src":"66:728:27"}],"src":"33:762:27"},"id":27},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","exportedSymbols":{"IBALTokenHolder":[2177]},"id":2178,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2151,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:28"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":2152,"nodeType":"ImportDirective","scope":2178,"sourceUnit":1881,"src":"721:55:28","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2153,"nodeType":"ImportDirective","scope":2178,"sourceUnit":2091,"src":"777:51:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2154,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1880,"src":"859:15:28","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1880","typeString":"contract IAuthentication"}},"id":2155,"nodeType":"InheritanceSpecifier","src":"859:15:28"}],"contractDependencies":[1880],"contractKind":"interface","fullyImplemented":false,"id":2177,"linearizedBaseContracts":[2177,1880],"name":"IBALTokenHolder","nodeType":"ContractDefinition","nodes":[{"functionSelector":"17d7de7c","id":2160,"implemented":false,"kind":"function","modifiers":[],"name":"getName","nodeType":"FunctionDefinition","parameters":{"id":2156,"nodeType":"ParameterList","parameters":[],"src":"897:2:28"},"returnParameters":{"id":2159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2158,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2160,"src":"923:13:28","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2157,"name":"string","nodeType":"ElementaryTypeName","src":"923:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"922:15:28"},"scope":2177,"src":"881:57:28","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c1075329","id":2167,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawFunds","nodeType":"FunctionDefinition","parameters":{"id":2165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2162,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2167,"src":"967:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2161,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2164,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2167,"src":"986:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2163,"name":"uint256","nodeType":"ElementaryTypeName","src":"986:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"966:35:28"},"returnParameters":{"id":2166,"nodeType":"ParameterList","parameters":[],"src":"1010:0:28"},"scope":2177,"src":"944:67:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"8b6ca32c","id":2176,"implemented":false,"kind":"function","modifiers":[],"name":"sweepTokens","nodeType":"FunctionDefinition","parameters":{"id":2174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2169,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2176,"src":"1047:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2168,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1047:6:28","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":2171,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2176,"src":"1069:17:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2170,"name":"address","nodeType":"ElementaryTypeName","src":"1069:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2173,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2176,"src":"1096:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2172,"name":"uint256","nodeType":"ElementaryTypeName","src":"1096:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1037:79:28"},"returnParameters":{"id":2175,"nodeType":"ParameterList","parameters":[],"src":"1125:0:28"},"scope":2177,"src":"1017:109:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2178,"src":"830:298:28"}],"src":"688:441:28"},"id":28},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","exportedSymbols":{"IBALTokenHolderFactory":[2207]},"id":2208,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2179,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:29"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2180,"nodeType":"ImportDirective","scope":2208,"sourceUnit":3618,"src":"721:29:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"../liquidity-mining/IBalancerToken.sol","id":2181,"nodeType":"ImportDirective","scope":2208,"sourceUnit":253,"src":"751:48:29","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","file":"./IBALTokenHolder.sol","id":2182,"nodeType":"ImportDirective","scope":2208,"sourceUnit":2178,"src":"801:31:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2207,"linearizedBaseContracts":[2207],"name":"IBALTokenHolderFactory","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c0039699","id":2187,"implemented":false,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":2183,"nodeType":"ParameterList","parameters":[],"src":"898:2:29"},"returnParameters":{"id":2186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2185,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2187,"src":"924:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":2184,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"924:14:29","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"923:16:29"},"scope":2207,"src":"873:67:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d928af8","id":2192,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":2188,"nodeType":"ParameterList","parameters":[],"src":"963:2:29"},"returnParameters":{"id":2191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2190,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2192,"src":"989:6:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":2189,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"989:6:29","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"988:8:29"},"scope":2207,"src":"946:51:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"36390717","id":2199,"implemented":false,"kind":"function","modifiers":[],"name":"isHolderFromFactory","nodeType":"FunctionDefinition","parameters":{"id":2195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2194,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":2199,"src":"1032:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2193,"name":"address","nodeType":"ElementaryTypeName","src":"1032:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1031:16:29"},"returnParameters":{"id":2198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2197,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2199,"src":"1071:4:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2196,"name":"bool","nodeType":"ElementaryTypeName","src":"1071:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1070:6:29"},"scope":2207,"src":"1003:74:29","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b6a46b3b","id":2206,"implemented":false,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":2202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2201,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2206,"src":"1099:18:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2200,"name":"string","nodeType":"ElementaryTypeName","src":"1099:6:29","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1098:20:29"},"returnParameters":{"id":2205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2204,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2206,"src":"1137:15:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2177","typeString":"contract IBALTokenHolder"},"typeName":{"id":2203,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":2177,"src":"1137:15:29","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2177","typeString":"contract IBALTokenHolder"}},"visibility":"internal"}],"src":"1136:17:29"},"scope":2207,"src":"1083:71:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2208,"src":"834:322:29"}],"src":"688:469:29"},"id":29},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","exportedSymbols":{"IBalancerQueries":[2270]},"id":2271,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2209,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:30"},{"id":2210,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:30"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2211,"nodeType":"ImportDirective","scope":2271,"sourceUnit":3618,"src":"755:29:30","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2212,"nodeType":"StructuredDocumentation","src":"786:945:30","text":" @dev Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact\n result they would have if called on the Vault given the current state. Note that the results will be affected by\n other transactions interacting with the Pools involved.\n All query functions can be called both on-chain and off-chain.\n If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce\n no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However,\n calling them via STATICCALL will fail.\n If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for\n non-view functions.\n In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same\n structs for simplicity."},"fullyImplemented":false,"id":2270,"linearizedBaseContracts":[2270],"name":"IBalancerQueries","nodeType":"ContractDefinition","nodes":[{"functionSelector":"e969f6b3","id":2221,"implemented":false,"kind":"function","modifiers":[],"name":"querySwap","nodeType":"FunctionDefinition","parameters":{"id":2217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2214,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":2221,"src":"1784:35:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":2213,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3468,"src":"1784:17:30","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":2216,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2221,"src":"1821:34:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2215,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"1821:21:30","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1783:73:30"},"returnParameters":{"id":2220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2219,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2221,"src":"1891:7:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2218,"name":"uint256","nodeType":"ElementaryTypeName","src":"1891:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1890:9:30"},"scope":2270,"src":"1765:135:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f84d066e","id":2237,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":2232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2223,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":2237,"src":"1939:20:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":2222,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"1939:15:30","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":2226,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":2237,"src":"1969:35:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":2224,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"1969:20:30","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":2225,"nodeType":"ArrayTypeName","src":"1969:22:30","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":2229,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":2237,"src":"2014:22:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":2227,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2014:6:30","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":2228,"nodeType":"ArrayTypeName","src":"2014:8:30","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":2231,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":2237,"src":"2046:34:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":2230,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"2046:21:30","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1929:157:30"},"returnParameters":{"id":2236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2235,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":2237,"src":"2105:27:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":2233,"name":"int256","nodeType":"ElementaryTypeName","src":"2105:6:30","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2234,"nodeType":"ArrayTypeName","src":"2105:8:30","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"2104:29:30"},"scope":2270,"src":"1906:228:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"9ebbf05d","id":2253,"implemented":false,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","parameters":{"id":2246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2239,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2253,"src":"2168:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2168:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2241,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2253,"src":"2192:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2240,"name":"address","nodeType":"ElementaryTypeName","src":"2192:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2243,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2253,"src":"2216:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2242,"name":"address","nodeType":"ElementaryTypeName","src":"2216:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2245,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2253,"src":"2243:37:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":2244,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3396,"src":"2243:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"2158:128:30"},"returnParameters":{"id":2252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2248,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":2253,"src":"2305:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2247,"name":"uint256","nodeType":"ElementaryTypeName","src":"2305:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2251,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":2253,"src":"2321:26:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2249,"name":"uint256","nodeType":"ElementaryTypeName","src":"2321:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2250,"nodeType":"ArrayTypeName","src":"2321:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2304:44:30"},"scope":2270,"src":"2140:209:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c7b2c52c","id":2269,"implemented":false,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","parameters":{"id":2262,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2255,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2269,"src":"2383:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2254,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2383:7:30","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2257,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2269,"src":"2407:14:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2256,"name":"address","nodeType":"ElementaryTypeName","src":"2407:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2259,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2269,"src":"2431:17:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2258,"name":"address","nodeType":"ElementaryTypeName","src":"2431:7:30","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2261,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":2269,"src":"2458:37:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":2260,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3419,"src":"2458:22:30","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"2373:128:30"},"returnParameters":{"id":2268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2264,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":2269,"src":"2520:13:30","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2263,"name":"uint256","nodeType":"ElementaryTypeName","src":"2520:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2267,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":2269,"src":"2535:27:30","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2265,"name":"uint256","nodeType":"ElementaryTypeName","src":"2535:7:30","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2266,"nodeType":"ArrayTypeName","src":"2535:9:30","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2519:44:30"},"scope":2270,"src":"2355:209:30","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2271,"src":"1732:834:30"}],"src":"688:1879:30"},"id":30},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","exportedSymbols":{"IBalancerRelayer":[2295]},"id":2296,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2272,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:31"},{"id":2273,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:31"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2274,"nodeType":"ImportDirective","scope":2296,"sourceUnit":3618,"src":"755:29:31","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2275,"nodeType":"StructuredDocumentation","src":"786:102:31","text":" @title IBalancerRelayer\n @notice Allows safe multicall execution of a relayer's functions"},"fullyImplemented":false,"id":2295,"linearizedBaseContracts":[2295],"name":"IBalancerRelayer","nodeType":"ContractDefinition","nodes":[{"functionSelector":"7678922e","id":2280,"implemented":false,"kind":"function","modifiers":[],"name":"getLibrary","nodeType":"FunctionDefinition","parameters":{"id":2276,"nodeType":"ParameterList","parameters":[],"src":"941:2:31"},"returnParameters":{"id":2279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2278,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2280,"src":"967:7:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2277,"name":"address","nodeType":"ElementaryTypeName","src":"967:7:31","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"966:9:31"},"scope":2295,"src":"922:54:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"8d928af8","id":2285,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":2281,"nodeType":"ParameterList","parameters":[],"src":"999:2:31"},"returnParameters":{"id":2284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2283,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2285,"src":"1025:6:31","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":2282,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1025:6:31","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1024:8:31"},"scope":2295,"src":"982:51:31","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ac9650d8","id":2294,"implemented":false,"kind":"function","modifiers":[],"name":"multicall","nodeType":"FunctionDefinition","parameters":{"id":2289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2288,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":2294,"src":"1058:21:31","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2286,"name":"bytes","nodeType":"ElementaryTypeName","src":"1058:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2287,"nodeType":"ArrayTypeName","src":"1058:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1057:23:31"},"returnParameters":{"id":2293,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2292,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":2294,"src":"1107:22:31","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":2290,"name":"bytes","nodeType":"ElementaryTypeName","src":"1107:5:31","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":2291,"nodeType":"ArrayTypeName","src":"1107:7:31","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"1106:24:31"},"scope":2295,"src":"1039:92:31","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2296,"src":"889:244:31"}],"src":"688:446:31"},"id":31},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","exportedSymbols":{"IProtocolFeePercentagesProvider":[2376],"ProtocolFeeType":[2389]},"id":2390,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2297,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:32"},{"id":2298,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:32"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2299,"nodeType":"StructuredDocumentation","src":"755:271:32","text":" @dev Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some\n of these values may also be retrievable from other places (such as the swap fee percentage), but this is the\n preferred source nonetheless."},"fullyImplemented":false,"id":2376,"linearizedBaseContracts":[2376],"name":"IProtocolFeePercentagesProvider","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2307,"name":"ProtocolFeeTypeRegistered","nodeType":"EventDefinition","parameters":{"id":2306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2301,"indexed":true,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2307,"src":"1256:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2300,"name":"uint256","nodeType":"ElementaryTypeName","src":"1256:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2303,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2307,"src":"1281:11:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2302,"name":"string","nodeType":"ElementaryTypeName","src":"1281:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2305,"indexed":false,"mutability":"mutable","name":"maximumPercentage","nodeType":"VariableDeclaration","scope":2307,"src":"1294:25:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2304,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1255:65:32"},"src":"1224:97:32"},{"anonymous":false,"id":2313,"name":"ProtocolFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2309,"indexed":true,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2313,"src":"1795:23:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2308,"name":"uint256","nodeType":"ElementaryTypeName","src":"1795:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2311,"indexed":false,"mutability":"mutable","name":"percentage","nodeType":"VariableDeclaration","scope":2313,"src":"1820:18:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2310,"name":"uint256","nodeType":"ElementaryTypeName","src":"1820:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1794:45:32"},"src":"1760:80:32"},{"documentation":{"id":2314,"nodeType":"StructuredDocumentation","src":"1846:363:32","text":" @dev Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`,\n as well as configurable via `setFeeTypePercentage`.\n `feeType` can be any arbitrary value (that is not in use).\n It is not possible to de-register fee types, nor change their name or maximum value."},"functionSelector":"7268d6ce","id":2325,"implemented":false,"kind":"function","modifiers":[],"name":"registerFeeType","nodeType":"FunctionDefinition","parameters":{"id":2323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2316,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2325,"src":"2248:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2315,"name":"uint256","nodeType":"ElementaryTypeName","src":"2248:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2318,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":2325,"src":"2273:18:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2317,"name":"string","nodeType":"ElementaryTypeName","src":"2273:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2320,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":2325,"src":"2301:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2319,"name":"uint256","nodeType":"ElementaryTypeName","src":"2301:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2322,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":2325,"src":"2331:20:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2321,"name":"uint256","nodeType":"ElementaryTypeName","src":"2331:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2238:119:32"},"returnParameters":{"id":2324,"nodeType":"ParameterList","parameters":[],"src":"2366:0:32"},"scope":2376,"src":"2214:153:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2326,"nodeType":"StructuredDocumentation","src":"2373:89:32","text":" @dev Returns true if `feeType` has been registered and can be queried."},"functionSelector":"868897a0","id":2333,"implemented":false,"kind":"function","modifiers":[],"name":"isValidFeeType","nodeType":"FunctionDefinition","parameters":{"id":2329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2328,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2333,"src":"2491:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2327,"name":"uint256","nodeType":"ElementaryTypeName","src":"2491:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2490:17:32"},"returnParameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2333,"src":"2531:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2330,"name":"bool","nodeType":"ElementaryTypeName","src":"2531:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2530:6:32"},"scope":2376,"src":"2467:70:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2334,"nodeType":"StructuredDocumentation","src":"2543:90:32","text":" @dev Returns true if `value` is a valid percentage value for `feeType`."},"functionSelector":"74735e0b","id":2343,"implemented":false,"kind":"function","modifiers":[],"name":"isValidFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2336,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2343,"src":"2672:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2335,"name":"uint256","nodeType":"ElementaryTypeName","src":"2672:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2338,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2343,"src":"2689:13:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2337,"name":"uint256","nodeType":"ElementaryTypeName","src":"2689:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2671:32:32"},"returnParameters":{"id":2342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2341,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2343,"src":"2727:4:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2340,"name":"bool","nodeType":"ElementaryTypeName","src":"2727:4:32","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2726:6:32"},"scope":2376,"src":"2638:95:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2344,"nodeType":"StructuredDocumentation","src":"2739:570:32","text":" @dev Sets the percentage value for `feeType` to `newValue`.\n IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the\n ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged`\n event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however\n discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and\n `setFlashLoanFeePercentage`."},"functionSelector":"4d44f0e9","id":2351,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2346,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2351,"src":"3344:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2345,"name":"uint256","nodeType":"ElementaryTypeName","src":"3344:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2348,"mutability":"mutable","name":"newValue","nodeType":"VariableDeclaration","scope":2351,"src":"3361:16:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2347,"name":"uint256","nodeType":"ElementaryTypeName","src":"3361:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3343:35:32"},"returnParameters":{"id":2350,"nodeType":"ParameterList","parameters":[],"src":"3387:0:32"},"scope":2376,"src":"3314:74:32","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2352,"nodeType":"StructuredDocumentation","src":"3394:224:32","text":" @dev Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these -\n whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector."},"functionSelector":"1a7c3263","id":2359,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypePercentage","nodeType":"FunctionDefinition","parameters":{"id":2355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2354,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2359,"src":"3653:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2353,"name":"uint256","nodeType":"ElementaryTypeName","src":"3653:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3652:17:32"},"returnParameters":{"id":2358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2357,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2359,"src":"3693:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2356,"name":"uint256","nodeType":"ElementaryTypeName","src":"3693:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3692:9:32"},"scope":2376,"src":"3623:79:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2360,"nodeType":"StructuredDocumentation","src":"3708:58:32","text":" @dev Returns `feeType`'s maximum value."},"functionSelector":"5e2cae4c","id":2367,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypeMaximumPercentage","nodeType":"FunctionDefinition","parameters":{"id":2363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2362,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2367,"src":"3808:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2361,"name":"uint256","nodeType":"ElementaryTypeName","src":"3808:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3807:17:32"},"returnParameters":{"id":2366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2365,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2367,"src":"3848:7:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2364,"name":"uint256","nodeType":"ElementaryTypeName","src":"3848:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3847:9:32"},"scope":2376,"src":"3771:86:32","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2368,"nodeType":"StructuredDocumentation","src":"3863:49:32","text":" @dev Returns `feeType`'s name."},"functionSelector":"b661eda1","id":2375,"implemented":false,"kind":"function","modifiers":[],"name":"getFeeTypeName","nodeType":"FunctionDefinition","parameters":{"id":2371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2370,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":2375,"src":"3941:15:32","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2369,"name":"uint256","nodeType":"ElementaryTypeName","src":"3941:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3940:17:32"},"returnParameters":{"id":2374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2373,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2375,"src":"3981:13:32","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2372,"name":"string","nodeType":"ElementaryTypeName","src":"3981:6:32","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3980:15:32"},"scope":2376,"src":"3917:79:32","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2390,"src":"1027:2971:32"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":2389,"linearizedBaseContracts":[2389],"name":"ProtocolFeeType","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2379,"mutability":"constant","name":"SWAP","nodeType":"VariableDeclaration","scope":2389,"src":"4334:34:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2377,"name":"uint256","nodeType":"ElementaryTypeName","src":"4334:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:1:32","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"visibility":"internal"},{"constant":true,"id":2382,"mutability":"constant","name":"FLASH_LOAN","nodeType":"VariableDeclaration","scope":2389,"src":"4374:40:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2380,"name":"uint256","nodeType":"ElementaryTypeName","src":"4374:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":2381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4413:1:32","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"internal"},{"constant":true,"id":2385,"mutability":"constant","name":"YIELD","nodeType":"VariableDeclaration","scope":2389,"src":"4420:35:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2383,"name":"uint256","nodeType":"ElementaryTypeName","src":"4420:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4454:1:32","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"internal"},{"constant":true,"id":2388,"mutability":"constant","name":"AUM","nodeType":"VariableDeclaration","scope":2389,"src":"4461:33:32","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2386,"name":"uint256","nodeType":"ElementaryTypeName","src":"4461:7:32","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"33","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4493:1:32","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"visibility":"internal"}],"scope":2390,"src":"4000:551:32"}],"src":"688:3864:32"},"id":32},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol","exportedSymbols":{"IProtocolFeeSplitter":[2509]},"id":2510,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2391,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:33"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"../vault/IVault.sol","id":2392,"nodeType":"ImportDirective","scope":2510,"sourceUnit":3618,"src":"721:29:33","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"./IProtocolFeesWithdrawer.sol","id":2393,"nodeType":"ImportDirective","scope":2510,"sourceUnit":2584,"src":"751:39:33","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2394,"nodeType":"StructuredDocumentation","src":"792:295:33","text":" @title ProtocolFeeSplitter\n @author Daoism Systems\n @notice Distributes collected protocol fees between Balancer's treasury and a pool owner\n @dev If you are the pool owner, make sure to update pool's beneficiary address\n otherwise all BPT tokens go to Balancer's DAO treasury"},"fullyImplemented":false,"id":2509,"linearizedBaseContracts":[2509],"name":"IProtocolFeeSplitter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2406,"name":"FeesCollected","nodeType":"EventDefinition","parameters":{"id":2405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2396,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2406,"src":"1154:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1154:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2398,"indexed":true,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":2406,"src":"1186:27:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2397,"name":"address","nodeType":"ElementaryTypeName","src":"1186:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2400,"indexed":false,"mutability":"mutable","name":"poolEarned","nodeType":"VariableDeclaration","scope":2406,"src":"1223:18:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2399,"name":"uint256","nodeType":"ElementaryTypeName","src":"1223:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2402,"indexed":true,"mutability":"mutable","name":"treasury","nodeType":"VariableDeclaration","scope":2406,"src":"1251:24:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2401,"name":"address","nodeType":"ElementaryTypeName","src":"1251:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2404,"indexed":false,"mutability":"mutable","name":"treasuryEarned","nodeType":"VariableDeclaration","scope":2406,"src":"1285:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2403,"name":"uint256","nodeType":"ElementaryTypeName","src":"1285:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1144:169:33"},"src":"1125:189:33"},{"anonymous":false,"id":2412,"name":"PoolRevenueShareChanged","nodeType":"EventDefinition","parameters":{"id":2411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2408,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2412,"src":"1350:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1350:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2410,"indexed":false,"mutability":"mutable","name":"revenueSharePercentage","nodeType":"VariableDeclaration","scope":2412,"src":"1374:30:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1374:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1349:56:33"},"src":"1320:86:33"},{"anonymous":false,"id":2418,"name":"PoolBeneficiaryChanged","nodeType":"EventDefinition","parameters":{"id":2417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2414,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2418,"src":"1440:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2413,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1440:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2416,"indexed":false,"mutability":"mutable","name":"newBeneficiary","nodeType":"VariableDeclaration","scope":2418,"src":"1464:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"1464:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1439:48:33"},"src":"1411:77:33"},{"anonymous":false,"id":2422,"name":"DefaultRevenueSharingFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":2421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2420,"indexed":false,"mutability":"mutable","name":"revenueSharePercentage","nodeType":"VariableDeclaration","scope":2422,"src":"1541:30:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2419,"name":"uint256","nodeType":"ElementaryTypeName","src":"1541:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1540:32:33"},"src":"1493:80:33"},{"anonymous":false,"id":2426,"name":"TreasuryChanged","nodeType":"EventDefinition","parameters":{"id":2425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2424,"indexed":false,"mutability":"mutable","name":"newTreasury","nodeType":"VariableDeclaration","scope":2426,"src":"1600:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"1600:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1599:21:33"},"src":"1578:43:33"},{"documentation":{"id":2427,"nodeType":"StructuredDocumentation","src":"1627:235:33","text":" @notice Allows a authorized user to change revenueShare for a `poolId`\n @param poolId - the poolId of the pool where we want to change fee percentage\n @param newSwapFeePercentage - new swap fee percentage"},"functionSelector":"8b25b623","id":2434,"implemented":false,"kind":"function","modifiers":[],"name":"setRevenueSharingFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2429,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2434,"src":"1907:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1907:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2431,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":2434,"src":"1923:28:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1906:46:33"},"returnParameters":{"id":2433,"nodeType":"ParameterList","parameters":[],"src":"1961:0:33"},"scope":2509,"src":"1867:95:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2435,"nodeType":"StructuredDocumentation","src":"1968:223:33","text":" @notice Allows a pool owner to change the pool beneficiary settings\n @param poolId - the poolId of the pool where we want to change fee beneficiary\n @param newBeneficiary - beneficiary address"},"functionSelector":"7ab74be4","id":2442,"implemented":false,"kind":"function","modifiers":[],"name":"setPoolBeneficiary","nodeType":"FunctionDefinition","parameters":{"id":2440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2437,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2442,"src":"2224:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2436,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2224:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2439,"mutability":"mutable","name":"newBeneficiary","nodeType":"VariableDeclaration","scope":2442,"src":"2240:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2438,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2223:40:33"},"returnParameters":{"id":2441,"nodeType":"ParameterList","parameters":[],"src":"2272:0:33"},"scope":2509,"src":"2196:77:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2443,"nodeType":"StructuredDocumentation","src":"2279:130:33","text":" @notice Allows a authorized user to change the treasury address\n @param newTreasury - beneficiary address"},"functionSelector":"f0f44260","id":2448,"implemented":false,"kind":"function","modifiers":[],"name":"setTreasury","nodeType":"FunctionDefinition","parameters":{"id":2446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2445,"mutability":"mutable","name":"newTreasury","nodeType":"VariableDeclaration","scope":2448,"src":"2435:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2444,"name":"address","nodeType":"ElementaryTypeName","src":"2435:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2434:21:33"},"returnParameters":{"id":2447,"nodeType":"ParameterList","parameters":[],"src":"2464:0:33"},"scope":2509,"src":"2414:51:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2449,"nodeType":"StructuredDocumentation","src":"2471:177:33","text":" @notice Allows a authorized user to change the default revenue sharing fee percentage\n @param feePercentage - new default revenue sharing fee percentage"},"functionSelector":"e65fed80","id":2454,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultRevenueSharingFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2451,"mutability":"mutable","name":"feePercentage","nodeType":"VariableDeclaration","scope":2454,"src":"2700:21:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2450,"name":"uint256","nodeType":"ElementaryTypeName","src":"2700:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2699:23:33"},"returnParameters":{"id":2453,"nodeType":"ParameterList","parameters":[],"src":"2731:0:33"},"scope":2509,"src":"2653:79:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2455,"nodeType":"StructuredDocumentation","src":"2738:303:33","text":" @notice Collects and distributes fees for a `poolId`\n @param poolId - the poolId of the pool for which we collect fees\n @return beneficiaryAmount The amount of tokens sent to pool's beneficiary\n @return treasuryAmount The amount of tokens sent to Balancer's treasury"},"functionSelector":"817db73b","id":2464,"implemented":false,"kind":"function","modifiers":[],"name":"collectFees","nodeType":"FunctionDefinition","parameters":{"id":2458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2457,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2464,"src":"3067:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3067:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3066:16:33"},"returnParameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2460,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":2464,"src":"3101:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2459,"name":"uint256","nodeType":"ElementaryTypeName","src":"3101:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2462,"mutability":"mutable","name":"treasuryAmount","nodeType":"VariableDeclaration","scope":2464,"src":"3128:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2461,"name":"uint256","nodeType":"ElementaryTypeName","src":"3128:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3100:51:33"},"scope":2509,"src":"3046:106:33","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2465,"nodeType":"StructuredDocumentation","src":"3158:73:33","text":" @notice Returns default revenue sharing fee percentage"},"functionSelector":"c2f7070b","id":2470,"implemented":false,"kind":"function","modifiers":[],"name":"getDefaultRevenueSharingFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2466,"nodeType":"ParameterList","parameters":[],"src":"3282:2:33"},"returnParameters":{"id":2469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2468,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2470,"src":"3308:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2467,"name":"uint256","nodeType":"ElementaryTypeName","src":"3308:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3307:9:33"},"scope":2509,"src":"3236:81:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2471,"nodeType":"StructuredDocumentation","src":"3323:295:33","text":" @notice Returns amounts that can be colected\n @param poolId - the poolId of the pool for which we collect fees\n @return beneficiaryAmount The amount of tokens sent to pool's beneficiary\n @return treasuryAmount The amount of tokens sent to Balancer's treasury"},"functionSelector":"9d8669d3","id":2480,"implemented":false,"kind":"function","modifiers":[],"name":"getAmounts","nodeType":"FunctionDefinition","parameters":{"id":2474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2473,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2480,"src":"3643:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2472,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3643:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3642:16:33"},"returnParameters":{"id":2479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2476,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":2480,"src":"3682:25:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2475,"name":"uint256","nodeType":"ElementaryTypeName","src":"3682:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2478,"mutability":"mutable","name":"treasuryAmount","nodeType":"VariableDeclaration","scope":2480,"src":"3709:22:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2477,"name":"uint256","nodeType":"ElementaryTypeName","src":"3709:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3681:51:33"},"scope":2509,"src":"3623:110:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2481,"nodeType":"StructuredDocumentation","src":"3739:63:33","text":" @notice Returns Balancer's treasury address."},"functionSelector":"3b19e84a","id":2486,"implemented":false,"kind":"function","modifiers":[],"name":"getTreasury","nodeType":"FunctionDefinition","parameters":{"id":2482,"nodeType":"ParameterList","parameters":[],"src":"3827:2:33"},"returnParameters":{"id":2485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2484,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2486,"src":"3853:7:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2483,"name":"address","nodeType":"ElementaryTypeName","src":"3853:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3852:9:33"},"scope":2509,"src":"3807:55:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2487,"nodeType":"StructuredDocumentation","src":"3868:72:33","text":" @notice Returns the Protocol Fees Withdrawer address."},"functionSelector":"4f4f4bc7","id":2492,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesWithdrawer","nodeType":"FunctionDefinition","parameters":{"id":2488,"nodeType":"ParameterList","parameters":[],"src":"3979:2:33"},"returnParameters":{"id":2491,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2490,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2492,"src":"4005:23:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":2489,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2583,"src":"4005:23:33","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"}],"src":"4004:25:33"},"scope":2509,"src":"3945:85:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2493,"nodeType":"StructuredDocumentation","src":"4036:60:33","text":" @notice Returns Balancer's vault address."},"functionSelector":"8d928af8","id":2498,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":2494,"nodeType":"ParameterList","parameters":[],"src":"4118:2:33"},"returnParameters":{"id":2497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2496,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2498,"src":"4144:6:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":2495,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"4144:6:33","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"4143:8:33"},"scope":2509,"src":"4101:51:33","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2499,"nodeType":"StructuredDocumentation","src":"4158:53:33","text":" @notice Returns a Pool's settings."},"functionSelector":"0dbbe67f","id":2508,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolSettings","nodeType":"FunctionDefinition","parameters":{"id":2502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2501,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2508,"src":"4241:14:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4241:7:33","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4240:16:33"},"returnParameters":{"id":2507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2504,"mutability":"mutable","name":"revenueSharePercentageOverride","nodeType":"VariableDeclaration","scope":2508,"src":"4304:38:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2503,"name":"uint256","nodeType":"ElementaryTypeName","src":"4304:7:33","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2506,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":2508,"src":"4344:19:33","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2505,"name":"address","nodeType":"ElementaryTypeName","src":"4344:7:33","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4303:61:33"},"scope":2509,"src":"4216:149:33","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2510,"src":"1088:3279:33"}],"src":"688:3680:33"},"id":33},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","exportedSymbols":{"IProtocolFeesWithdrawer":[2583]},"id":2584,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2511,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:34"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"../vault/IProtocolFeesCollector.sol","id":2512,"nodeType":"ImportDirective","scope":2584,"sourceUnit":3153,"src":"721:45:34","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2513,"nodeType":"StructuredDocumentation","src":"768:321:34","text":" @author Balancer Labs\n @title Protocol Fees Withdrawer\n @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n Fees Collector."},"fullyImplemented":false,"id":2583,"linearizedBaseContracts":[2583],"name":"IProtocolFeesWithdrawer","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":2517,"name":"TokenAllowlisted","nodeType":"EventDefinition","parameters":{"id":2516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2515,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2517,"src":"1153:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2514,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1153:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1152:14:34"},"src":"1130:37:34"},{"anonymous":false,"id":2521,"name":"TokenDenylisted","nodeType":"EventDefinition","parameters":{"id":2520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2519,"indexed":false,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2521,"src":"1194:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2518,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1194:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1193:14:34"},"src":"1172:36:34"},{"documentation":{"id":2522,"nodeType":"StructuredDocumentation","src":"1214:77:34","text":" @notice Returns the address of the Protocol Fee Collector."},"functionSelector":"d2946c2b","id":2527,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":2523,"nodeType":"ParameterList","parameters":[],"src":"1329:2:34"},"returnParameters":{"id":2526,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2525,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2527,"src":"1355:22:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":2524,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"1355:22:34","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"1354:24:34"},"scope":2583,"src":"1296:83:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2528,"nodeType":"StructuredDocumentation","src":"1385:110:34","text":" @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector"},"functionSelector":"cdf0e934","id":2535,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawableToken","nodeType":"FunctionDefinition","parameters":{"id":2531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2530,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2535,"src":"1529:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2529,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1529:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1528:14:34"},"returnParameters":{"id":2534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2533,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2535,"src":"1566:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2532,"name":"bool","nodeType":"ElementaryTypeName","src":"1566:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1565:6:34"},"scope":2583,"src":"1500:72:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2536,"nodeType":"StructuredDocumentation","src":"1578:174:34","text":" @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n @dev Returns false if any token is denylisted."},"functionSelector":"a21dfaee","id":2544,"implemented":false,"kind":"function","modifiers":[],"name":"isWithdrawableTokens","nodeType":"FunctionDefinition","parameters":{"id":2540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2539,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2544,"src":"1787:24:34","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2537,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1787:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":2538,"nodeType":"ArrayTypeName","src":"1787:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1786:26:34"},"returnParameters":{"id":2543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2542,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2544,"src":"1836:4:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2541,"name":"bool","nodeType":"ElementaryTypeName","src":"1836:4:34","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1835:6:34"},"scope":2583,"src":"1757:85:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2545,"nodeType":"StructuredDocumentation","src":"1848:77:34","text":" @notice Returns the denylisted token at the given `index`."},"functionSelector":"fd3a0cdd","id":2552,"implemented":false,"kind":"function","modifiers":[],"name":"getDenylistedToken","nodeType":"FunctionDefinition","parameters":{"id":2548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2547,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":2552,"src":"1958:13:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1958:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1957:15:34"},"returnParameters":{"id":2551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2550,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2552,"src":"1996:6:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2549,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1996:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1995:8:34"},"scope":2583,"src":"1930:74:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2553,"nodeType":"StructuredDocumentation","src":"2010:67:34","text":" @notice Returns the number of denylisted tokens."},"functionSelector":"8dd26fc6","id":2558,"implemented":false,"kind":"function","modifiers":[],"name":"getDenylistedTokensLength","nodeType":"FunctionDefinition","parameters":{"id":2554,"nodeType":"ParameterList","parameters":[],"src":"2116:2:34"},"returnParameters":{"id":2557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2556,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2558,"src":"2142:7:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2555,"name":"uint256","nodeType":"ElementaryTypeName","src":"2142:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2141:9:34"},"scope":2583,"src":"2082:69:34","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2559,"nodeType":"StructuredDocumentation","src":"2157:356:34","text":" @notice Withdraws fees from the Protocol Fee Collector.\n @dev Reverts if attempting to withdraw a denylisted token.\n @param tokens - an array of token addresses to withdraw.\n @param amounts - an array of the amounts of each token to withdraw.\n @param recipient - the address to which to send the withdrawn tokens."},"functionSelector":"6daefab6","id":2570,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":2568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2562,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":2570,"src":"2558:24:34","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":2560,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2558:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":2561,"nodeType":"ArrayTypeName","src":"2558:8:34","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":2570,"src":"2592:26:34","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2563,"name":"uint256","nodeType":"ElementaryTypeName","src":"2592:7:34","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2564,"nodeType":"ArrayTypeName","src":"2592:9:34","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2567,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2570,"src":"2628:17:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2566,"name":"address","nodeType":"ElementaryTypeName","src":"2628:7:34","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2548:103:34"},"returnParameters":{"id":2569,"nodeType":"ParameterList","parameters":[],"src":"2660:0:34"},"scope":2583,"src":"2518:143:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2571,"nodeType":"StructuredDocumentation","src":"2667:112:34","text":" @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"194d810f","id":2576,"implemented":false,"kind":"function","modifiers":[],"name":"denylistToken","nodeType":"FunctionDefinition","parameters":{"id":2574,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2573,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2576,"src":"2807:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2572,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2807:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2806:14:34"},"returnParameters":{"id":2575,"nodeType":"ParameterList","parameters":[],"src":"2829:0:34"},"scope":2583,"src":"2784:46:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2577,"nodeType":"StructuredDocumentation","src":"2836:110:34","text":" @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"de0b27c9","id":2582,"implemented":false,"kind":"function","modifiers":[],"name":"allowlistToken","nodeType":"FunctionDefinition","parameters":{"id":2580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2579,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":2582,"src":"2975:12:34","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2578,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2975:6:34","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2974:14:34"},"returnParameters":{"id":2581,"nodeType":"ParameterList","parameters":[],"src":"2997:0:34"},"scope":2583,"src":"2951:47:34","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2584,"src":"1090:1910:34"}],"src":"688:2313:34"},"id":34},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","exportedSymbols":{"IStaticATokenLM":[2830]},"id":2831,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2585,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"45:31:35"},{"id":2586,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"77:33:35"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2587,"nodeType":"ImportDirective","scope":2831,"sourceUnit":2091,"src":"112:51:35","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2588,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"375:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":2589,"nodeType":"InheritanceSpecifier","src":"375:6:35"}],"contractDependencies":[2090],"contractKind":"interface","fullyImplemented":false,"id":2830,"linearizedBaseContracts":[2830,2090],"name":"IStaticATokenLM","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IStaticATokenLM.SignatureParams","id":2596,"members":[{"constant":false,"id":2591,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2596,"src":"421:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2590,"name":"uint8","nodeType":"ElementaryTypeName","src":"421:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2593,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2596,"src":"438:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2592,"name":"bytes32","nodeType":"ElementaryTypeName","src":"438:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2595,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2596,"src":"457:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2594,"name":"bytes32","nodeType":"ElementaryTypeName","src":"457:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"SignatureParams","nodeType":"StructDefinition","scope":2830,"src":"388:85:35","visibility":"public"},{"documentation":{"id":2597,"nodeType":"StructuredDocumentation","src":"479:722:35","text":" @notice Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\n @param recipient The address that will receive the static aTokens\n @param amount The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n 0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @return uint256 The amount of StaticAToken minted, static balance*"},"functionSelector":"2f2cab87","id":2610,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","parameters":{"id":2606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2599,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2610,"src":"1232:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2598,"name":"address","nodeType":"ElementaryTypeName","src":"1232:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2601,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2610,"src":"1259:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2600,"name":"uint256","nodeType":"ElementaryTypeName","src":"1259:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2603,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2610,"src":"1283:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2602,"name":"uint16","nodeType":"ElementaryTypeName","src":"1283:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2605,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":2610,"src":"1312:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2604,"name":"bool","nodeType":"ElementaryTypeName","src":"1312:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1222:115:35"},"returnParameters":{"id":2609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2608,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2610,"src":"1356:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2607,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:9:35"},"scope":2830,"src":"1206:159:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2611,"nodeType":"StructuredDocumentation","src":"1371:628:35","text":" @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in static balance of StaticAToken\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"},"functionSelector":"ead5d359","id":2624,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","parameters":{"id":2618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2613,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2624,"src":"2031:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2612,"name":"address","nodeType":"ElementaryTypeName","src":"2031:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2615,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2624,"src":"2058:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2614,"name":"uint256","nodeType":"ElementaryTypeName","src":"2058:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2617,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2624,"src":"2082:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2616,"name":"bool","nodeType":"ElementaryTypeName","src":"2082:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2021:84:35"},"returnParameters":{"id":2623,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2620,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2624,"src":"2124:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2619,"name":"uint256","nodeType":"ElementaryTypeName","src":"2124:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2622,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2624,"src":"2133:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2621,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2123:18:35"},"scope":2830,"src":"2004:138:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2625,"nodeType":"StructuredDocumentation","src":"2148:640:35","text":" @notice Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\n @param recipient The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\n @param amount The amount to withdraw, in dynamic balance of aToken/underlying asset\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*"},"functionSelector":"288587ce","id":2638,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawDynamicAmount","nodeType":"FunctionDefinition","parameters":{"id":2632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2627,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2638,"src":"2833:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2626,"name":"address","nodeType":"ElementaryTypeName","src":"2833:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2629,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2638,"src":"2860:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2628,"name":"uint256","nodeType":"ElementaryTypeName","src":"2860:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2631,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2638,"src":"2884:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2630,"name":"bool","nodeType":"ElementaryTypeName","src":"2884:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2823:84:35"},"returnParameters":{"id":2637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2634,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2638,"src":"2926:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2633,"name":"uint256","nodeType":"ElementaryTypeName","src":"2926:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2636,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2638,"src":"2935:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2635,"name":"uint256","nodeType":"ElementaryTypeName","src":"2935:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2925:18:35"},"scope":2830,"src":"2793:151:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2639,"nodeType":"StructuredDocumentation","src":"2950:453:35","text":" @notice Implements the permit function as for\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner The owner of the funds\n @param spender The spender\n @param value The amount\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param v Signature param\n @param s Signature param\n @param r Signature param"},"functionSelector":"d505accf","id":2656,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","parameters":{"id":2654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2641,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2656,"src":"3433:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2640,"name":"address","nodeType":"ElementaryTypeName","src":"3433:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2643,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":2656,"src":"3456:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2642,"name":"address","nodeType":"ElementaryTypeName","src":"3456:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2645,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2656,"src":"3481:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2644,"name":"uint256","nodeType":"ElementaryTypeName","src":"3481:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2647,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2656,"src":"3504:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2646,"name":"uint256","nodeType":"ElementaryTypeName","src":"3504:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2649,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":2656,"src":"3530:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2648,"name":"uint8","nodeType":"ElementaryTypeName","src":"3530:5:35","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":2651,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":2656,"src":"3547:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3547:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2653,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":2656,"src":"3566:9:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2652,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3566:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3423:158:35"},"returnParameters":{"id":2655,"nodeType":"ParameterList","parameters":[],"src":"3590:0:35"},"scope":2830,"src":"3408:183:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2657,"nodeType":"StructuredDocumentation","src":"3597:1002:35","text":" @notice Allows to deposit on Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param depositor Address from which the funds to deposit are going to be pulled\n @param recipient Address that will receive the staticATokens, in the average case, same as the `depositor`\n @param value The amount to deposit\n @param referralCode Code used to register the integrator originating the operation, for potential rewards.\n 0 if the action is executed directly by the user, without any middle-man\n @param fromUnderlying bool\n - `true` if the msg.sender comes with underlying tokens (e.g. USDC)\n - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return uint256 The amount of StaticAToken minted, static balance"},"functionSelector":"c485852b","id":2676,"implemented":false,"kind":"function","modifiers":[],"name":"metaDeposit","nodeType":"FunctionDefinition","parameters":{"id":2672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2659,"mutability":"mutable","name":"depositor","nodeType":"VariableDeclaration","scope":2676,"src":"4634:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2658,"name":"address","nodeType":"ElementaryTypeName","src":"4634:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2661,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2676,"src":"4661:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2660,"name":"address","nodeType":"ElementaryTypeName","src":"4661:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2663,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":2676,"src":"4688:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2662,"name":"uint256","nodeType":"ElementaryTypeName","src":"4688:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2665,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":2676,"src":"4711:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":2664,"name":"uint16","nodeType":"ElementaryTypeName","src":"4711:6:35","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":2667,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":2676,"src":"4740:19:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2666,"name":"bool","nodeType":"ElementaryTypeName","src":"4740:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2669,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2676,"src":"4769:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2668,"name":"uint256","nodeType":"ElementaryTypeName","src":"4769:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2671,"mutability":"mutable","name":"sigParams","nodeType":"VariableDeclaration","scope":2676,"src":"4795:34:35","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":2670,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2596,"src":"4795:15:35","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"4624:211:35"},"returnParameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2674,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2676,"src":"4854:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2673,"name":"uint256","nodeType":"ElementaryTypeName","src":"4854:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4853:9:35"},"scope":2830,"src":"4604:259:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2677,"nodeType":"StructuredDocumentation","src":"4869:981:35","text":" @notice Allows to withdraw from Aave via meta-transaction\n https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\n @param owner Address owning the staticATokens\n @param recipient Address that will receive the underlying withdrawn from Aave\n @param staticAmount The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\n @param dynamicAmount The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\n @param toUnderlying bool\n - `true` for the recipient to get underlying tokens (e.g. USDC)\n - `false` for the recipient to get aTokens (e.g. aUSDC)\n @param deadline The deadline timestamp, type(uint256).max for max deadline\n @param sigParams Signature params: v,r,s\n @return amountToBurn: StaticATokens burnt, static balance\n @return amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance"},"functionSelector":"60266557","id":2698,"implemented":false,"kind":"function","modifiers":[],"name":"metaWithdraw","nodeType":"FunctionDefinition","parameters":{"id":2692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2679,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":2698,"src":"5886:13:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2678,"name":"address","nodeType":"ElementaryTypeName","src":"5886:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2681,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2698,"src":"5909:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2680,"name":"address","nodeType":"ElementaryTypeName","src":"5909:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2683,"mutability":"mutable","name":"staticAmount","nodeType":"VariableDeclaration","scope":2698,"src":"5936:20:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2682,"name":"uint256","nodeType":"ElementaryTypeName","src":"5936:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2685,"mutability":"mutable","name":"dynamicAmount","nodeType":"VariableDeclaration","scope":2698,"src":"5966:21:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2684,"name":"uint256","nodeType":"ElementaryTypeName","src":"5966:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2687,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":2698,"src":"5997:17:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2686,"name":"bool","nodeType":"ElementaryTypeName","src":"5997:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2689,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":2698,"src":"6024:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2688,"name":"uint256","nodeType":"ElementaryTypeName","src":"6024:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2691,"mutability":"mutable","name":"sigParams","nodeType":"VariableDeclaration","scope":2698,"src":"6050:34:35","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":2690,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2596,"src":"6050:15:35","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"5876:214:35"},"returnParameters":{"id":2697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2694,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2698,"src":"6109:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2693,"name":"uint256","nodeType":"ElementaryTypeName","src":"6109:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2696,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2698,"src":"6118:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2695,"name":"uint256","nodeType":"ElementaryTypeName","src":"6118:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6108:18:35"},"scope":2830,"src":"5855:272:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2699,"nodeType":"StructuredDocumentation","src":"6133:206:35","text":" @notice Utility method to get the current aToken balance of an user, from his staticAToken balance\n @param account The address of the user\n @return uint256 The aToken balance*"},"functionSelector":"44b68c3f","id":2706,"implemented":false,"kind":"function","modifiers":[],"name":"dynamicBalanceOf","nodeType":"FunctionDefinition","parameters":{"id":2702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2701,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2706,"src":"6370:15:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2700,"name":"address","nodeType":"ElementaryTypeName","src":"6370:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6369:17:35"},"returnParameters":{"id":2705,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2704,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2706,"src":"6410:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2703,"name":"uint256","nodeType":"ElementaryTypeName","src":"6410:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6409:9:35"},"scope":2830,"src":"6344:75:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2707,"nodeType":"StructuredDocumentation","src":"6425:250:35","text":" @notice Converts a static amount (scaled balance on aToken) to the aToken/underlying value,\n using the current liquidity index on Aave\n @param amount The amount to convert from\n @return uint256 The dynamic amount*"},"functionSelector":"f57d0b40","id":2714,"implemented":false,"kind":"function","modifiers":[],"name":"staticToDynamicAmount","nodeType":"FunctionDefinition","parameters":{"id":2710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2709,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2714,"src":"6711:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2708,"name":"uint256","nodeType":"ElementaryTypeName","src":"6711:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6710:16:35"},"returnParameters":{"id":2713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2712,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2714,"src":"6750:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2711,"name":"uint256","nodeType":"ElementaryTypeName","src":"6750:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6749:9:35"},"scope":2830,"src":"6680:79:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2715,"nodeType":"StructuredDocumentation","src":"6765:285:35","text":" @notice Converts an aToken or underlying amount to the what it is denominated on the aToken as\n scaled balance, function of the principal and the liquidity index\n @param amount The amount to convert from\n @return uint256 The static (scaled) amount*"},"functionSelector":"36a5a6d6","id":2722,"implemented":false,"kind":"function","modifiers":[],"name":"dynamicToStaticAmount","nodeType":"FunctionDefinition","parameters":{"id":2718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2717,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":2722,"src":"7086:14:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2716,"name":"uint256","nodeType":"ElementaryTypeName","src":"7086:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7085:16:35"},"returnParameters":{"id":2721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2720,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2722,"src":"7125:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2719,"name":"uint256","nodeType":"ElementaryTypeName","src":"7125:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7124:9:35"},"scope":2830,"src":"7055:79:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2723,"nodeType":"StructuredDocumentation","src":"7140:210:35","text":" @notice Returns the Aave liquidity index of the underlying aToken, denominated rate here\n as it can be considered as an ever-increasing exchange rate\n @return The liquidity index*"},"functionSelector":"2c4e722e","id":2728,"implemented":false,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","parameters":{"id":2724,"nodeType":"ParameterList","parameters":[],"src":"7368:2:35"},"returnParameters":{"id":2727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2726,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2728,"src":"7394:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2725,"name":"uint256","nodeType":"ElementaryTypeName","src":"7394:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7393:9:35"},"scope":2830,"src":"7355:48:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2729,"nodeType":"StructuredDocumentation","src":"7409:172:35","text":" @notice Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\n @return bytes32 The domain separator*"},"functionSelector":"ed24911d","id":2734,"implemented":false,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","parameters":{"id":2730,"nodeType":"ParameterList","parameters":[],"src":"7613:2:35"},"returnParameters":{"id":2733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2732,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2734,"src":"7639:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2731,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7639:7:35","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7638:9:35"},"scope":2830,"src":"7586:62:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2735,"nodeType":"StructuredDocumentation","src":"7654:114:35","text":" @notice Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards."},"functionSelector":"3eb2eba6","id":2738,"implemented":false,"kind":"function","modifiers":[],"name":"collectAndUpdateRewards","nodeType":"FunctionDefinition","parameters":{"id":2736,"nodeType":"ParameterList","parameters":[],"src":"7805:2:35"},"returnParameters":{"id":2737,"nodeType":"ParameterList","parameters":[],"src":"7816:0:35"},"scope":2830,"src":"7773:44:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2739,"nodeType":"StructuredDocumentation","src":"7823:375:35","text":" @notice Claim rewards on behalf of a user and send them to a receiver\n @dev Only callable by if sender is onBehalfOf or sender is approved claimer\n @param onBehalfOf The address to claim on behalf of\n @param receiver The address to receive the rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"dd05aa12","id":2748,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewardsOnBehalf","nodeType":"FunctionDefinition","parameters":{"id":2746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2741,"mutability":"mutable","name":"onBehalfOf","nodeType":"VariableDeclaration","scope":2748,"src":"8242:18:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2740,"name":"address","nodeType":"ElementaryTypeName","src":"8242:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2743,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":2748,"src":"8270:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2742,"name":"address","nodeType":"ElementaryTypeName","src":"8270:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2745,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2748,"src":"8296:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2744,"name":"bool","nodeType":"ElementaryTypeName","src":"8296:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8232:86:35"},"returnParameters":{"id":2747,"nodeType":"ParameterList","parameters":[],"src":"8327:0:35"},"scope":2830,"src":"8203:125:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2749,"nodeType":"StructuredDocumentation","src":"8334:213:35","text":" @notice Claim rewards and send them to a receiver\n @param receiver The address to receive the rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"491c011a","id":2756,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","parameters":{"id":2754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2751,"mutability":"mutable","name":"receiver","nodeType":"VariableDeclaration","scope":2756,"src":"8574:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2750,"name":"address","nodeType":"ElementaryTypeName","src":"8574:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2753,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2756,"src":"8592:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2752,"name":"bool","nodeType":"ElementaryTypeName","src":"8592:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8573:36:35"},"returnParameters":{"id":2755,"nodeType":"ParameterList","parameters":[],"src":"8618:0:35"},"scope":2830,"src":"8552:67:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2757,"nodeType":"StructuredDocumentation","src":"8625:127:35","text":" @notice Claim rewards\n @param forceUpdate Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`"},"functionSelector":"45c1ace7","id":2762,"implemented":false,"kind":"function","modifiers":[],"name":"claimRewardsToSelf","nodeType":"FunctionDefinition","parameters":{"id":2760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2759,"mutability":"mutable","name":"forceUpdate","nodeType":"VariableDeclaration","scope":2762,"src":"8785:16:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2758,"name":"bool","nodeType":"ElementaryTypeName","src":"8785:4:35","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8784:18:35"},"returnParameters":{"id":2761,"nodeType":"ParameterList","parameters":[],"src":"8811:0:35"},"scope":2830,"src":"8757:55:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2763,"nodeType":"StructuredDocumentation","src":"8818:161:35","text":" @notice Get the total claimable rewards of the contract.\n @return The current balance + pending rewards from the `_incentivesController`"},"functionSelector":"7f372cff","id":2768,"implemented":false,"kind":"function","modifiers":[],"name":"getTotalClaimableRewards","nodeType":"FunctionDefinition","parameters":{"id":2764,"nodeType":"ParameterList","parameters":[],"src":"9017:2:35"},"returnParameters":{"id":2767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2766,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2768,"src":"9043:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2765,"name":"uint256","nodeType":"ElementaryTypeName","src":"9043:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9042:9:35"},"scope":2830,"src":"8984:68:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2769,"nodeType":"StructuredDocumentation","src":"9058:173:35","text":" @notice Get the total claimable rewards for a user in WAD\n @param user The address of the user\n @return The claimable amount of rewards in WAD"},"functionSelector":"308e401e","id":2776,"implemented":false,"kind":"function","modifiers":[],"name":"getClaimableRewards","nodeType":"FunctionDefinition","parameters":{"id":2772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2771,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2776,"src":"9265:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2770,"name":"address","nodeType":"ElementaryTypeName","src":"9265:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9264:14:35"},"returnParameters":{"id":2775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2774,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2776,"src":"9302:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2773,"name":"uint256","nodeType":"ElementaryTypeName","src":"9302:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9301:9:35"},"scope":2830,"src":"9236:75:35","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2777,"nodeType":"StructuredDocumentation","src":"9317:163:35","text":" @notice The unclaimed rewards for a user in WAD\n @param user The address of the user\n @return The unclaimed amount of rewards in WAD"},"functionSelector":"69a69e29","id":2784,"implemented":false,"kind":"function","modifiers":[],"name":"getUnclaimedRewards","nodeType":"FunctionDefinition","parameters":{"id":2780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2779,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":2784,"src":"9514:12:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2778,"name":"address","nodeType":"ElementaryTypeName","src":"9514:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9513:14:35"},"returnParameters":{"id":2783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2782,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2784,"src":"9551:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2781,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9550:9:35"},"scope":2830,"src":"9485:75:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a135a55e","id":2789,"implemented":false,"kind":"function","modifiers":[],"name":"getAccRewardsPerToken","nodeType":"FunctionDefinition","parameters":{"id":2785,"nodeType":"ParameterList","parameters":[],"src":"9596:2:35"},"returnParameters":{"id":2788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2787,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2789,"src":"9622:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2786,"name":"uint256","nodeType":"ElementaryTypeName","src":"9622:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9621:9:35"},"scope":2830,"src":"9566:65:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"31a5cfa4","id":2794,"implemented":false,"kind":"function","modifiers":[],"name":"getLifetimeRewardsClaimed","nodeType":"FunctionDefinition","parameters":{"id":2790,"nodeType":"ParameterList","parameters":[],"src":"9671:2:35"},"returnParameters":{"id":2793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2794,"src":"9697:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2791,"name":"uint256","nodeType":"ElementaryTypeName","src":"9697:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9696:9:35"},"scope":2830,"src":"9637:69:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b3a59022","id":2799,"implemented":false,"kind":"function","modifiers":[],"name":"getLifetimeRewards","nodeType":"FunctionDefinition","parameters":{"id":2795,"nodeType":"ParameterList","parameters":[],"src":"9739:2:35"},"returnParameters":{"id":2798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2797,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2799,"src":"9765:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2796,"name":"uint256","nodeType":"ElementaryTypeName","src":"9765:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9764:9:35"},"scope":2830,"src":"9712:62:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"bf62bee6","id":2804,"implemented":false,"kind":"function","modifiers":[],"name":"getLastRewardBlock","nodeType":"FunctionDefinition","parameters":{"id":2800,"nodeType":"ParameterList","parameters":[],"src":"9807:2:35"},"returnParameters":{"id":2803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2804,"src":"9833:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2801,"name":"uint256","nodeType":"ElementaryTypeName","src":"9833:7:35","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9832:9:35"},"scope":2830,"src":"9780:62:35","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"b4dcfc77","id":2809,"implemented":false,"kind":"function","modifiers":[],"name":"LENDING_POOL","nodeType":"FunctionDefinition","parameters":{"id":2805,"nodeType":"ParameterList","parameters":[],"src":"9922:2:35"},"returnParameters":{"id":2808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2807,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2809,"src":"9943:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2806,"name":"address","nodeType":"ElementaryTypeName","src":"9943:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9942:9:35"},"scope":2830,"src":"9901:51:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"10d0ab22","id":2814,"implemented":false,"kind":"function","modifiers":[],"name":"INCENTIVES_CONTROLLER","nodeType":"FunctionDefinition","parameters":{"id":2810,"nodeType":"ParameterList","parameters":[],"src":"10041:2:35"},"returnParameters":{"id":2813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2812,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2814,"src":"10062:7:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2811,"name":"address","nodeType":"ElementaryTypeName","src":"10062:7:35","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10061:9:35"},"scope":2830,"src":"10011:60:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"51c0e061","id":2819,"implemented":false,"kind":"function","modifiers":[],"name":"ATOKEN","nodeType":"FunctionDefinition","parameters":{"id":2815,"nodeType":"ParameterList","parameters":[],"src":"10145:2:35"},"returnParameters":{"id":2818,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2817,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2819,"src":"10166:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2816,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"10166:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10165:8:35"},"scope":2830,"src":"10130:44:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"4800d97f","id":2824,"implemented":false,"kind":"function","modifiers":[],"name":"ASSET","nodeType":"FunctionDefinition","parameters":{"id":2820,"nodeType":"ParameterList","parameters":[],"src":"10247:2:35"},"returnParameters":{"id":2823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2822,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2824,"src":"10268:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2821,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"10268:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10267:8:35"},"scope":2830,"src":"10233:43:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"99248ea7","id":2829,"implemented":false,"kind":"function","modifiers":[],"name":"REWARD_TOKEN","nodeType":"FunctionDefinition","parameters":{"id":2825,"nodeType":"ParameterList","parameters":[],"src":"10356:2:35"},"returnParameters":{"id":2828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2827,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2829,"src":"10377:6:35","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":2826,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"10377:6:35","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"10376:8:35"},"scope":2830,"src":"10335:50:35","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":2831,"src":"346:10041:35"}],"src":"45:10343:35"},"id":35},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","exportedSymbols":{"IstETH":[2843]},"id":2844,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2832,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:36"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2833,"nodeType":"ImportDirective","scope":2844,"sourceUnit":2091,"src":"721:51:36","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2834,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"964:6:36","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":2835,"nodeType":"InheritanceSpecifier","src":"964:6:36"}],"contractDependencies":[2090],"contractKind":"interface","fullyImplemented":false,"id":2843,"linearizedBaseContracts":[2843,2090],"name":"IstETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"a1903eab","id":2842,"implemented":false,"kind":"function","modifiers":[],"name":"submit","nodeType":"FunctionDefinition","parameters":{"id":2838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2837,"mutability":"mutable","name":"referral","nodeType":"VariableDeclaration","scope":2842,"src":"993:16:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2836,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:36","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"992:18:36"},"returnParameters":{"id":2841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2840,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2842,"src":"1037:7:36","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2839,"name":"uint256","nodeType":"ElementaryTypeName","src":"1037:7:36","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1036:9:36"},"scope":2843,"src":"977:69:36","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":2844,"src":"944:104:36"}],"src":"688:361:36"},"id":36},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","exportedSymbols":{"IwstETH":[2900]},"id":2901,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2845,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:37"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":2846,"nodeType":"ImportDirective","scope":2901,"sourceUnit":2091,"src":"721:51:37","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"./IstETH.sol","id":2847,"nodeType":"ImportDirective","scope":2901,"sourceUnit":2844,"src":"774:22:37","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2849,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1803:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":2850,"nodeType":"InheritanceSpecifier","src":"1803:6:37"}],"contractDependencies":[2090],"contractKind":"interface","documentation":{"id":2848,"nodeType":"StructuredDocumentation","src":"970:811:37","text":" @title StETH token wrapper with static balances.\n @dev It's an ERC20 token that represents the account's share of the total\n supply of stETH tokens. WstETH token's balance only changes on transfers,\n unlike StETH that is also changed when oracles report staking rewards and\n penalties. It's a \"power user\" token for DeFi protocols which don't\n support rebasable tokens.\n The contract is also a trustless wrapper that accepts stETH tokens and mints\n wstETH in return. Then the user unwraps, the contract burns user's wstETH\n and sends user locked stETH in return.\n The contract provides the staking shortcut: user can send ETH with regular\n transfer and get wstETH in return. The contract will send ETH to Lido submit\n method, staking it and wrapping the received stETH."},"fullyImplemented":false,"id":2900,"linearizedBaseContracts":[2900,2090],"name":"IwstETH","nodeType":"ContractDefinition","nodes":[{"functionSelector":"c1fe3e48","id":2855,"implemented":false,"kind":"function","modifiers":[],"name":"stETH","nodeType":"FunctionDefinition","parameters":{"id":2851,"nodeType":"ParameterList","parameters":[],"src":"1830:2:37"},"returnParameters":{"id":2854,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2853,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2855,"src":"1851:6:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"},"typeName":{"id":2852,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2843,"src":"1851:6:37","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"visibility":"internal"}],"src":"1850:8:37"},"scope":2900,"src":"1816:43:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2856,"nodeType":"StructuredDocumentation","src":"1865:477:37","text":" @notice Exchanges stETH to wstETH\n @param _stETHAmount amount of stETH to wrap in exchange for wstETH\n @dev Requirements:\n - `_stETHAmount` must be non-zero\n - msg.sender must approve at least `_stETHAmount` stETH to this\n contract.\n - msg.sender must have at least `_stETHAmount` of stETH.\n User should first approve _stETHAmount to the WstETH contract\n @return Amount of wstETH user receives after wrap"},"functionSelector":"ea598cb0","id":2863,"implemented":false,"kind":"function","modifiers":[],"name":"wrap","nodeType":"FunctionDefinition","parameters":{"id":2859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2858,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":2863,"src":"2361:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2857,"name":"uint256","nodeType":"ElementaryTypeName","src":"2361:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2360:22:37"},"returnParameters":{"id":2862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2861,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2863,"src":"2401:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2860,"name":"uint256","nodeType":"ElementaryTypeName","src":"2401:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2400:9:37"},"scope":2900,"src":"2347:63:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2864,"nodeType":"StructuredDocumentation","src":"2416:319:37","text":" @notice Exchanges wstETH to stETH\n @param _wstETHAmount amount of wstETH to uwrap in exchange for stETH\n @dev Requirements:\n - `_wstETHAmount` must be non-zero\n - msg.sender must have at least `_wstETHAmount` wstETH.\n @return Amount of stETH user receives after unwrap"},"functionSelector":"de0e9a3e","id":2871,"implemented":false,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","parameters":{"id":2867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2866,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":2871,"src":"2756:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2865,"name":"uint256","nodeType":"ElementaryTypeName","src":"2756:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2755:23:37"},"returnParameters":{"id":2870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2869,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2871,"src":"2797:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2868,"name":"uint256","nodeType":"ElementaryTypeName","src":"2797:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2796:9:37"},"scope":2900,"src":"2740:66:37","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2872,"nodeType":"StructuredDocumentation","src":"2812:175:37","text":" @notice Get amount of wstETH for a given amount of stETH\n @param _stETHAmount amount of stETH\n @return Amount of wstETH for a given stETH amount"},"functionSelector":"b0e38900","id":2879,"implemented":false,"kind":"function","modifiers":[],"name":"getWstETHByStETH","nodeType":"FunctionDefinition","parameters":{"id":2875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2874,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":2879,"src":"3018:20:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2873,"name":"uint256","nodeType":"ElementaryTypeName","src":"3018:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3017:22:37"},"returnParameters":{"id":2878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2877,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2879,"src":"3063:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2876,"name":"uint256","nodeType":"ElementaryTypeName","src":"3063:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3062:9:37"},"scope":2900,"src":"2992:80:37","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2880,"nodeType":"StructuredDocumentation","src":"3078:177:37","text":" @notice Get amount of stETH for a given amount of wstETH\n @param _wstETHAmount amount of wstETH\n @return Amount of stETH for a given wstETH amount"},"functionSelector":"bb2952fc","id":2887,"implemented":false,"kind":"function","modifiers":[],"name":"getStETHByWstETH","nodeType":"FunctionDefinition","parameters":{"id":2883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2882,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":2887,"src":"3286:21:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2881,"name":"uint256","nodeType":"ElementaryTypeName","src":"3286:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3285:23:37"},"returnParameters":{"id":2886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2885,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2887,"src":"3332:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2884,"name":"uint256","nodeType":"ElementaryTypeName","src":"3332:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3331:9:37"},"scope":2900,"src":"3260:81:37","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2888,"nodeType":"StructuredDocumentation","src":"3347:107:37","text":" @notice Get amount of wstETH for a one stETH\n @return Amount of stETH for 1 wstETH"},"functionSelector":"035faf82","id":2893,"implemented":false,"kind":"function","modifiers":[],"name":"stEthPerToken","nodeType":"FunctionDefinition","parameters":{"id":2889,"nodeType":"ParameterList","parameters":[],"src":"3481:2:37"},"returnParameters":{"id":2892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2891,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2893,"src":"3507:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2890,"name":"uint256","nodeType":"ElementaryTypeName","src":"3507:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3506:9:37"},"scope":2900,"src":"3459:57:37","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2894,"nodeType":"StructuredDocumentation","src":"3522:109:37","text":" @notice Get amount of stETH for a one wstETH\n @return Amount of wstETH for a 1 stETH"},"functionSelector":"9576a0c8","id":2899,"implemented":false,"kind":"function","modifiers":[],"name":"tokensPerStEth","nodeType":"FunctionDefinition","parameters":{"id":2895,"nodeType":"ParameterList","parameters":[],"src":"3659:2:37"},"returnParameters":{"id":2898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2897,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2899,"src":"3685:7:37","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2896,"name":"uint256","nodeType":"ElementaryTypeName","src":"3685:7:37","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3684:9:37"},"scope":2900,"src":"3636:58:37","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2901,"src":"1782:1914:37"}],"src":"688:3009:37"},"id":37},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","exportedSymbols":{"IAsset":[2904]},"id":2905,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2902,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:38"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":{"id":2903,"nodeType":"StructuredDocumentation","src":"721:309:38","text":" @dev This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero\n address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like\n types.\n This concept is unrelated to a Pool's Asset Managers."},"fullyImplemented":true,"id":2904,"linearizedBaseContracts":[2904],"name":"IAsset","nodeType":"ContractDefinition","nodes":[],"scope":2905,"src":"1031:73:38"}],"src":"688:417:38"},"id":38},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","exportedSymbols":{"IAuthorizer":[2919]},"id":2920,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2906,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:39"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":2919,"linearizedBaseContracts":[2919],"name":"IAuthorizer","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2907,"nodeType":"StructuredDocumentation","src":"749:121:39","text":" @dev Returns true if `account` can perform the action described by `actionId` in the contract `where`."},"functionSelector":"9be2a884","id":2918,"implemented":false,"kind":"function","modifiers":[],"name":"canPerform","nodeType":"FunctionDefinition","parameters":{"id":2914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2909,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":2918,"src":"904:16:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2908,"name":"bytes32","nodeType":"ElementaryTypeName","src":"904:7:39","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2911,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":2918,"src":"930:15:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2910,"name":"address","nodeType":"ElementaryTypeName","src":"930:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2913,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":2918,"src":"955:13:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2912,"name":"address","nodeType":"ElementaryTypeName","src":"955:7:39","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"894:80:39"},"returnParameters":{"id":2917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2918,"src":"998:4:39","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2915,"name":"bool","nodeType":"ElementaryTypeName","src":"998:4:39","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"997:6:39"},"scope":2919,"src":"875:129:39","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2920,"src":"721:285:39"}],"src":"688:319:39"},"id":39},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","exportedSymbols":{"IBasePool":[3043]},"id":3044,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":2921,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:40"},{"id":2922,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:40"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":2923,"nodeType":"ImportDirective","scope":3044,"sourceUnit":3618,"src":"755:22:40","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol","file":"./IPoolSwapStructs.sol","id":2924,"nodeType":"ImportDirective","scope":3044,"sourceUnit":3088,"src":"778:32:40","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2926,"name":"IPoolSwapStructs","nodeType":"UserDefinedTypeName","referencedDeclaration":3087,"src":"1120:16:40","typeDescriptions":{"typeIdentifier":"t_contract$_IPoolSwapStructs_$3087","typeString":"contract IPoolSwapStructs"}},"id":2927,"nodeType":"InheritanceSpecifier","src":"1120:16:40"}],"contractDependencies":[3087],"contractKind":"interface","documentation":{"id":2925,"nodeType":"StructuredDocumentation","src":"812:284:40","text":" @dev Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not\n the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from\n either IGeneralPool or IMinimalSwapInfoPool"},"fullyImplemented":false,"id":3043,"linearizedBaseContracts":[3043,3087],"name":"IBasePool","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2928,"nodeType":"StructuredDocumentation","src":"1143:1490:40","text":" @dev Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of\n each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault.\n The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect\n the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`.\n Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join.\n `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account\n designated to receive any benefits (typically pool shares). `balances` contains the total balances\n for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n balance.\n `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n Contracts implementing this function should check that the caller is indeed the Vault before performing any\n state-changing operations, such as minting pool shares."},"functionSelector":"d5c096c4","id":2952,"implemented":false,"kind":"function","modifiers":[],"name":"onJoinPool","nodeType":"FunctionDefinition","parameters":{"id":2944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2930,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2952,"src":"2667:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2929,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2667:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2932,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2952,"src":"2691:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2931,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2934,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2952,"src":"2715:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2933,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2937,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2952,"src":"2742:25:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2935,"name":"uint256","nodeType":"ElementaryTypeName","src":"2742:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2936,"nodeType":"ArrayTypeName","src":"2742:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2939,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2952,"src":"2777:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2938,"name":"uint256","nodeType":"ElementaryTypeName","src":"2777:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2941,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":2952,"src":"2810:33:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2940,"name":"uint256","nodeType":"ElementaryTypeName","src":"2810:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2943,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2952,"src":"2853:21:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2942,"name":"bytes","nodeType":"ElementaryTypeName","src":"2853:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2657:223:40"},"returnParameters":{"id":2951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2947,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":2952,"src":"2899:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2945,"name":"uint256","nodeType":"ElementaryTypeName","src":"2899:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2946,"nodeType":"ArrayTypeName","src":"2899:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2950,"mutability":"mutable","name":"dueProtocolFeeAmounts","nodeType":"VariableDeclaration","scope":2952,"src":"2927:38:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2927:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2949,"nodeType":"ArrayTypeName","src":"2927:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2898:68:40"},"scope":3043,"src":"2638:329:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2953,"nodeType":"StructuredDocumentation","src":"2973:1490:40","text":" @dev Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many\n tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes\n to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`,\n as well as collect the reported amount in protocol fees, which the Pool should calculate based on\n `protocolSwapFeePercentage`.\n Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share.\n `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account\n to which the Vault will send the proceeds. `balances` contains the total token balances for each token\n the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return.\n `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total\n balance.\n `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of\n exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.)\n Contracts implementing this function should check that the caller is indeed the Vault before performing any\n state-changing operations, such as burning pool shares."},"functionSelector":"74f3b009","id":2977,"implemented":false,"kind":"function","modifiers":[],"name":"onExitPool","nodeType":"FunctionDefinition","parameters":{"id":2969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2955,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":2977,"src":"4497:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2954,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4497:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2957,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":2977,"src":"4521:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2956,"name":"address","nodeType":"ElementaryTypeName","src":"4521:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2959,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":2977,"src":"4545:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2958,"name":"address","nodeType":"ElementaryTypeName","src":"4545:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2962,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":2977,"src":"4572:25:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2960,"name":"uint256","nodeType":"ElementaryTypeName","src":"4572:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2961,"nodeType":"ArrayTypeName","src":"4572:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2964,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":2977,"src":"4607:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2963,"name":"uint256","nodeType":"ElementaryTypeName","src":"4607:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2966,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":2977,"src":"4640:33:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2965,"name":"uint256","nodeType":"ElementaryTypeName","src":"4640:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2968,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":2977,"src":"4683:21:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2967,"name":"bytes","nodeType":"ElementaryTypeName","src":"4683:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4487:223:40"},"returnParameters":{"id":2976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2972,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":2977,"src":"4729:27:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2970,"name":"uint256","nodeType":"ElementaryTypeName","src":"4729:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2971,"nodeType":"ArrayTypeName","src":"4729:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":2975,"mutability":"mutable","name":"dueProtocolFeeAmounts","nodeType":"VariableDeclaration","scope":2977,"src":"4758:38:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2973,"name":"uint256","nodeType":"ElementaryTypeName","src":"4758:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2974,"nodeType":"ArrayTypeName","src":"4758:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4728:69:40"},"scope":3043,"src":"4468:330:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":2978,"nodeType":"StructuredDocumentation","src":"4804:125:40","text":" @dev Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it)."},"functionSelector":"38fff2d0","id":2983,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolId","nodeType":"FunctionDefinition","parameters":{"id":2979,"nodeType":"ParameterList","parameters":[],"src":"4952:2:40"},"returnParameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2983,"src":"4978:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2980,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4978:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4977:9:40"},"scope":3043,"src":"4934:53:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2984,"nodeType":"StructuredDocumentation","src":"4993:150:40","text":" @dev Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a\n 10% swap fee."},"functionSelector":"55c67628","id":2989,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":2985,"nodeType":"ParameterList","parameters":[],"src":"5177:2:40"},"returnParameters":{"id":2988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2987,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2989,"src":"5203:7:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2986,"name":"uint256","nodeType":"ElementaryTypeName","src":"5203:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5202:9:40"},"scope":3043,"src":"5148:64:40","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":2990,"nodeType":"StructuredDocumentation","src":"5218:224:40","text":" @dev Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically\n not relevant for outside parties, but which might be useful for some types of Pools."},"functionSelector":"1dd746ea","id":2996,"implemented":false,"kind":"function","modifiers":[],"name":"getScalingFactors","nodeType":"FunctionDefinition","parameters":{"id":2991,"nodeType":"ParameterList","parameters":[],"src":"5473:2:40"},"returnParameters":{"id":2995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2994,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":2996,"src":"5499:16:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2992,"name":"uint256","nodeType":"ElementaryTypeName","src":"5499:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2993,"nodeType":"ArrayTypeName","src":"5499:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5498:18:40"},"scope":3043,"src":"5447:70:40","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"87ec6817","id":3019,"implemented":false,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","parameters":{"id":3012,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2998,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3019,"src":"5551:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2997,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5551:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3000,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3019,"src":"5575:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2999,"name":"address","nodeType":"ElementaryTypeName","src":"5575:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3002,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3019,"src":"5599:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3001,"name":"address","nodeType":"ElementaryTypeName","src":"5599:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3005,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3019,"src":"5626:25:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3003,"name":"uint256","nodeType":"ElementaryTypeName","src":"5626:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3004,"nodeType":"ArrayTypeName","src":"5626:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3007,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3019,"src":"5661:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3006,"name":"uint256","nodeType":"ElementaryTypeName","src":"5661:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3009,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":3019,"src":"5694:33:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3008,"name":"uint256","nodeType":"ElementaryTypeName","src":"5694:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3011,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3019,"src":"5737:21:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3010,"name":"bytes","nodeType":"ElementaryTypeName","src":"5737:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5541:223:40"},"returnParameters":{"id":3018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3014,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":3019,"src":"5783:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3013,"name":"uint256","nodeType":"ElementaryTypeName","src":"5783:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3017,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":3019,"src":"5799:26:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3015,"name":"uint256","nodeType":"ElementaryTypeName","src":"5799:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3016,"nodeType":"ArrayTypeName","src":"5799:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5782:44:40"},"scope":3043,"src":"5523:304:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6028bfd4","id":3042,"implemented":false,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","parameters":{"id":3035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3021,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3042,"src":"5861:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3020,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5861:7:40","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3023,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3042,"src":"5885:14:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3022,"name":"address","nodeType":"ElementaryTypeName","src":"5885:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3025,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3042,"src":"5909:17:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3024,"name":"address","nodeType":"ElementaryTypeName","src":"5909:7:40","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3028,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3042,"src":"5936:25:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3026,"name":"uint256","nodeType":"ElementaryTypeName","src":"5936:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3027,"nodeType":"ArrayTypeName","src":"5936:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3030,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3042,"src":"5971:23:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3029,"name":"uint256","nodeType":"ElementaryTypeName","src":"5971:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3032,"mutability":"mutable","name":"protocolSwapFeePercentage","nodeType":"VariableDeclaration","scope":3042,"src":"6004:33:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3031,"name":"uint256","nodeType":"ElementaryTypeName","src":"6004:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3034,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3042,"src":"6047:21:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3033,"name":"bytes","nodeType":"ElementaryTypeName","src":"6047:5:40","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5851:223:40"},"returnParameters":{"id":3041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3037,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":3042,"src":"6093:13:40","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3036,"name":"uint256","nodeType":"ElementaryTypeName","src":"6093:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3040,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":3042,"src":"6108:27:40","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3038,"name":"uint256","nodeType":"ElementaryTypeName","src":"6108:7:40","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3039,"nodeType":"ArrayTypeName","src":"6108:9:40","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6092:44:40"},"scope":3043,"src":"5833:304:40","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3044,"src":"1097:5042:40"}],"src":"688:5452:40"},"id":40},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","exportedSymbols":{"IFlashLoanRecipient":[3062]},"id":3063,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3045,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:41"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3046,"nodeType":"ImportDirective","scope":3063,"sourceUnit":2091,"src":"773:51:41","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3062,"linearizedBaseContracts":[3062],"name":"IFlashLoanRecipient","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3047,"nodeType":"StructuredDocumentation","src":"862:496:41","text":" @dev When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient.\n At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this\n call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the\n Vault, or else the entire flash loan will revert.\n `userData` is the same value passed in the `IVault.flashLoan` call."},"functionSelector":"f04f2707","id":3061,"implemented":false,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","parameters":{"id":3059,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3050,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3061,"src":"1398:22:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3048,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1398:6:41","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3049,"nodeType":"ArrayTypeName","src":"1398:8:41","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3053,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3061,"src":"1430:24:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3051,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3052,"nodeType":"ArrayTypeName","src":"1430:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3056,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":3061,"src":"1464:27:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3054,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:41","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3055,"nodeType":"ArrayTypeName","src":"1464:9:41","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3058,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3061,"src":"1501:21:41","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3057,"name":"bytes","nodeType":"ElementaryTypeName","src":"1501:5:41","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1388:140:41"},"returnParameters":{"id":3060,"nodeType":"ParameterList","parameters":[],"src":"1537:0:41"},"scope":3062,"src":"1363:175:41","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3063,"src":"826:714:41"}],"src":"688:853:41"},"id":41},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol","exportedSymbols":{"IPoolSwapStructs":[3087]},"id":3088,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3064,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:42"},{"id":3065,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:42"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3066,"nodeType":"ImportDirective","scope":3088,"sourceUnit":2091,"src":"755:51:42","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":3067,"nodeType":"ImportDirective","scope":3088,"sourceUnit":3618,"src":"808:22:42","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":true,"id":3087,"linearizedBaseContracts":[3087],"name":"IPoolSwapStructs","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPoolSwapStructs.SwapRequest","id":3086,"members":[{"constant":false,"id":3069,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3086,"src":"2365:20:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":3068,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"2365:15:42","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3071,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":3086,"src":"2395:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3070,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2395:6:42","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3073,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":3086,"src":"2419:15:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3072,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2419:6:42","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3075,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3086,"src":"2444:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3074,"name":"uint256","nodeType":"ElementaryTypeName","src":"2444:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3077,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3086,"src":"2489:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3076,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2489:7:42","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3079,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3086,"src":"2513:23:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3078,"name":"uint256","nodeType":"ElementaryTypeName","src":"2513:7:42","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3081,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":3086,"src":"2546:12:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3080,"name":"address","nodeType":"ElementaryTypeName","src":"2546:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3083,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":3086,"src":"2568:10:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3082,"name":"address","nodeType":"ElementaryTypeName","src":"2568:7:42","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3085,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3086,"src":"2588:14:42","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3084,"name":"bytes","nodeType":"ElementaryTypeName","src":"2588:5:42","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SwapRequest","nodeType":"StructDefinition","scope":3087,"src":"2336:273:42","visibility":"public"}],"scope":3088,"src":"832:1779:42"}],"src":"688:1924:42"},"id":42},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","exportedSymbols":{"IProtocolFeesCollector":[3152]},"id":3153,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3089,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:43"},{"id":3090,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"720:33:43"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3091,"nodeType":"ImportDirective","scope":3153,"sourceUnit":2091,"src":"755:51:43","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"./IVault.sol","id":3092,"nodeType":"ImportDirective","scope":3153,"sourceUnit":3618,"src":"808:22:43","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":3093,"nodeType":"ImportDirective","scope":3153,"sourceUnit":2920,"src":"831:27:43","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3152,"linearizedBaseContracts":[3152],"name":"IProtocolFeesCollector","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":3097,"name":"SwapFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":3096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3095,"indexed":false,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":3097,"src":"930:28:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3094,"name":"uint256","nodeType":"ElementaryTypeName","src":"930:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"929:30:43"},"src":"899:61:43"},{"anonymous":false,"id":3101,"name":"FlashLoanFeePercentageChanged","nodeType":"EventDefinition","parameters":{"id":3100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3099,"indexed":false,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":3101,"src":"1001:33:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3098,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1000:35:43"},"src":"965:71:43"},{"functionSelector":"6daefab6","id":3112,"implemented":false,"kind":"function","modifiers":[],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","parameters":{"id":3110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3104,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3112,"src":"1082:24:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3102,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1082:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3103,"nodeType":"ArrayTypeName","src":"1082:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3107,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3112,"src":"1116:26:43","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3106,"nodeType":"ArrayTypeName","src":"1116:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3109,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3112,"src":"1152:17:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3108,"name":"address","nodeType":"ElementaryTypeName","src":"1152:7:43","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1072:103:43"},"returnParameters":{"id":3111,"nodeType":"ParameterList","parameters":[],"src":"1184:0:43"},"scope":3152,"src":"1042:143:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"38e9922e","id":3117,"implemented":false,"kind":"function","modifiers":[],"name":"setSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3114,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":3117,"src":"1221:28:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1221:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1220:30:43"},"returnParameters":{"id":3116,"nodeType":"ParameterList","parameters":[],"src":"1259:0:43"},"scope":3152,"src":"1191:69:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6b6b9f69","id":3122,"implemented":false,"kind":"function","modifiers":[],"name":"setFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3119,"mutability":"mutable","name":"newFlashLoanFeePercentage","nodeType":"VariableDeclaration","scope":3122,"src":"1301:33:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1301:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1300:35:43"},"returnParameters":{"id":3121,"nodeType":"ParameterList","parameters":[],"src":"1344:0:43"},"scope":3152,"src":"1266:79:43","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"55c67628","id":3127,"implemented":false,"kind":"function","modifiers":[],"name":"getSwapFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3123,"nodeType":"ParameterList","parameters":[],"src":"1380:2:43"},"returnParameters":{"id":3126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3125,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3127,"src":"1406:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3124,"name":"uint256","nodeType":"ElementaryTypeName","src":"1406:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1405:9:43"},"scope":3152,"src":"1351:64:43","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d877845c","id":3132,"implemented":false,"kind":"function","modifiers":[],"name":"getFlashLoanFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":3128,"nodeType":"ParameterList","parameters":[],"src":"1455:2:43"},"returnParameters":{"id":3131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3130,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3132,"src":"1481:7:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3129,"name":"uint256","nodeType":"ElementaryTypeName","src":"1481:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1480:9:43"},"scope":3152,"src":"1421:69:43","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e42abf35","id":3141,"implemented":false,"kind":"function","modifiers":[],"name":"getCollectedFeeAmounts","nodeType":"FunctionDefinition","parameters":{"id":3136,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3135,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3141,"src":"1528:22:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3133,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1528:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3134,"nodeType":"ArrayTypeName","src":"1528:8:43","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1527:24:43"},"returnParameters":{"id":3140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3139,"mutability":"mutable","name":"feeAmounts","nodeType":"VariableDeclaration","scope":3141,"src":"1575:27:43","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3137,"name":"uint256","nodeType":"ElementaryTypeName","src":"1575:7:43","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3138,"nodeType":"ArrayTypeName","src":"1575:9:43","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1574:29:43"},"scope":3152,"src":"1496:108:43","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aaabadc5","id":3146,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3142,"nodeType":"ParameterList","parameters":[],"src":"1632:2:43"},"returnParameters":{"id":3145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3144,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3146,"src":"1658:11:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":3143,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"1658:11:43","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1657:13:43"},"scope":3152,"src":"1610:61:43","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"fbfa77cf","id":3151,"implemented":false,"kind":"function","modifiers":[],"name":"vault","nodeType":"FunctionDefinition","parameters":{"id":3147,"nodeType":"ParameterList","parameters":[],"src":"1691:2:43"},"returnParameters":{"id":3150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3149,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3151,"src":"1717:6:43","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":3148,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1717:6:43","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1716:8:43"},"scope":3152,"src":"1677:48:43","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3153,"src":"860:867:43"}],"src":"688:1040:43"},"id":43},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"ast":{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","exportedSymbols":{"IVault":[3617]},"id":3618,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3154,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"688:33:44"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"../solidity-utils/openzeppelin/IERC20.sol","id":3155,"nodeType":"ImportDirective","scope":3618,"sourceUnit":2091,"src":"723:51:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"../solidity-utils/helpers/IAuthentication.sol","id":3156,"nodeType":"ImportDirective","scope":3618,"sourceUnit":1881,"src":"775:55:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"../solidity-utils/helpers/ISignaturesValidator.sol","id":3157,"nodeType":"ImportDirective","scope":3618,"sourceUnit":1899,"src":"831:60:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol","file":"../solidity-utils/helpers/ITemporarilyPausable.sol","id":3158,"nodeType":"ImportDirective","scope":3618,"sourceUnit":1918,"src":"892:60:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"../solidity-utils/misc/IWETH.sol","id":3159,"nodeType":"ImportDirective","scope":3618,"sourceUnit":2013,"src":"953:42:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"./IAsset.sol","id":3160,"nodeType":"ImportDirective","scope":3618,"sourceUnit":2905,"src":"997:22:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"./IAuthorizer.sol","id":3161,"nodeType":"ImportDirective","scope":3618,"sourceUnit":2920,"src":"1020:27:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"./IFlashLoanRecipient.sol","id":3162,"nodeType":"ImportDirective","scope":3618,"sourceUnit":3063,"src":"1048:35:44","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"./IProtocolFeesCollector.sol","id":3163,"nodeType":"ImportDirective","scope":3618,"sourceUnit":3153,"src":"1084:38:44","symbolAliases":[],"unitAlias":""},{"id":3164,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"1124:31:44"},{"abstract":false,"baseContracts":[{"baseName":{"id":3166,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":1898,"src":"1349:20:44","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$1898","typeString":"contract ISignaturesValidator"}},"id":3167,"nodeType":"InheritanceSpecifier","src":"1349:20:44"},{"baseName":{"id":3168,"name":"ITemporarilyPausable","nodeType":"UserDefinedTypeName","referencedDeclaration":1917,"src":"1371:20:44","typeDescriptions":{"typeIdentifier":"t_contract$_ITemporarilyPausable_$1917","typeString":"contract ITemporarilyPausable"}},"id":3169,"nodeType":"InheritanceSpecifier","src":"1371:20:44"},{"baseName":{"id":3170,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1880,"src":"1393:15:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1880","typeString":"contract IAuthentication"}},"id":3171,"nodeType":"InheritanceSpecifier","src":"1393:15:44"}],"contractDependencies":[1880,1898,1917],"contractKind":"interface","documentation":{"id":3165,"nodeType":"StructuredDocumentation","src":"1157:171:44","text":" @dev Full external interface for the Vault core contract - no external or public methods exist in the contract that\n don't override one of these declarations."},"fullyImplemented":false,"id":3617,"linearizedBaseContracts":[3617,1880,1917,1898],"name":"IVault","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":3172,"nodeType":"StructuredDocumentation","src":"2906:55:44","text":" @dev Returns the Vault's Authorizer."},"functionSelector":"aaabadc5","id":3177,"implemented":false,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3173,"nodeType":"ParameterList","parameters":[],"src":"2988:2:44"},"returnParameters":{"id":3176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3175,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3177,"src":"3014:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":3174,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"3014:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3013:13:44"},"scope":3617,"src":"2966:61:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3178,"nodeType":"StructuredDocumentation","src":"3033:175:44","text":" @dev Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this.\n Emits an `AuthorizerChanged` event."},"functionSelector":"058a628f","id":3183,"implemented":false,"kind":"function","modifiers":[],"name":"setAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3180,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":3183,"src":"3236:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":3179,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"3236:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3235:27:44"},"returnParameters":{"id":3182,"nodeType":"ParameterList","parameters":[],"src":"3271:0:44"},"scope":3617,"src":"3213:59:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3184,"nodeType":"StructuredDocumentation","src":"3278:80:44","text":" @dev Emitted when a new authorizer is set by `setAuthorizer`."},"id":3188,"name":"AuthorizerChanged","nodeType":"EventDefinition","parameters":{"id":3187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3186,"indexed":true,"mutability":"mutable","name":"newAuthorizer","nodeType":"VariableDeclaration","scope":3188,"src":"3387:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":3185,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"3387:11:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"3386:35:44"},"src":"3363:59:44"},{"documentation":{"id":3189,"nodeType":"StructuredDocumentation","src":"4518:99:44","text":" @dev Returns true if `user` has approved `relayer` to act as a relayer for them."},"functionSelector":"fec90d72","id":3198,"implemented":false,"kind":"function","modifiers":[],"name":"hasApprovedRelayer","nodeType":"FunctionDefinition","parameters":{"id":3194,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3191,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3198,"src":"4650:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3190,"name":"address","nodeType":"ElementaryTypeName","src":"4650:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3193,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":3198,"src":"4664:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3192,"name":"address","nodeType":"ElementaryTypeName","src":"4664:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4649:31:44"},"returnParameters":{"id":3197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3196,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3198,"src":"4704:4:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3195,"name":"bool","nodeType":"ElementaryTypeName","src":"4704:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4703:6:44"},"scope":3617,"src":"4622:88:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3199,"nodeType":"StructuredDocumentation","src":"4716:178:44","text":" @dev Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise.\n Emits a `RelayerApprovalChanged` event."},"functionSelector":"fa6e671d","id":3208,"implemented":false,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":3206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3201,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3208,"src":"4936:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3200,"name":"address","nodeType":"ElementaryTypeName","src":"4936:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3203,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":3208,"src":"4960:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3202,"name":"address","nodeType":"ElementaryTypeName","src":"4960:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3205,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":3208,"src":"4985:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3204,"name":"bool","nodeType":"ElementaryTypeName","src":"4985:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4926:78:44"},"returnParameters":{"id":3207,"nodeType":"ParameterList","parameters":[],"src":"5013:0:44"},"scope":3617,"src":"4899:115:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3209,"nodeType":"StructuredDocumentation","src":"5020:104:44","text":" @dev Emitted every time a relayer is approved or disapproved by `setRelayerApproval`."},"id":3217,"name":"RelayerApprovalChanged","nodeType":"EventDefinition","parameters":{"id":3216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3211,"indexed":true,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":3217,"src":"5158:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3210,"name":"address","nodeType":"ElementaryTypeName","src":"5158:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3213,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3217,"src":"5183:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3212,"name":"address","nodeType":"ElementaryTypeName","src":"5183:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3215,"indexed":false,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":3217,"src":"5207:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3214,"name":"bool","nodeType":"ElementaryTypeName","src":"5207:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5157:64:44"},"src":"5129:93:44"},{"documentation":{"id":3218,"nodeType":"StructuredDocumentation","src":"5930:78:44","text":" @dev Returns `user`'s Internal Balance for a set of tokens."},"functionSelector":"0f5a6efa","id":3229,"implemented":false,"kind":"function","modifiers":[],"name":"getInternalBalance","nodeType":"FunctionDefinition","parameters":{"id":3224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3220,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3229,"src":"6041:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3219,"name":"address","nodeType":"ElementaryTypeName","src":"6041:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3223,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3229,"src":"6055:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3221,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6055:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3222,"nodeType":"ArrayTypeName","src":"6055:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"6040:38:44"},"returnParameters":{"id":3228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3227,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3229,"src":"6102:16:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3225,"name":"uint256","nodeType":"ElementaryTypeName","src":"6102:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3226,"nodeType":"ArrayTypeName","src":"6102:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6101:18:44"},"scope":3617,"src":"6013:107:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3230,"nodeType":"StructuredDocumentation","src":"6126:416:44","text":" @dev Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer)\n and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as\n it lets integrators reuse a user's Vault allowance.\n For each operation, if the caller is not `sender`, it must be an authorized relayer for them."},"functionSelector":"0e8e3e84","id":3236,"implemented":false,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":3234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3233,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3236,"src":"6574:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":3231,"name":"UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3247,"src":"6574:13:44","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":3232,"nodeType":"ArrayTypeName","src":"6574:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"src":"6573:28:44"},"returnParameters":{"id":3235,"nodeType":"ParameterList","parameters":[],"src":"6618:0:44"},"scope":3617,"src":"6547:72:44","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.UserBalanceOp","id":3247,"members":[{"constant":false,"id":3238,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3247,"src":"6836:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3252","typeString":"enum IVault.UserBalanceOpKind"},"typeName":{"id":3237,"name":"UserBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3252,"src":"6836:17:44","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3252","typeString":"enum IVault.UserBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3240,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":3247,"src":"6868:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":3239,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"6868:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3242,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3247,"src":"6890:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3241,"name":"uint256","nodeType":"ElementaryTypeName","src":"6890:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3244,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3247,"src":"6914:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3243,"name":"address","nodeType":"ElementaryTypeName","src":"6914:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3246,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3247,"src":"6938:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3245,"name":"address","nodeType":"ElementaryTypeName","src":"6938:15:44","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"}],"name":"UserBalanceOp","nodeType":"StructDefinition","scope":3617,"src":"6805:165:44","visibility":"public"},{"canonicalName":"IVault.UserBalanceOpKind","id":3252,"members":[{"id":3248,"name":"DEPOSIT_INTERNAL","nodeType":"EnumValue","src":"8608:16:44"},{"id":3249,"name":"WITHDRAW_INTERNAL","nodeType":"EnumValue","src":"8626:17:44"},{"id":3250,"name":"TRANSFER_INTERNAL","nodeType":"EnumValue","src":"8645:17:44"},{"id":3251,"name":"TRANSFER_EXTERNAL","nodeType":"EnumValue","src":"8664:17:44"}],"name":"UserBalanceOpKind","nodeType":"EnumDefinition","src":"8583:100:44"},{"anonymous":false,"documentation":{"id":3253,"nodeType":"StructuredDocumentation","src":"8689:317:44","text":" @dev Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through\n interacting with Pools using Internal Balance.\n Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH\n address."},"id":3261,"name":"InternalBalanceChanged","nodeType":"EventDefinition","parameters":{"id":3260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3255,"indexed":true,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":3261,"src":"9040:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3254,"name":"address","nodeType":"ElementaryTypeName","src":"9040:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3257,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3261,"src":"9062:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3256,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"9062:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3259,"indexed":false,"mutability":"mutable","name":"delta","nodeType":"VariableDeclaration","scope":3261,"src":"9084:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3258,"name":"int256","nodeType":"ElementaryTypeName","src":"9084:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9039:58:44"},"src":"9011:87:44"},{"anonymous":false,"documentation":{"id":3262,"nodeType":"StructuredDocumentation","src":"9104:131:44","text":" @dev Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account."},"id":3272,"name":"ExternalBalanceTransfer","nodeType":"EventDefinition","parameters":{"id":3271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3264,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3272,"src":"9270:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3263,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"9270:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3266,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3272,"src":"9292:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3265,"name":"address","nodeType":"ElementaryTypeName","src":"9292:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3268,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3272,"src":"9316:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3267,"name":"address","nodeType":"ElementaryTypeName","src":"9316:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3270,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3272,"src":"9335:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3269,"name":"uint256","nodeType":"ElementaryTypeName","src":"9335:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9269:81:44"},"src":"9240:111:44"},{"canonicalName":"IVault.PoolSpecialization","id":3276,"members":[{"id":3273,"name":"GENERAL","nodeType":"EnumValue","src":"10457:7:44"},{"id":3274,"name":"MINIMAL_SWAP_INFO","nodeType":"EnumValue","src":"10466:17:44"},{"id":3275,"name":"TWO_TOKEN","nodeType":"EnumValue","src":"10485:9:44"}],"name":"PoolSpecialization","nodeType":"EnumDefinition","src":"10431:65:44"},{"documentation":{"id":3277,"nodeType":"StructuredDocumentation","src":"10502:702:44","text":" @dev Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which\n is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be\n changed.\n The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`,\n depending on the chosen specialization setting. This contract is known as the Pool's contract.\n Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words,\n multiple Pools may share the same contract.\n Emits a `PoolRegistered` event."},"functionSelector":"09b2760f","id":3284,"implemented":false,"kind":"function","modifiers":[],"name":"registerPool","nodeType":"FunctionDefinition","parameters":{"id":3280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3279,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":3284,"src":"11231:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3276","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3278,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3276,"src":"11231:18:44","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3276","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11230:35:44"},"returnParameters":{"id":3283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3282,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3284,"src":"11284:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3281,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11284:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11283:9:44"},"scope":3617,"src":"11209:84:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3285,"nodeType":"StructuredDocumentation","src":"11299:84:44","text":" @dev Emitted when a Pool is registered by calling `registerPool`."},"id":3293,"name":"PoolRegistered","nodeType":"EventDefinition","parameters":{"id":3292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3287,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3293,"src":"11409:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3286,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11409:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3289,"indexed":true,"mutability":"mutable","name":"poolAddress","nodeType":"VariableDeclaration","scope":3293,"src":"11433:27:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3288,"name":"address","nodeType":"ElementaryTypeName","src":"11433:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3291,"indexed":false,"mutability":"mutable","name":"specialization","nodeType":"VariableDeclaration","scope":3293,"src":"11462:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3276","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3290,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3276,"src":"11462:18:44","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3276","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11408:88:44"},"src":"11388:109:44"},{"documentation":{"id":3294,"nodeType":"StructuredDocumentation","src":"11503:85:44","text":" @dev Returns a Pool's contract address and specialization setting."},"functionSelector":"f6c00927","id":3303,"implemented":false,"kind":"function","modifiers":[],"name":"getPool","nodeType":"FunctionDefinition","parameters":{"id":3297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3296,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3303,"src":"11610:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3295,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11610:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11609:16:44"},"returnParameters":{"id":3302,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3299,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3303,"src":"11649:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3298,"name":"address","nodeType":"ElementaryTypeName","src":"11649:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3301,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3303,"src":"11658:18:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3276","typeString":"enum IVault.PoolSpecialization"},"typeName":{"id":3300,"name":"PoolSpecialization","nodeType":"UserDefinedTypeName","referencedDeclaration":3276,"src":"11658:18:44","typeDescriptions":{"typeIdentifier":"t_enum$_PoolSpecialization_$3276","typeString":"enum IVault.PoolSpecialization"}},"visibility":"internal"}],"src":"11648:29:44"},"scope":3617,"src":"11593:85:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3304,"nodeType":"StructuredDocumentation","src":"11684:1422:44","text":" @dev Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens,\n exit by receiving registered tokens, and can only swap registered tokens.\n Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length\n of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in\n ascending order.\n The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset\n Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`,\n depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore\n expected to be highly secured smart contracts with sound design principles, and the decision to register an\n Asset Manager should not be made lightly.\n Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset\n Manager is set, it cannot be changed except by deregistering the associated token and registering again with a\n different Asset Manager.\n Emits a `TokensRegistered` event."},"functionSelector":"66a9c7d2","id":3315,"implemented":false,"kind":"function","modifiers":[],"name":"registerTokens","nodeType":"FunctionDefinition","parameters":{"id":3313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3306,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3315,"src":"13144:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3305,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13144:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3309,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3315,"src":"13168:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3307,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"13168:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3308,"nodeType":"ArrayTypeName","src":"13168:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3312,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":3315,"src":"13200:30:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3310,"name":"address","nodeType":"ElementaryTypeName","src":"13200:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3311,"nodeType":"ArrayTypeName","src":"13200:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13134:102:44"},"returnParameters":{"id":3314,"nodeType":"ParameterList","parameters":[],"src":"13245:0:44"},"scope":3617,"src":"13111:135:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3316,"nodeType":"StructuredDocumentation","src":"13252:89:44","text":" @dev Emitted when a Pool registers tokens by calling `registerTokens`."},"id":3326,"name":"TokensRegistered","nodeType":"EventDefinition","parameters":{"id":3325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3318,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3326,"src":"13369:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3317,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13369:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3321,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3326,"src":"13393:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3319,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"13393:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3320,"nodeType":"ArrayTypeName","src":"13393:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3324,"indexed":false,"mutability":"mutable","name":"assetManagers","nodeType":"VariableDeclaration","scope":3326,"src":"13410:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3322,"name":"address","nodeType":"ElementaryTypeName","src":"13410:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3323,"nodeType":"ArrayTypeName","src":"13410:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"13368:66:44"},"src":"13346:89:44"},{"documentation":{"id":3327,"nodeType":"StructuredDocumentation","src":"13441:567:44","text":" @dev Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract.\n Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total\n balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens\n must be deregistered in the same `deregisterTokens` call.\n A deregistered token can be re-registered later on, possibly with a different Asset Manager.\n Emits a `TokensDeregistered` event."},"functionSelector":"7d3aeb96","id":3335,"implemented":false,"kind":"function","modifiers":[],"name":"deregisterTokens","nodeType":"FunctionDefinition","parameters":{"id":3333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3329,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3335,"src":"14039:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14039:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3332,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3335,"src":"14055:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3330,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"14055:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3331,"nodeType":"ArrayTypeName","src":"14055:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14038:40:44"},"returnParameters":{"id":3334,"nodeType":"ParameterList","parameters":[],"src":"14087:0:44"},"scope":3617,"src":"14013:75:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3336,"nodeType":"StructuredDocumentation","src":"14094:93:44","text":" @dev Emitted when a Pool deregisters tokens by calling `deregisterTokens`."},"id":3343,"name":"TokensDeregistered","nodeType":"EventDefinition","parameters":{"id":3342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3338,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3343,"src":"14217:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3337,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14217:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3341,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3343,"src":"14241:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3339,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"14241:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3340,"nodeType":"ArrayTypeName","src":"14241:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"14216:41:44"},"src":"14192:66:44"},{"documentation":{"id":3344,"nodeType":"StructuredDocumentation","src":"14264:1043:44","text":" @dev Returns detailed information for a Pool's registered token.\n `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens\n withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token`\n equals the sum of `cash` and `managed`.\n Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`,\n `managed` or `total` balance to be greater than 2^112 - 1.\n `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a\n join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for\n example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a\n change for this purpose, and will update `lastChangeBlock`.\n `assetManager` is the Pool's token Asset Manager."},"functionSelector":"b05f8e48","id":3359,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokenInfo","nodeType":"FunctionDefinition","parameters":{"id":3349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3346,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3359,"src":"15338:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3345,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15338:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3348,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3359,"src":"15354:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3347,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"15354:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"15337:30:44"},"returnParameters":{"id":3358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3351,"mutability":"mutable","name":"cash","nodeType":"VariableDeclaration","scope":3359,"src":"15428:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3350,"name":"uint256","nodeType":"ElementaryTypeName","src":"15428:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3353,"mutability":"mutable","name":"managed","nodeType":"VariableDeclaration","scope":3359,"src":"15454:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3352,"name":"uint256","nodeType":"ElementaryTypeName","src":"15454:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3355,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3359,"src":"15483:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3354,"name":"uint256","nodeType":"ElementaryTypeName","src":"15483:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3357,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3359,"src":"15520:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3356,"name":"address","nodeType":"ElementaryTypeName","src":"15520:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15414:136:44"},"scope":3617,"src":"15312:239:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3360,"nodeType":"StructuredDocumentation","src":"15557:828:44","text":" @dev Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of\n the tokens' `balances` changed.\n The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all\n Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order.\n If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same\n order as passed to `registerTokens`.\n Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are\n the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo`\n instead."},"functionSelector":"f94d4668","id":3373,"implemented":false,"kind":"function","modifiers":[],"name":"getPoolTokens","nodeType":"FunctionDefinition","parameters":{"id":3363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3362,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3373,"src":"16413:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3361,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16413:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"16412:16:44"},"returnParameters":{"id":3372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3366,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3373,"src":"16489:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3364,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"16489:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3365,"nodeType":"ArrayTypeName","src":"16489:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3369,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3373,"src":"16525:25:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3367,"name":"uint256","nodeType":"ElementaryTypeName","src":"16525:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3368,"nodeType":"ArrayTypeName","src":"16525:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3371,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":3373,"src":"16564:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3370,"name":"uint256","nodeType":"ElementaryTypeName","src":"16564:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16475:122:44"},"scope":3617,"src":"16390:208:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3374,"nodeType":"StructuredDocumentation","src":"16604:2304:44","text":" @dev Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will\n trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized\n Pool shares.\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount\n to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces\n these maximums.\n If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable\n this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the\n WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent\n back to the caller (not the sender, which is important for relayers).\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be\n sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final\n `assets` array might not be sorted. Pools with no registered tokens cannot be joined.\n If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only\n be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be\n withdrawn from Internal Balance: attempting to do so will trigger a revert.\n This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed\n directly to the Pool's contract, as is `recipient`.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"b95cac28","id":3385,"implemented":false,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":3383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3376,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3385,"src":"18940:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3375,"name":"bytes32","nodeType":"ElementaryTypeName","src":"18940:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3378,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3385,"src":"18964:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3377,"name":"address","nodeType":"ElementaryTypeName","src":"18964:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3380,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3385,"src":"18988:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3379,"name":"address","nodeType":"ElementaryTypeName","src":"18988:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3382,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":3385,"src":"19015:30:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":3381,"name":"JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3396,"src":"19015:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"18930:121:44"},"returnParameters":{"id":3384,"nodeType":"ParameterList","parameters":[],"src":"19068:0:44"},"scope":3617,"src":"18913:156:44","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.JoinPoolRequest","id":3396,"members":[{"constant":false,"id":3388,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3396,"src":"19108:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3386,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"19108:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":3387,"nodeType":"ArrayTypeName","src":"19108:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3391,"mutability":"mutable","name":"maxAmountsIn","nodeType":"VariableDeclaration","scope":3396,"src":"19133:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3389,"name":"uint256","nodeType":"ElementaryTypeName","src":"19133:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3390,"nodeType":"ArrayTypeName","src":"19133:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3393,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3396,"src":"19165:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3392,"name":"bytes","nodeType":"ElementaryTypeName","src":"19165:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3395,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":3396,"src":"19189:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3394,"name":"bool","nodeType":"ElementaryTypeName","src":"19189:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"JoinPoolRequest","nodeType":"StructDefinition","scope":3617,"src":"19075:145:44","visibility":"public"},{"documentation":{"id":3397,"nodeType":"StructuredDocumentation","src":"19226:2489:44","text":" @dev Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will\n trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized\n Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see\n `getPoolTokenInfo`).\n If the caller is not `sender`, it must be an authorized relayer for them.\n The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum\n token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault:\n it just enforces these minimums.\n If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To\n enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead\n of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit.\n `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when\n interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must\n be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the\n final `assets` array might not be sorted. Pools with no registered tokens cannot be exited.\n If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise,\n an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to\n do so will trigger a revert.\n `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the\n `tokens` array. This array must match the Pool's registered tokens.\n This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement\n their own custom logic. This typically requires additional information from the user (such as the expected number\n of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and\n passed directly to the Pool's contract.\n Emits a `PoolBalanceChanged` event."},"functionSelector":"8bdb3913","id":3408,"implemented":false,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":3406,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3399,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3408,"src":"21747:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3398,"name":"bytes32","nodeType":"ElementaryTypeName","src":"21747:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3401,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3408,"src":"21771:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3400,"name":"address","nodeType":"ElementaryTypeName","src":"21771:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3403,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3408,"src":"21795:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3402,"name":"address","nodeType":"ElementaryTypeName","src":"21795:15:44","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3405,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":3408,"src":"21830:30:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":3404,"name":"ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3419,"src":"21830:15:44","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"21737:129:44"},"returnParameters":{"id":3407,"nodeType":"ParameterList","parameters":[],"src":"21875:0:44"},"scope":3617,"src":"21720:156:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.ExitPoolRequest","id":3419,"members":[{"constant":false,"id":3411,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3419,"src":"21915:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3409,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"21915:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":3410,"nodeType":"ArrayTypeName","src":"21915:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3414,"mutability":"mutable","name":"minAmountsOut","nodeType":"VariableDeclaration","scope":3419,"src":"21940:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3412,"name":"uint256","nodeType":"ElementaryTypeName","src":"21940:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3413,"nodeType":"ArrayTypeName","src":"21940:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3416,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3419,"src":"21973:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3415,"name":"bytes","nodeType":"ElementaryTypeName","src":"21973:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3418,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":3419,"src":"21997:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3417,"name":"bool","nodeType":"ElementaryTypeName","src":"21997:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"ExitPoolRequest","nodeType":"StructDefinition","scope":3617,"src":"21882:144:44","visibility":"public"},{"anonymous":false,"documentation":{"id":3420,"nodeType":"StructuredDocumentation","src":"22032:116:44","text":" @dev Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively."},"id":3435,"name":"PoolBalanceChanged","nodeType":"EventDefinition","parameters":{"id":3434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3422,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3435,"src":"22187:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3421,"name":"bytes32","nodeType":"ElementaryTypeName","src":"22187:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3424,"indexed":true,"mutability":"mutable","name":"liquidityProvider","nodeType":"VariableDeclaration","scope":3435,"src":"22219:33:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3423,"name":"address","nodeType":"ElementaryTypeName","src":"22219:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3427,"indexed":false,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3435,"src":"22262:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3425,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"22262:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3426,"nodeType":"ArrayTypeName","src":"22262:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3430,"indexed":false,"mutability":"mutable","name":"deltas","nodeType":"VariableDeclaration","scope":3435,"src":"22287:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3428,"name":"int256","nodeType":"ElementaryTypeName","src":"22287:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3429,"nodeType":"ArrayTypeName","src":"22287:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":3433,"indexed":false,"mutability":"mutable","name":"protocolFeeAmounts","nodeType":"VariableDeclaration","scope":3435,"src":"22312:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3431,"name":"uint256","nodeType":"ElementaryTypeName","src":"22312:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3432,"nodeType":"ArrayTypeName","src":"22312:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"22177:169:44"},"src":"22153:194:44"},{"canonicalName":"IVault.PoolBalanceChangeKind","id":3438,"members":[{"id":3436,"name":"JOIN","nodeType":"EnumValue","src":"22382:4:44"},{"id":3437,"name":"EXIT","nodeType":"EnumValue","src":"22388:4:44"}],"name":"PoolBalanceChangeKind","nodeType":"EnumDefinition","src":"22353:41:44"},{"canonicalName":"IVault.SwapKind","id":3441,"members":[{"id":3439,"name":"GIVEN_IN","nodeType":"EnumValue","src":"25995:8:44"},{"id":3440,"name":"GIVEN_OUT","nodeType":"EnumValue","src":"26005:9:44"}],"name":"SwapKind","nodeType":"EnumDefinition","src":"25979:37:44"},{"documentation":{"id":3442,"nodeType":"StructuredDocumentation","src":"26022:587:44","text":" @dev Performs a swap with a single Pool.\n If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens\n taken from the Pool, which must be greater than or equal to `limit`.\n If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens\n sent to the Pool, which must be less than or equal to `limit`.\n Internal Balance usage and the recipient are determined by the `funds` struct.\n Emits a `Swap` event."},"functionSelector":"52bbbe29","id":3455,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":3451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3444,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":3455,"src":"26637:28:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":3443,"name":"SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3468,"src":"26637:10:44","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":3446,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3455,"src":"26675:27:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3445,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"26675:14:44","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":3448,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":3455,"src":"26712:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3447,"name":"uint256","nodeType":"ElementaryTypeName","src":"26712:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3450,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3455,"src":"26735:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3449,"name":"uint256","nodeType":"ElementaryTypeName","src":"26735:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26627:130:44"},"returnParameters":{"id":3454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3455,"src":"26784:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3452,"name":"uint256","nodeType":"ElementaryTypeName","src":"26784:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26783:9:44"},"scope":3617,"src":"26614:179:44","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.SingleSwap","id":3468,"members":[{"constant":false,"id":3457,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3468,"src":"27377:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3456,"name":"bytes32","nodeType":"ElementaryTypeName","src":"27377:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3459,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3468,"src":"27401:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":3458,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"27401:8:44","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3461,"mutability":"mutable","name":"assetIn","nodeType":"VariableDeclaration","scope":3468,"src":"27424:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":3460,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"27424:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3463,"mutability":"mutable","name":"assetOut","nodeType":"VariableDeclaration","scope":3468,"src":"27448:15:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":3462,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"27448:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"},{"constant":false,"id":3465,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3468,"src":"27473:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3464,"name":"uint256","nodeType":"ElementaryTypeName","src":"27473:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3467,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3468,"src":"27497:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3466,"name":"bytes","nodeType":"ElementaryTypeName","src":"27497:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SingleSwap","nodeType":"StructDefinition","scope":3617,"src":"27349:169:44","visibility":"public"},{"documentation":{"id":3469,"nodeType":"StructuredDocumentation","src":"27524:1980:44","text":" @dev Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either\n the amount of tokens sent to or received from the Pool, depending on the `kind` value.\n Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the\n Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at\n the same index in the `assets` array.\n Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a\n Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or\n `amountOut` depending on the swap kind.\n Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out\n of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal\n the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`.\n The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses,\n or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and\n out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to\n or unwrapped from WETH by the Vault.\n Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies\n the minimum or maximum amount of each token the vault is allowed to transfer.\n `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the\n equivalent `swap` call.\n Emits `Swap` events."},"functionSelector":"945bcec9","id":3490,"implemented":false,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":3485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3471,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3490,"src":"29537:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":3470,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"29537:8:44","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3474,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":3490,"src":"29560:28:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":3472,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"29560:13:44","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":3473,"nodeType":"ArrayTypeName","src":"29560:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":3477,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3490,"src":"29598:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3475,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"29598:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":3476,"nodeType":"ArrayTypeName","src":"29598:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3479,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3490,"src":"29630:27:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3478,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"29630:14:44","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":3482,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":3490,"src":"29667:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3480,"name":"int256","nodeType":"ElementaryTypeName","src":"29667:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3481,"nodeType":"ArrayTypeName","src":"29667:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":3484,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":3490,"src":"29699:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3483,"name":"uint256","nodeType":"ElementaryTypeName","src":"29699:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29527:194:44"},"returnParameters":{"id":3489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3488,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3490,"src":"29748:15:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3486,"name":"int256","nodeType":"ElementaryTypeName","src":"29748:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3487,"nodeType":"ArrayTypeName","src":"29748:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"29747:17:44"},"scope":3617,"src":"29509:256:44","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.BatchSwapStep","id":3501,"members":[{"constant":false,"id":3492,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3501,"src":"30358:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30358:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3494,"mutability":"mutable","name":"assetInIndex","nodeType":"VariableDeclaration","scope":3501,"src":"30382:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3493,"name":"uint256","nodeType":"ElementaryTypeName","src":"30382:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3496,"mutability":"mutable","name":"assetOutIndex","nodeType":"VariableDeclaration","scope":3501,"src":"30412:21:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3495,"name":"uint256","nodeType":"ElementaryTypeName","src":"30412:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3498,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3501,"src":"30443:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3497,"name":"uint256","nodeType":"ElementaryTypeName","src":"30443:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3500,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3501,"src":"30467:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":3499,"name":"bytes","nodeType":"ElementaryTypeName","src":"30467:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BatchSwapStep","nodeType":"StructDefinition","scope":3617,"src":"30327:161:44","visibility":"public"},{"anonymous":false,"documentation":{"id":3502,"nodeType":"StructuredDocumentation","src":"30494:92:44","text":" @dev Emitted for each individual swap performed by `swap` or `batchSwap`."},"id":3514,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":3513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3504,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3514,"src":"30611:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3503,"name":"bytes32","nodeType":"ElementaryTypeName","src":"30611:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3506,"indexed":true,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","scope":3514,"src":"30643:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3505,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"30643:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3508,"indexed":true,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","scope":3514,"src":"30675:23:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3507,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"30675:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3510,"indexed":false,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","scope":3514,"src":"30708:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3509,"name":"uint256","nodeType":"ElementaryTypeName","src":"30708:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3512,"indexed":false,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","scope":3514,"src":"30734:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3511,"name":"uint256","nodeType":"ElementaryTypeName","src":"30734:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30601:156:44"},"src":"30591:167:44"},{"canonicalName":"IVault.FundManagement","id":3523,"members":[{"constant":false,"id":3516,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":3523,"src":"31721:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3515,"name":"address","nodeType":"ElementaryTypeName","src":"31721:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3518,"mutability":"mutable","name":"fromInternalBalance","nodeType":"VariableDeclaration","scope":3523,"src":"31745:24:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3517,"name":"bool","nodeType":"ElementaryTypeName","src":"31745:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3520,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3523,"src":"31779:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":3519,"name":"address","nodeType":"ElementaryTypeName","src":"31779:15:44","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":3522,"mutability":"mutable","name":"toInternalBalance","nodeType":"VariableDeclaration","scope":3523,"src":"31814:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3521,"name":"bool","nodeType":"ElementaryTypeName","src":"31814:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FundManagement","nodeType":"StructDefinition","scope":3617,"src":"31689:154:44","visibility":"public"},{"documentation":{"id":3524,"nodeType":"StructuredDocumentation","src":"31849:1027:44","text":" @dev Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be\n simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result.\n Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH)\n the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it\n receives are the same that an equivalent `batchSwap` call would receive.\n Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct.\n This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens,\n approve them for the Vault, or even know a user's address.\n Note that this function is not 'view' (due to implementation details): the client code must explicitly execute\n eth_call instead of eth_sendTransaction."},"functionSelector":"f84d066e","id":3540,"implemented":false,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","parameters":{"id":3535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3526,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3540,"src":"32914:13:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":3525,"name":"SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"32914:8:44","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":3529,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":3540,"src":"32937:28:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":3527,"name":"BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"32937:13:44","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":3528,"nodeType":"ArrayTypeName","src":"32937:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":3532,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":3540,"src":"32975:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":3530,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"32975:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":3531,"nodeType":"ArrayTypeName","src":"32975:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":3534,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":3540,"src":"33007:27:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":3533,"name":"FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"33007:14:44","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"32904:136:44"},"returnParameters":{"id":3539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3538,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":3540,"src":"33059:27:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":3536,"name":"int256","nodeType":"ElementaryTypeName","src":"33059:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":3537,"nodeType":"ArrayTypeName","src":"33059:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"33058:29:44"},"scope":3617,"src":"32881:207:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3541,"nodeType":"StructuredDocumentation","src":"33114:604:44","text":" @dev Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it,\n and then reverting unless the tokens plus a proportional protocol fee have been returned.\n The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount\n for each token contract. `tokens` must be sorted in ascending order.\n The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the\n `receiveFlashLoan` call.\n Emits `FlashLoan` events."},"functionSelector":"5c38449e","id":3554,"implemented":false,"kind":"function","modifiers":[],"name":"flashLoan","nodeType":"FunctionDefinition","parameters":{"id":3552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3543,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3554,"src":"33751:29:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3062","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":3542,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":3062,"src":"33751:19:44","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3062","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":3546,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":3554,"src":"33790:22:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":3544,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"33790:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":3545,"nodeType":"ArrayTypeName","src":"33790:8:44","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":3549,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":3554,"src":"33822:24:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3547,"name":"uint256","nodeType":"ElementaryTypeName","src":"33822:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3548,"nodeType":"ArrayTypeName","src":"33822:9:44","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3551,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3554,"src":"33856:21:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3550,"name":"bytes","nodeType":"ElementaryTypeName","src":"33856:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"33741:142:44"},"returnParameters":{"id":3553,"nodeType":"ParameterList","parameters":[],"src":"33892:0:44"},"scope":3617,"src":"33723:170:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":{"id":3555,"nodeType":"StructuredDocumentation","src":"33899:88:44","text":" @dev Emitted for each individual flash loan performed by `flashLoan`."},"id":3565,"name":"FlashLoan","nodeType":"EventDefinition","parameters":{"id":3564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3557,"indexed":true,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":3565,"src":"34008:37:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3062","typeString":"contract IFlashLoanRecipient"},"typeName":{"id":3556,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":3062,"src":"34008:19:44","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3062","typeString":"contract IFlashLoanRecipient"}},"visibility":"internal"},{"constant":false,"id":3559,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3565,"src":"34047:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3558,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"34047:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3561,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3565,"src":"34069:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3560,"name":"uint256","nodeType":"ElementaryTypeName","src":"34069:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3563,"indexed":false,"mutability":"mutable","name":"feeAmount","nodeType":"VariableDeclaration","scope":3565,"src":"34085:17:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3562,"name":"uint256","nodeType":"ElementaryTypeName","src":"34085:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34007:96:44"},"src":"33992:112:44"},{"documentation":{"id":3566,"nodeType":"StructuredDocumentation","src":"35100:434:44","text":" @dev Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates.\n Pool Balance management features batching, which means a single contract call can be used to perform multiple\n operations of different kinds, with different Pools and tokens, at once.\n For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`."},"functionSelector":"e6c46092","id":3572,"implemented":false,"kind":"function","modifiers":[],"name":"managePoolBalance","nodeType":"FunctionDefinition","parameters":{"id":3570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3569,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":3572,"src":"35566:26:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3581_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.PoolBalanceOp[]"},"typeName":{"baseType":{"id":3567,"name":"PoolBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3581,"src":"35566:13:44","typeDescriptions":{"typeIdentifier":"t_struct$_PoolBalanceOp_$3581_storage_ptr","typeString":"struct IVault.PoolBalanceOp"}},"id":3568,"nodeType":"ArrayTypeName","src":"35566:15:44","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_PoolBalanceOp_$3581_storage_$dyn_storage_ptr","typeString":"struct IVault.PoolBalanceOp[]"}},"visibility":"internal"}],"src":"35565:28:44"},"returnParameters":{"id":3571,"nodeType":"ParameterList","parameters":[],"src":"35602:0:44"},"scope":3617,"src":"35539:64:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"canonicalName":"IVault.PoolBalanceOp","id":3581,"members":[{"constant":false,"id":3574,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":3581,"src":"35640:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3585","typeString":"enum IVault.PoolBalanceOpKind"},"typeName":{"id":3573,"name":"PoolBalanceOpKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3585,"src":"35640:17:44","typeDescriptions":{"typeIdentifier":"t_enum$_PoolBalanceOpKind_$3585","typeString":"enum IVault.PoolBalanceOpKind"}},"visibility":"internal"},{"constant":false,"id":3576,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3581,"src":"35672:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3575,"name":"bytes32","nodeType":"ElementaryTypeName","src":"35672:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3578,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3581,"src":"35696:12:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3577,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"35696:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3580,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":3581,"src":"35718:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3579,"name":"uint256","nodeType":"ElementaryTypeName","src":"35718:7:44","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"PoolBalanceOp","nodeType":"StructDefinition","scope":3617,"src":"35609:130:44","visibility":"public"},{"canonicalName":"IVault.PoolBalanceOpKind","id":3585,"members":[{"id":3582,"name":"WITHDRAW","nodeType":"EnumValue","src":"36261:8:44"},{"id":3583,"name":"DEPOSIT","nodeType":"EnumValue","src":"36271:7:44"},{"id":3584,"name":"UPDATE","nodeType":"EnumValue","src":"36280:6:44"}],"name":"PoolBalanceOpKind","nodeType":"EnumDefinition","src":"36236:52:44"},{"anonymous":false,"documentation":{"id":3586,"nodeType":"StructuredDocumentation","src":"36294:109:44","text":" @dev Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`."},"id":3598,"name":"PoolBalanceManaged","nodeType":"EventDefinition","parameters":{"id":3597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3588,"indexed":true,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":3598,"src":"36442:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"36442:7:44","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3590,"indexed":true,"mutability":"mutable","name":"assetManager","nodeType":"VariableDeclaration","scope":3598,"src":"36474:28:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3589,"name":"address","nodeType":"ElementaryTypeName","src":"36474:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3592,"indexed":true,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":3598,"src":"36512:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":3591,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"36512:6:44","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":3594,"indexed":false,"mutability":"mutable","name":"cashDelta","nodeType":"VariableDeclaration","scope":3598,"src":"36542:16:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3593,"name":"int256","nodeType":"ElementaryTypeName","src":"36542:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":3596,"indexed":false,"mutability":"mutable","name":"managedDelta","nodeType":"VariableDeclaration","scope":3598,"src":"36568:19:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":3595,"name":"int256","nodeType":"ElementaryTypeName","src":"36568:6:44","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"36432:161:44"},"src":"36408:186:44"},{"documentation":{"id":3599,"nodeType":"StructuredDocumentation","src":"37471:64:44","text":" @dev Returns the current protocol fee module."},"functionSelector":"d2946c2b","id":3604,"implemented":false,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","parameters":{"id":3600,"nodeType":"ParameterList","parameters":[],"src":"37573:2:44"},"returnParameters":{"id":3603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3602,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3604,"src":"37599:22:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":3601,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"37599:22:44","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"37598:24:44"},"scope":3617,"src":"37540:83:44","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":3605,"nodeType":"StructuredDocumentation","src":"37629:635:44","text":" @dev Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an\n error in some part of the system.\n The Vault can only be paused during an initial time period, after which pausing is forever disabled.\n While the contract is paused, the following features are disabled:\n - depositing and transferring internal balance\n - transferring external balance (using the Vault's allowance)\n - swaps\n - joining Pools\n - Asset Manager interactions\n Internal Balance can still be withdrawn, and Pools exited."},"functionSelector":"16c38b3c","id":3610,"implemented":false,"kind":"function","modifiers":[],"name":"setPaused","nodeType":"FunctionDefinition","parameters":{"id":3608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3607,"mutability":"mutable","name":"paused","nodeType":"VariableDeclaration","scope":3610,"src":"38288:11:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3606,"name":"bool","nodeType":"ElementaryTypeName","src":"38288:4:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"38287:13:44"},"returnParameters":{"id":3609,"nodeType":"ParameterList","parameters":[],"src":"38309:0:44"},"scope":3617,"src":"38269:41:44","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":3611,"nodeType":"StructuredDocumentation","src":"38316:58:44","text":" @dev Returns the Vault's WETH instance."},"functionSelector":"ad5c4648","id":3616,"implemented":false,"kind":"function","modifiers":[],"name":"WETH","nodeType":"FunctionDefinition","parameters":{"id":3612,"nodeType":"ParameterList","parameters":[],"src":"38392:2:44"},"returnParameters":{"id":3615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3614,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3616,"src":"38418:5:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"},"typeName":{"id":3613,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2012,"src":"38418:5:44","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"38417:7:44"},"scope":3617,"src":"38379:46:44","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3618,"src":"1329:37155:44"}],"src":"688:37797:44"},"id":44},"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","exportedSymbols":{"BasePoolAuthorization":[3712]},"id":3713,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3619,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:45"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol","id":3620,"nodeType":"ImportDirective","scope":3713,"sourceUnit":2920,"src":"713:70:45","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":3621,"nodeType":"ImportDirective","scope":3713,"sourceUnit":4049,"src":"785:79:45","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3623,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4048,"src":"1535:14:45","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$4048","typeString":"contract Authentication"}},"id":3624,"nodeType":"InheritanceSpecifier","src":"1535:14:45"}],"contractDependencies":[1880,4048],"contractKind":"contract","documentation":{"id":3622,"nodeType":"StructuredDocumentation","src":"866:625:45","text":" @dev Base authorization layer implementation for Pools.\n The owner account can call some of the permissioned functions - access control of the rest is delegated to the\n Authorizer. Note that this owner is immutable: more sophisticated permission schemes, such as multiple ownership,\n granular roles, etc., could be built on top of this by making the owner a smart contract.\n Access control of all other permissioned functions is delegated to an Authorizer. It is also possible to delegate\n control of *all* permissioned functions to the Authorizer by setting the owner address to `_DELEGATE_OWNER`."},"fullyImplemented":false,"id":3712,"linearizedBaseContracts":[3712,4048,1880],"name":"BasePoolAuthorization","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3626,"mutability":"immutable","name":"_owner","nodeType":"VariableDeclaration","scope":3712,"src":"1556:32:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3625,"name":"address","nodeType":"ElementaryTypeName","src":"1556:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":true,"id":3629,"mutability":"constant","name":"_DELEGATE_OWNER","nodeType":"VariableDeclaration","scope":3712,"src":"1595:86:45","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3627,"name":"address","nodeType":"ElementaryTypeName","src":"1595:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"hexValue":"307842413142413162613142413162413162413142613142413162613142413162413162613162613142","id":3628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1639:42:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xBA1BA1ba1BA1bA1bA1Ba1BA1ba1BA1bA1ba1ba1B"},"visibility":"internal"},{"body":{"id":3638,"nodeType":"Block","src":"1715:31:45","statements":[{"expression":{"id":3636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3634,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"1725:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3635,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3631,"src":"1734:5:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1725:14:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3637,"nodeType":"ExpressionStatement","src":"1725:14:45"}]},"id":3639,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3631,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":3639,"src":"1700:13:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3630,"name":"address","nodeType":"ElementaryTypeName","src":"1700:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1699:15:45"},"returnParameters":{"id":3633,"nodeType":"ParameterList","parameters":[],"src":"1715:0:45"},"scope":3712,"src":"1688:58:45","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3646,"nodeType":"Block","src":"1802:30:45","statements":[{"expression":{"id":3644,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3626,"src":"1819:6:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3643,"id":3645,"nodeType":"Return","src":"1812:13:45"}]},"functionSelector":"893d20e8","id":3647,"implemented":true,"kind":"function","modifiers":[],"name":"getOwner","nodeType":"FunctionDefinition","parameters":{"id":3640,"nodeType":"ParameterList","parameters":[],"src":"1769:2:45"},"returnParameters":{"id":3643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3642,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3647,"src":"1793:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3641,"name":"address","nodeType":"ElementaryTypeName","src":"1793:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1792:9:45"},"scope":3712,"src":"1752:80:45","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":3655,"nodeType":"Block","src":"1899:40:45","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3652,"name":"_getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"1916:14:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1916:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"functionReturnParameters":3651,"id":3654,"nodeType":"Return","src":"1909:23:45"}]},"functionSelector":"aaabadc5","id":3656,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3648,"nodeType":"ParameterList","parameters":[],"src":"1860:2:45"},"returnParameters":{"id":3651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3650,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3656,"src":"1886:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":3649,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"1886:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1885:13:45"},"scope":3712,"src":"1838:101:45","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4047],"body":{"id":3695,"nodeType":"Block","src":"2039:450:45","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3666,"name":"getOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"2054:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2054:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":3668,"name":"_DELEGATE_OWNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"2068:15:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2054:29:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":3670,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2053:31:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":3672,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3658,"src":"2107:8:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3671,"name":"_isOwnerOnlyAction","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3706,"src":"2088:18:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":3673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:28:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2053:63:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3693,"nodeType":"Block","src":"2275:208:45","statements":[{"expression":{"arguments":[{"id":3685,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3658,"src":"2439:8:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3686,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3660,"src":"2449:7:45","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":3689,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2466:4:45","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3712","typeString":"contract BasePoolAuthorization"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3712","typeString":"contract BasePoolAuthorization"}],"id":3688,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2458:7:45","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3687,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:45","typeDescriptions":{}}},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2458:13:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3682,"name":"_getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"2411:14:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2411:16:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2918,"src":"2411:27:45","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":3691,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2411:61:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3665,"id":3692,"nodeType":"Return","src":"2404:68:45"}]},"id":3694,"nodeType":"IfStatement","src":"2049:434:45","trueBody":{"id":3681,"nodeType":"Block","src":"2118:151:45","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3675,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2234:3:45","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2234:10:45","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3677,"name":"getOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"2248:8:45","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2248:10:45","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2234:24:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3665,"id":3680,"nodeType":"Return","src":"2227:31:45"}]}}]},"id":3696,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":3662,"nodeType":"OverrideSpecifier","overrides":[],"src":"2015:8:45"},"parameters":{"id":3661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3658,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":3696,"src":"1966:16:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3657,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1966:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3660,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":3696,"src":"1984:15:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3659,"name":"address","nodeType":"ElementaryTypeName","src":"1984:7:45","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1965:35:45"},"returnParameters":{"id":3665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3664,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3696,"src":"2033:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3663,"name":"bool","nodeType":"ElementaryTypeName","src":"2033:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2032:6:45"},"scope":3712,"src":"1945:544:45","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3705,"nodeType":"Block","src":"2569:29:45","statements":[{"expression":{"hexValue":"66616c7365","id":3703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2586:5:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":3702,"id":3704,"nodeType":"Return","src":"2579:12:45"}]},"id":3706,"implemented":true,"kind":"function","modifiers":[],"name":"_isOwnerOnlyAction","nodeType":"FunctionDefinition","parameters":{"id":3699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3698,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3706,"src":"2523:7:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3697,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2523:7:45","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2522:9:45"},"returnParameters":{"id":3702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3701,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3706,"src":"2563:4:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3700,"name":"bool","nodeType":"ElementaryTypeName","src":"2563:4:45","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2562:6:45"},"scope":3712,"src":"2495:103:45","stateMutability":"view","virtual":true,"visibility":"internal"},{"id":3711,"implemented":false,"kind":"function","modifiers":[],"name":"_getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":3707,"nodeType":"ParameterList","parameters":[],"src":"2627:2:45"},"returnParameters":{"id":3710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3709,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3711,"src":"2661:11:45","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":3708,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"2661:11:45","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"2660:13:45"},"scope":3712,"src":"2604:70:45","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":3713,"src":"1492:1184:45"}],"src":"688:1989:45"},"id":45},"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol","exportedSymbols":{"RecoveryMode":[3831]},"id":3832,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3714,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:46"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3715,"nodeType":"ImportDirective","scope":3832,"sourceUnit":1870,"src":"713:90:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol","id":3716,"nodeType":"ImportDirective","scope":3832,"sourceUnit":1021,"src":"804:80:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","id":3717,"nodeType":"ImportDirective","scope":3832,"sourceUnit":1090,"src":"885:77:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":3718,"nodeType":"ImportDirective","scope":3832,"sourceUnit":5294,"src":"964:72:46","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","file":"./BasePoolAuthorization.sol","id":3719,"nodeType":"ImportDirective","scope":3832,"sourceUnit":3713,"src":"1038:37:46","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3721,"name":"IRecoveryMode","nodeType":"UserDefinedTypeName","referencedDeclaration":1089,"src":"2624:13:46","typeDescriptions":{"typeIdentifier":"t_contract$_IRecoveryMode_$1089","typeString":"contract IRecoveryMode"}},"id":3722,"nodeType":"InheritanceSpecifier","src":"2624:13:46"},{"baseName":{"id":3723,"name":"BasePoolAuthorization","nodeType":"UserDefinedTypeName","referencedDeclaration":3712,"src":"2639:21:46","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3712","typeString":"contract BasePoolAuthorization"}},"id":3724,"nodeType":"InheritanceSpecifier","src":"2639:21:46"}],"contractDependencies":[1089,1880,3712,4048],"contractKind":"contract","documentation":{"id":3720,"nodeType":"StructuredDocumentation","src":"1077:1512:46","text":" @notice Handle storage and state changes for pools that support \"Recovery Mode\".\n @dev This is intended to provide a safe way to exit any pool during some kind of emergency, to avoid locking funds\n in the event the pool enters a non-functional state (i.e., some code that normally runs during exits is causing\n them to revert).\n Recovery Mode is *not* the same as pausing the pool. The pause function is only available during a short window\n after factory deployment. Pausing can only be intentionally reversed during a buffer period, and the contract\n will permanently unpause itself thereafter. Paused pools are completely disabled, in a kind of suspended animation,\n until they are voluntarily or involuntarily unpaused.\n By contrast, a privileged account - typically a governance multisig - can place a pool in Recovery Mode at any\n time, and it is always reversible. The pool is *not* disabled while in this mode: though of course whatever\n condition prompted the transition to Recovery Mode has likely effectively disabled some functions. Rather,\n a special \"clean\" exit is enabled, which runs the absolute minimum code necessary to exit proportionally.\n In particular, stable pools do not attempt to compute the invariant (which is a complex, iterative calculation\n that can fail in extreme circumstances), and no protocol fees are collected.\n It is critical to ensure that turning on Recovery Mode would do no harm, if activated maliciously or in error."},"fullyImplemented":false,"id":3831,"linearizedBaseContracts":[3831,3712,4048,1880,1089],"name":"RecoveryMode","nodeType":"ContractDefinition","nodes":[{"id":3727,"libraryName":{"id":3725,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5293,"src":"2673:10:46","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5293","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"2667:29:46","typeName":{"id":3726,"name":"uint256","nodeType":"ElementaryTypeName","src":"2688:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":3730,"libraryName":{"id":3728,"name":"BasePoolUserData","nodeType":"UserDefinedTypeName","referencedDeclaration":1020,"src":"2707:16:46","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolUserData_$1020","typeString":"library BasePoolUserData"}},"nodeType":"UsingForDirective","src":"2701:33:46","typeName":{"id":3729,"name":"bytes","nodeType":"ElementaryTypeName","src":"2728:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},{"body":{"id":3737,"nodeType":"Block","src":"2846:54:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3733,"name":"_ensureNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"2856:24:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2856:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3735,"nodeType":"ExpressionStatement","src":"2856:26:46"},{"id":3736,"nodeType":"PlaceholderStatement","src":"2892:1:46"}]},"documentation":{"id":3731,"nodeType":"StructuredDocumentation","src":"2740:68:46","text":" @dev Reverts if the contract is in Recovery Mode."},"id":3738,"name":"whenNotInRecoveryMode","nodeType":"ModifierDefinition","parameters":{"id":3732,"nodeType":"ParameterList","parameters":[],"src":"2843:2:46"},"src":"2813:87:46","virtual":false,"visibility":"internal"},{"baseFunctions":[1078],"body":{"id":3756,"nodeType":"Block","src":"3493:501:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3745,"name":"_ensureNotInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3814,"src":"3882:24:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3882:26:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3747,"nodeType":"ExpressionStatement","src":"3882:26:46"},{"expression":{"arguments":[{"hexValue":"74727565","id":3749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3936:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3748,"name":"_setRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"3919:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":3750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3919:22:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3751,"nodeType":"ExpressionStatement","src":"3919:22:46"},{"eventCall":{"arguments":[{"hexValue":"74727565","id":3753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3982:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3752,"name":"RecoveryModeStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"3957:24:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":3754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3957:30:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3755,"nodeType":"EmitStatement","src":"3952:35:46"}]},"documentation":{"id":3739,"nodeType":"StructuredDocumentation","src":"2906:521:46","text":" @notice Enable recovery mode, which enables a special safe exit path for LPs.\n @dev Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may\n perform certain operations in a \"safer\" manner that is less likely to fail, in an attempt to keep the pool\n running, even in a pathological state. Unlike the Pause operation, which is only available during a short window\n after factory deployment, Recovery Mode can always be enabled."},"functionSelector":"54a844ba","id":3757,"implemented":true,"kind":"function","modifiers":[{"id":3743,"modifierName":{"id":3742,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"3480:12:46","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3480:12:46"}],"name":"enableRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":3741,"nodeType":"OverrideSpecifier","overrides":[],"src":"3471:8:46"},"parameters":{"id":3740,"nodeType":"ParameterList","parameters":[],"src":"3459:2:46"},"returnParameters":{"id":3744,"nodeType":"ParameterList","parameters":[],"src":"3493:0:46"},"scope":3831,"src":"3432:562:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1082],"body":{"id":3775,"nodeType":"Block","src":"4304:449:46","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3764,"name":"_ensureInRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3801,"src":"4642:21:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4642:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3766,"nodeType":"ExpressionStatement","src":"4642:23:46"},{"expression":{"arguments":[{"hexValue":"66616c7365","id":3768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4693:5:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3767,"name":"_setRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"4676:16:46","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":3769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4676:23:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3770,"nodeType":"ExpressionStatement","src":"4676:23:46"},{"eventCall":{"arguments":[{"hexValue":"66616c7365","id":3772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4740:5:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3771,"name":"RecoveryModeStateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1074,"src":"4715:24:46","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bool_$returns$__$","typeString":"function (bool)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4715:31:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3774,"nodeType":"EmitStatement","src":"4710:36:46"}]},"documentation":{"id":3758,"nodeType":"StructuredDocumentation","src":"4000:237:46","text":" @notice Disable recovery mode, which disables the special safe exit path for LPs.\n @dev Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly\n necessary."},"functionSelector":"b7b814fc","id":3776,"implemented":true,"kind":"function","modifiers":[{"id":3762,"modifierName":{"id":3761,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4291:12:46","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4291:12:46"}],"name":"disableRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":3760,"nodeType":"OverrideSpecifier","overrides":[],"src":"4282:8:46"},"parameters":{"id":3759,"nodeType":"ParameterList","parameters":[],"src":"4270:2:46"},"returnParameters":{"id":3763,"nodeType":"ParameterList","parameters":[],"src":"4304:0:46"},"scope":3831,"src":"4242:511:46","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[1088],"documentation":{"id":3777,"nodeType":"StructuredDocumentation","src":"4823:100:46","text":" @notice Override to check storage and return whether the pool is in Recovery Mode"},"functionSelector":"b35056b8","id":3783,"implemented":false,"kind":"function","modifiers":[],"name":"inRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":3779,"nodeType":"OverrideSpecifier","overrides":[],"src":"4974:8:46"},"parameters":{"id":3778,"nodeType":"ParameterList","parameters":[],"src":"4951:2:46"},"returnParameters":{"id":3782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3781,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3783,"src":"4992:4:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3780,"name":"bool","nodeType":"ElementaryTypeName","src":"4992:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4991:6:46"},"scope":3831,"src":"4928:70:46","stateMutability":"view","virtual":true,"visibility":"public"},{"documentation":{"id":3784,"nodeType":"StructuredDocumentation","src":"5004:253:46","text":" @dev Override to update storage and emit the event\n No complex code or external calls that could fail should be placed in the implementations,\n which could jeopardize the ability to enable and disable Recovery Mode."},"id":3789,"implemented":false,"kind":"function","modifiers":[],"name":"_setRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":3787,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3786,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":3789,"src":"5288:12:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3785,"name":"bool","nodeType":"ElementaryTypeName","src":"5288:4:46","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5287:14:46"},"returnParameters":{"id":3788,"nodeType":"ParameterList","parameters":[],"src":"5318:0:46"},"scope":3831,"src":"5262:57:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":3800,"nodeType":"Block","src":"5449:72:46","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3794,"name":"inRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"5468:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":3795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5468:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3796,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5486:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":3797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"NOT_IN_RECOVERY_MODE","nodeType":"MemberAccess","referencedDeclaration":1742,"src":"5486:27:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3793,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"5459:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5459:55:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3799,"nodeType":"ExpressionStatement","src":"5459:55:46"}]},"documentation":{"id":3790,"nodeType":"StructuredDocumentation","src":"5325:72:46","text":" @dev Reverts if the contract is not in Recovery Mode."},"id":3801,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureInRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":3791,"nodeType":"ParameterList","parameters":[],"src":"5432:2:46"},"returnParameters":{"id":3792,"nodeType":"ParameterList","parameters":[],"src":"5449:0:46"},"scope":3831,"src":"5402:119:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3813,"nodeType":"Block","src":"5650:69:46","statements":[{"expression":{"arguments":[{"id":3808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5669:17:46","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3806,"name":"inRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3783,"src":"5670:14:46","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5670:16:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3809,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5688:6:46","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":3810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"IN_RECOVERY_MODE","nodeType":"MemberAccess","referencedDeclaration":1739,"src":"5688:23:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3805,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"5660:8:46","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5660:52:46","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3812,"nodeType":"ExpressionStatement","src":"5660:52:46"}]},"documentation":{"id":3802,"nodeType":"StructuredDocumentation","src":"5527:68:46","text":" @dev Reverts if the contract is in Recovery Mode."},"id":3814,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureNotInRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":3803,"nodeType":"ParameterList","parameters":[],"src":"5633:2:46"},"returnParameters":{"id":3804,"nodeType":"ParameterList","parameters":[],"src":"5650:0:46"},"scope":3831,"src":"5600:119:46","stateMutability":"view","virtual":false,"visibility":"internal"},{"documentation":{"id":3815,"nodeType":"StructuredDocumentation","src":"5725:409:46","text":" @dev A minimal proportional exit, suitable as is for most pools: though not for pools with preminted BPT\n or other special considerations. Designed to be overridden if a pool needs to do extra processing,\n such as scaling a stored invariant, or caching the new total supply.\n No complex code or external calls should be made in derived contracts that override this!"},"id":3830,"implemented":false,"kind":"function","modifiers":[],"name":"_doRecoveryModeExit","nodeType":"FunctionDefinition","parameters":{"id":3823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3818,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":3830,"src":"6177:25:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3816,"name":"uint256","nodeType":"ElementaryTypeName","src":"6177:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3817,"nodeType":"ArrayTypeName","src":"6177:9:46","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":3820,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","scope":3830,"src":"6212:19:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3819,"name":"uint256","nodeType":"ElementaryTypeName","src":"6212:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3822,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":3830,"src":"6241:21:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3821,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:46","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6167:101:46"},"returnParameters":{"id":3829,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3825,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3830,"src":"6295:7:46","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3824,"name":"uint256","nodeType":"ElementaryTypeName","src":"6295:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3828,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3830,"src":"6304:16:46","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3826,"name":"uint256","nodeType":"ElementaryTypeName","src":"6304:7:46","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3827,"nodeType":"ArrayTypeName","src":"6304:9:46","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6294:27:46"},"scope":3831,"src":"6139:183:46","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3832,"src":"2590:3734:46"}],"src":"688:5637:46"},"id":46},"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol","exportedSymbols":{"BasePoolFactory":[3971]},"id":3972,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3833,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:47"},{"id":3834,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:47"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":3835,"nodeType":"ImportDirective","scope":3972,"sourceUnit":3618,"src":"747:65:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","id":3836,"nodeType":"ImportDirective","scope":3972,"sourceUnit":2390,"src":"813:101:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","id":3837,"nodeType":"ImportDirective","scope":3972,"sourceUnit":1046,"src":"915:80:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol","id":3838,"nodeType":"ImportDirective","scope":3972,"sourceUnit":4271,"src":"996:85:47","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":3839,"nodeType":"ImportDirective","scope":3972,"sourceUnit":4891,"src":"1082:88:47","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3841,"name":"IBasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":1045,"src":"1989:16:47","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"}},"id":3842,"nodeType":"InheritanceSpecifier","src":"1989:16:47"},{"baseName":{"id":3843,"name":"BaseSplitCodeFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":4270,"src":"2007:20:47","typeDescriptions":{"typeIdentifier":"t_contract$_BaseSplitCodeFactory_$4270","typeString":"contract BaseSplitCodeFactory"}},"id":3844,"nodeType":"InheritanceSpecifier","src":"2007:20:47"},{"baseName":{"id":3845,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4890,"src":"2029:23:47","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}},"id":3846,"nodeType":"InheritanceSpecifier","src":"2029:23:47"}],"contractDependencies":[1045,1880,4048,4270,4890],"contractKind":"contract","documentation":{"id":3840,"nodeType":"StructuredDocumentation","src":"1172:779:47","text":" @notice Base contract for Pool factories.\n Pools are deployed from factories to allow third parties to reason about them. Unknown Pools may have arbitrary\n logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by\n the factory) is very powerful.\n @dev By using the split code mechanism, we can deploy Pools with creation code so large that a regular factory\n contract would not be able to store it.\n Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will\n become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently\n prevent the creation of any future pools from the factory."},"fullyImplemented":true,"id":3971,"linearizedBaseContracts":[3971,4890,4048,4270,1045,1880],"name":"BasePoolFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3848,"mutability":"immutable","name":"_protocolFeeProvider","nodeType":"VariableDeclaration","scope":3971,"src":"2059:70:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":3847,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2376,"src":"2059:31:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"private"},{"constant":false,"id":3852,"mutability":"mutable","name":"_isPoolFromFactory","nodeType":"VariableDeclaration","scope":3971,"src":"2136:51:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":3851,"keyType":{"id":3849,"name":"address","nodeType":"ElementaryTypeName","src":"2144:7:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2136:24:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":3850,"name":"bool","nodeType":"ElementaryTypeName","src":"2155:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"constant":false,"id":3854,"mutability":"mutable","name":"_disabled","nodeType":"VariableDeclaration","scope":3971,"src":"2193:22:47","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3853,"name":"bool","nodeType":"ElementaryTypeName","src":"2193:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"id":3858,"name":"PoolCreated","nodeType":"EventDefinition","parameters":{"id":3857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3856,"indexed":true,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3858,"src":"2240:20:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3855,"name":"address","nodeType":"ElementaryTypeName","src":"2240:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2239:22:47"},"src":"2222:40:47"},{"anonymous":false,"id":3860,"name":"FactoryDisabled","nodeType":"EventDefinition","parameters":{"id":3859,"nodeType":"ParameterList","parameters":[],"src":"2288:2:47"},"src":"2267:24:47"},{"body":{"id":3879,"nodeType":"Block","src":"2499:59:47","statements":[{"expression":{"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3875,"name":"_protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3848,"src":"2509:20:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3876,"name":"protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3864,"src":"2532:19:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"src":"2509:42:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"id":3878,"nodeType":"ExpressionStatement","src":"2509:42:47"}]},"id":3880,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":3869,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3866,"src":"2454:12:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":3870,"modifierName":{"id":3868,"name":"BaseSplitCodeFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4270,"src":"2433:20:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseSplitCodeFactory_$4270_$","typeString":"type(contract BaseSplitCodeFactory)"}},"nodeType":"ModifierInvocation","src":"2433:34:47"},{"arguments":[{"id":3872,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3862,"src":"2492:5:47","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":3873,"modifierName":{"id":3871,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"2468:23:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4890_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"2468:30:47"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3862,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":3880,"src":"2318:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":3861,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"2318:6:47","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":3864,"mutability":"mutable","name":"protocolFeeProvider","nodeType":"VariableDeclaration","scope":3880,"src":"2340:51:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":3863,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2376,"src":"2340:31:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"internal"},{"constant":false,"id":3866,"mutability":"mutable","name":"creationCode","nodeType":"VariableDeclaration","scope":3880,"src":"2401:25:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3865,"name":"bytes","nodeType":"ElementaryTypeName","src":"2401:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2308:124:47"},"returnParameters":{"id":3874,"nodeType":"ParameterList","parameters":[],"src":"2499:0:47"},"scope":3971,"src":"2297:261:47","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1034],"body":{"id":3892,"nodeType":"Block","src":"2643:48:47","statements":[{"expression":{"baseExpression":{"id":3888,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"2660:18:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3890,"indexExpression":{"id":3889,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3882,"src":"2679:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2660:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3887,"id":3891,"nodeType":"Return","src":"2653:31:47"}]},"functionSelector":"6634b753","id":3893,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolFromFactory","nodeType":"FunctionDefinition","overrides":{"id":3884,"nodeType":"OverrideSpecifier","overrides":[],"src":"2619:8:47"},"parameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3882,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3893,"src":"2591:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3881,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2590:14:47"},"returnParameters":{"id":3887,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3886,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3893,"src":"2637:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3885,"name":"bool","nodeType":"ElementaryTypeName","src":"2637:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2636:6:47"},"scope":3971,"src":"2564:127:47","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[1040],"body":{"id":3901,"nodeType":"Block","src":"2755:33:47","statements":[{"expression":{"id":3899,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"2772:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":3898,"id":3900,"nodeType":"Return","src":"2765:16:47"}]},"functionSelector":"6c57f5a9","id":3902,"implemented":true,"kind":"function","modifiers":[],"name":"isDisabled","nodeType":"FunctionDefinition","overrides":{"id":3895,"nodeType":"OverrideSpecifier","overrides":[],"src":"2731:8:47"},"parameters":{"id":3894,"nodeType":"ParameterList","parameters":[],"src":"2716:2:47"},"returnParameters":{"id":3898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3897,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3902,"src":"2749:4:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3896,"name":"bool","nodeType":"ElementaryTypeName","src":"2749:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2748:6:47"},"scope":3971,"src":"2697:91:47","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1044],"body":{"id":3918,"nodeType":"Block","src":"2844:93:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3908,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"2854:14:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2854:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3910,"nodeType":"ExpressionStatement","src":"2854:16:47"},{"expression":{"id":3913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3911,"name":"_disabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"2881:9:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2893:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2881:16:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3914,"nodeType":"ExpressionStatement","src":"2881:16:47"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3915,"name":"FactoryDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3860,"src":"2913:15:47","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2913:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3917,"nodeType":"EmitStatement","src":"2908:22:47"}]},"functionSelector":"2f2770db","id":3919,"implemented":true,"kind":"function","modifiers":[{"id":3906,"modifierName":{"id":3905,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"2831:12:47","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2831:12:47"}],"name":"disable","nodeType":"FunctionDefinition","overrides":{"id":3904,"nodeType":"OverrideSpecifier","overrides":[],"src":"2822:8:47"},"parameters":{"id":3903,"nodeType":"ParameterList","parameters":[],"src":"2810:2:47"},"returnParameters":{"id":3907,"nodeType":"ParameterList","parameters":[],"src":"2844:0:47"},"scope":3971,"src":"2794:143:47","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":3930,"nodeType":"Block","src":"2983:57:47","statements":[{"expression":{"arguments":[{"id":3925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3002:13:47","subExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":3923,"name":"isDisabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3902,"src":"3003:10:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":3924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3003:12:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3926,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3017:6:47","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":3927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DISABLED","nodeType":"MemberAccess","referencedDeclaration":1451,"src":"3017:15:47","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3922,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2993:8:47","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":3928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2993:40:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3929,"nodeType":"ExpressionStatement","src":"2993:40:47"}]},"id":3931,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureEnabled","nodeType":"FunctionDefinition","parameters":{"id":3920,"nodeType":"ParameterList","parameters":[],"src":"2966:2:47"},"returnParameters":{"id":3921,"nodeType":"ParameterList","parameters":[],"src":"2983:0:47"},"scope":3971,"src":"2943:97:47","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3938,"nodeType":"Block","src":"3145:44:47","statements":[{"expression":{"id":3936,"name":"_protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3848,"src":"3162:20:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"functionReturnParameters":3935,"id":3937,"nodeType":"Return","src":"3155:27:47"}]},"functionSelector":"739238d6","id":3939,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeePercentagesProvider","nodeType":"FunctionDefinition","parameters":{"id":3932,"nodeType":"ParameterList","parameters":[],"src":"3088:2:47"},"returnParameters":{"id":3935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3934,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3939,"src":"3112:31:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":3933,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2376,"src":"3112:31:47","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"internal"}],"src":"3111:33:47"},"scope":3971,"src":"3046:143:47","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4229],"body":{"id":3969,"nodeType":"Block","src":"3286:186:47","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3947,"name":"_ensureEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3931,"src":"3296:14:47","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3296:16:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3949,"nodeType":"ExpressionStatement","src":"3296:16:47"},{"assignments":[3951],"declarations":[{"constant":false,"id":3951,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":3969,"src":"3323:12:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3950,"name":"address","nodeType":"ElementaryTypeName","src":"3323:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3956,"initialValue":{"arguments":[{"id":3954,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3941,"src":"3352:15:47","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3952,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"3338:5:47","typeDescriptions":{"typeIdentifier":"t_super$_BasePoolFactory_$3971","typeString":"contract super BasePoolFactory"}},"id":3953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_create","nodeType":"MemberAccess","referencedDeclaration":4229,"src":"3338:13:47","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":3955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3338:30:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3323:45:47"},{"expression":{"id":3961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":3957,"name":"_isPoolFromFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3852,"src":"3379:18:47","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":3959,"indexExpression":{"id":3958,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3951,"src":"3398:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3379:24:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":3960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3406:4:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3379:31:47","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3962,"nodeType":"ExpressionStatement","src":"3379:31:47"},{"eventCall":{"arguments":[{"id":3964,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3951,"src":"3438:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3963,"name":"PoolCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3858,"src":"3426:11:47","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3426:17:47","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3966,"nodeType":"EmitStatement","src":"3421:22:47"},{"expression":{"id":3967,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3951,"src":"3461:4:47","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3946,"id":3968,"nodeType":"Return","src":"3454:11:47"}]},"id":3970,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nodeType":"FunctionDefinition","overrides":{"id":3943,"nodeType":"OverrideSpecifier","overrides":[],"src":"3259:8:47"},"parameters":{"id":3942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3941,"mutability":"mutable","name":"constructorArgs","nodeType":"VariableDeclaration","scope":3970,"src":"3212:28:47","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3940,"name":"bytes","nodeType":"ElementaryTypeName","src":"3212:5:47","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3211:30:47"},"returnParameters":{"id":3946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":3970,"src":"3277:7:47","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3944,"name":"address","nodeType":"ElementaryTypeName","src":"3277:7:47","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3276:9:47"},"scope":3971,"src":"3195:277:47","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":3972,"src":"1952:1522:47"}],"src":"688:2787:47"},"id":47},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","exportedSymbols":{"Authentication":[4048]},"id":4049,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":3973,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:48"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":3974,"nodeType":"ImportDirective","scope":4049,"sourceUnit":1870,"src":"713:90:48","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol","id":3975,"nodeType":"ImportDirective","scope":4049,"sourceUnit":1881,"src":"804:91:48","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3977,"name":"IAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":1880,"src":"1327:15:48","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthentication_$1880","typeString":"contract IAuthentication"}},"id":3978,"nodeType":"InheritanceSpecifier","src":"1327:15:48"}],"contractDependencies":[1880],"contractKind":"contract","documentation":{"id":3976,"nodeType":"StructuredDocumentation","src":"897:393:48","text":" @dev Building block for performing access control on external functions.\n This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied\n to external functions to only make them callable by authorized accounts.\n Derived contracts must implement the `_canPerform` function, which holds the actual access control logic."},"fullyImplemented":false,"id":4048,"linearizedBaseContracts":[4048,1880],"name":"Authentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":3980,"mutability":"immutable","name":"_actionIdDisambiguator","nodeType":"VariableDeclaration","scope":4048,"src":"1349:48:48","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3979,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1349:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3990,"nodeType":"Block","src":"2039:63:48","statements":[{"expression":{"id":3988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3986,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"2049:22:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":3987,"name":"actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3983,"src":"2074:21:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2049:46:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3989,"nodeType":"ExpressionStatement","src":"2049:46:48"}]},"documentation":{"id":3981,"nodeType":"StructuredDocumentation","src":"1404:587:48","text":" @dev The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in\n multi contract systems.\n There are two main uses for it:\n - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers\n unique. The contract's own address is a good option.\n - if the contract belongs to a family that shares action identifiers for the same functions, an identifier\n shared by the entire family (and no other contract) should be used instead."},"id":3991,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":3984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3983,"mutability":"mutable","name":"actionIdDisambiguator","nodeType":"VariableDeclaration","scope":3991,"src":"2008:29:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2008:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2007:31:48"},"returnParameters":{"id":3985,"nodeType":"ParameterList","parameters":[],"src":"2039:0:48"},"scope":4048,"src":"1996:106:48","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3998,"nodeType":"Block","src":"2266:49:48","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3994,"name":"_authenticateCaller","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4021,"src":"2276:19:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$__$","typeString":"function () view"}},"id":3995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:21:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3996,"nodeType":"ExpressionStatement","src":"2276:21:48"},{"id":3997,"nodeType":"PlaceholderStatement","src":"2307:1:48"}]},"documentation":{"id":3992,"nodeType":"StructuredDocumentation","src":"2108:129:48","text":" @dev Reverts unless the caller is allowed to call this function. Should only be applied to external functions."},"id":3999,"name":"authenticate","nodeType":"ModifierDefinition","parameters":{"id":3993,"nodeType":"ParameterList","parameters":[],"src":"2263:2:48"},"src":"2242:73:48","virtual":false,"visibility":"internal"},{"body":{"id":4020,"nodeType":"Block","src":"2465:136:48","statements":[{"assignments":[4004],"declarations":[{"constant":false,"id":4004,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4020,"src":"2475:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4003,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2475:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4009,"initialValue":{"arguments":[{"expression":{"id":4006,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2506:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sig","nodeType":"MemberAccess","src":"2506:7:48","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":4005,"name":"getActionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4038,"src":"2494:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bytes32_$","typeString":"function (bytes4) view returns (bytes32)"}},"id":4008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2494:20:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2475:39:48"},{"expression":{"arguments":[{"arguments":[{"id":4012,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4004,"src":"2545:8:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":4013,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2555:3:48","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2555:10:48","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":4011,"name":"_canPerform","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4047,"src":"2533:11:48","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:33:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4016,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2568:6:48","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":1631,"src":"2568:25:48","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4010,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2524:8:48","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2524:70:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4019,"nodeType":"ExpressionStatement","src":"2524:70:48"}]},"documentation":{"id":4000,"nodeType":"StructuredDocumentation","src":"2321:94:48","text":" @dev Reverts unless the caller is allowed to call the entry point function."},"id":4021,"implemented":true,"kind":"function","modifiers":[],"name":"_authenticateCaller","nodeType":"FunctionDefinition","parameters":{"id":4001,"nodeType":"ParameterList","parameters":[],"src":"2448:2:48"},"returnParameters":{"id":4002,"nodeType":"ParameterList","parameters":[],"src":"2465:0:48"},"scope":4048,"src":"2420:181:48","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[1879],"body":{"id":4037,"nodeType":"Block","src":"2684:353:48","statements":[{"expression":{"arguments":[{"arguments":[{"id":4032,"name":"_actionIdDisambiguator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3980,"src":"2996:22:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4033,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4023,"src":"3020:8:48","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":4030,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2979:3:48","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4031,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2979:16:48","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2979:50:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4029,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2969:9:48","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":4035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2969:61:48","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4028,"id":4036,"nodeType":"Return","src":"2962:68:48"}]},"functionSelector":"851c1bb3","id":4038,"implemented":true,"kind":"function","modifiers":[],"name":"getActionId","nodeType":"FunctionDefinition","overrides":{"id":4025,"nodeType":"OverrideSpecifier","overrides":[],"src":"2657:8:48"},"parameters":{"id":4024,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4023,"mutability":"mutable","name":"selector","nodeType":"VariableDeclaration","scope":4038,"src":"2628:15:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":4022,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2628:6:48","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2627:17:48"},"returnParameters":{"id":4028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4027,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4038,"src":"2675:7:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4026,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2675:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2674:9:48"},"scope":4048,"src":"2607:430:48","stateMutability":"view","virtual":false,"visibility":"public"},{"id":4047,"implemented":false,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":4043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4040,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4047,"src":"3064:16:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4039,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3064:7:48","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4042,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":4047,"src":"3082:12:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4041,"name":"address","nodeType":"ElementaryTypeName","src":"3082:7:48","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3063:32:48"},"returnParameters":{"id":4046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4045,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4047,"src":"3127:4:48","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4044,"name":"bool","nodeType":"ElementaryTypeName","src":"3127:4:48","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3126:6:48"},"scope":4048,"src":"3043:90:48","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":4049,"src":"1291:1844:48"}],"src":"688:2448:48"},"id":48},"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol","exportedSymbols":{"BaseSplitCodeFactory":[4270]},"id":4271,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4050,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:49"},{"id":4051,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:49"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol","file":"./CodeDeployer.sol","id":4052,"nodeType":"ImportDirective","scope":4271,"sourceUnit":4304,"src":"747:28:49","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":4053,"nodeType":"StructuredDocumentation","src":"777:294:49","text":" @dev Base factory for contracts whose creation code is so large that the factory cannot hold it. This happens when\n the contract's creation code grows close to 24kB.\n Note that this factory cannot help with contracts that have a *runtime* (deployed) bytecode larger than 24kB."},"fullyImplemented":true,"id":4270,"linearizedBaseContracts":[4270],"name":"BaseSplitCodeFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4055,"mutability":"immutable","name":"_creationCodeContractA","nodeType":"VariableDeclaration","scope":4270,"src":"1529:48:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4054,"name":"address","nodeType":"ElementaryTypeName","src":"1529:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":4057,"mutability":"immutable","name":"_creationCodeSizeA","nodeType":"VariableDeclaration","scope":4270,"src":"1583:44:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4056,"name":"uint256","nodeType":"ElementaryTypeName","src":"1583:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":4059,"mutability":"immutable","name":"_creationCodeContractB","nodeType":"VariableDeclaration","scope":4270,"src":"1634:48:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4058,"name":"address","nodeType":"ElementaryTypeName","src":"1634:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":4061,"mutability":"immutable","name":"_creationCodeSizeB","nodeType":"VariableDeclaration","scope":4270,"src":"1688:44:49","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4060,"name":"uint256","nodeType":"ElementaryTypeName","src":"1688:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":4118,"nodeType":"Block","src":"1905:2624:49","statements":[{"assignments":[4068],"declarations":[{"constant":false,"id":4068,"mutability":"mutable","name":"creationCodeSize","nodeType":"VariableDeclaration","scope":4118,"src":"1915:24:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4067,"name":"uint256","nodeType":"ElementaryTypeName","src":"1915:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4071,"initialValue":{"expression":{"id":4069,"name":"creationCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4064,"src":"1942:12:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1942:19:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1915:46:49"},{"assignments":[4073],"declarations":[{"constant":false,"id":4073,"mutability":"mutable","name":"creationCodeSizeA","nodeType":"VariableDeclaration","scope":4118,"src":"2289:25:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4072,"name":"uint256","nodeType":"ElementaryTypeName","src":"2289:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4077,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4074,"name":"creationCodeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4068,"src":"2317:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":4075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2336:1:49","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2317:20:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2289:48:49"},{"expression":{"id":4080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4078,"name":"_creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4057,"src":"2347:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4079,"name":"creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4073,"src":"2368:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2347:38:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4081,"nodeType":"ExpressionStatement","src":"2347:38:49"},{"assignments":[4083],"declarations":[{"constant":false,"id":4083,"mutability":"mutable","name":"creationCodeSizeB","nodeType":"VariableDeclaration","scope":4118,"src":"2396:25:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4082,"name":"uint256","nodeType":"ElementaryTypeName","src":"2396:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4087,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4084,"name":"creationCodeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4068,"src":"2424:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4085,"name":"creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4073,"src":"2443:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2424:36:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2396:64:49"},{"expression":{"id":4090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4088,"name":"_creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"2470:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4089,"name":"creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4083,"src":"2491:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2470:38:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4091,"nodeType":"ExpressionStatement","src":"2470:38:49"},{"assignments":[4093],"declarations":[{"constant":false,"id":4093,"mutability":"mutable","name":"creationCodeA","nodeType":"VariableDeclaration","scope":4118,"src":"3071:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4092,"name":"bytes","nodeType":"ElementaryTypeName","src":"3071:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4094,"nodeType":"VariableDeclarationStatement","src":"3071:26:49"},{"AST":{"nodeType":"YulBlock","src":"3116:106:49","statements":[{"nodeType":"YulAssignment","src":"3130:29:49","value":{"name":"creationCode","nodeType":"YulIdentifier","src":"3147:12:49"},"variableNames":[{"name":"creationCodeA","nodeType":"YulIdentifier","src":"3130:13:49"}]},{"expression":{"arguments":[{"name":"creationCodeA","nodeType":"YulIdentifier","src":"3179:13:49"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"3194:17:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3172:6:49"},"nodeType":"YulFunctionCall","src":"3172:40:49"},"nodeType":"YulExpressionStatement","src":"3172:40:49"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4064,"isOffset":false,"isSlot":false,"src":"3147:12:49","valueSize":1},{"declaration":4093,"isOffset":false,"isSlot":false,"src":"3130:13:49","valueSize":1},{"declaration":4093,"isOffset":false,"isSlot":false,"src":"3179:13:49","valueSize":1},{"declaration":4073,"isOffset":false,"isSlot":false,"src":"3194:17:49","valueSize":1}],"id":4095,"nodeType":"InlineAssembly","src":"3107:115:49"},{"expression":{"id":4101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4096,"name":"_creationCodeContractA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"3322:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4099,"name":"creationCodeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"3367:13:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4097,"name":"CodeDeployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"3347:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CodeDeployer_$4303_$","typeString":"type(library CodeDeployer)"}},"id":4098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":4302,"src":"3347:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":4100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3347:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3322:59:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4102,"nodeType":"ExpressionStatement","src":"3322:59:49"},{"assignments":[4104],"declarations":[{"constant":false,"id":4104,"mutability":"mutable","name":"creationCodeB","nodeType":"VariableDeclaration","scope":4118,"src":"3669:26:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4103,"name":"bytes","nodeType":"ElementaryTypeName","src":"3669:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4105,"nodeType":"VariableDeclarationStatement","src":"3669:26:49"},{"assignments":[4107],"declarations":[{"constant":false,"id":4107,"mutability":"mutable","name":"lastByteA","nodeType":"VariableDeclaration","scope":4118,"src":"3705:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4106,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3705:7:49","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4108,"nodeType":"VariableDeclarationStatement","src":"3705:17:49"},{"AST":{"nodeType":"YulBlock","src":"3742:323:49","statements":[{"nodeType":"YulAssignment","src":"3903:53:49","value":{"arguments":[{"name":"creationCode","nodeType":"YulIdentifier","src":"3924:12:49"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"3938:17:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3920:3:49"},"nodeType":"YulFunctionCall","src":"3920:36:49"},"variableNames":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"3903:13:49"}]},{"nodeType":"YulAssignment","src":"3969:33:49","value":{"arguments":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"3988:13:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3982:5:49"},"nodeType":"YulFunctionCall","src":"3982:20:49"},"variableNames":[{"name":"lastByteA","nodeType":"YulIdentifier","src":"3969:9:49"}]},{"expression":{"arguments":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"4022:13:49"},{"name":"creationCodeSizeB","nodeType":"YulIdentifier","src":"4037:17:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4015:6:49"},"nodeType":"YulFunctionCall","src":"4015:40:49"},"nodeType":"YulExpressionStatement","src":"4015:40:49"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4064,"isOffset":false,"isSlot":false,"src":"3924:12:49","valueSize":1},{"declaration":4104,"isOffset":false,"isSlot":false,"src":"3903:13:49","valueSize":1},{"declaration":4104,"isOffset":false,"isSlot":false,"src":"3988:13:49","valueSize":1},{"declaration":4104,"isOffset":false,"isSlot":false,"src":"4022:13:49","valueSize":1},{"declaration":4073,"isOffset":false,"isSlot":false,"src":"3938:17:49","valueSize":1},{"declaration":4083,"isOffset":false,"isSlot":false,"src":"4037:17:49","valueSize":1},{"declaration":4107,"isOffset":false,"isSlot":false,"src":"3969:9:49","valueSize":1}],"id":4109,"nodeType":"InlineAssembly","src":"3733:332:49"},{"expression":{"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4110,"name":"_creationCodeContractB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"4215:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":4113,"name":"creationCodeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4104,"src":"4260:13:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":4111,"name":"CodeDeployer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4303,"src":"4240:12:49","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CodeDeployer_$4303_$","typeString":"type(library CodeDeployer)"}},"id":4112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deploy","nodeType":"MemberAccess","referencedDeclaration":4302,"src":"4240:19:49","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":4114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4240:34:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4215:59:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4116,"nodeType":"ExpressionStatement","src":"4215:59:49"},{"AST":{"nodeType":"YulBlock","src":"4415:108:49","statements":[{"expression":{"arguments":[{"name":"creationCodeA","nodeType":"YulIdentifier","src":"4436:13:49"},{"name":"creationCodeSize","nodeType":"YulIdentifier","src":"4451:16:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4429:6:49"},"nodeType":"YulFunctionCall","src":"4429:39:49"},"nodeType":"YulExpressionStatement","src":"4429:39:49"},{"expression":{"arguments":[{"name":"creationCodeB","nodeType":"YulIdentifier","src":"4488:13:49"},{"name":"lastByteA","nodeType":"YulIdentifier","src":"4503:9:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4481:6:49"},"nodeType":"YulFunctionCall","src":"4481:32:49"},"nodeType":"YulExpressionStatement","src":"4481:32:49"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4093,"isOffset":false,"isSlot":false,"src":"4436:13:49","valueSize":1},{"declaration":4104,"isOffset":false,"isSlot":false,"src":"4488:13:49","valueSize":1},{"declaration":4068,"isOffset":false,"isSlot":false,"src":"4451:16:49","valueSize":1},{"declaration":4107,"isOffset":false,"isSlot":false,"src":"4503:9:49","valueSize":1}],"id":4117,"nodeType":"InlineAssembly","src":"4406:117:49"}]},"documentation":{"id":4062,"nodeType":"StructuredDocumentation","src":"1739:122:49","text":" @dev The creation code of a contract Foo can be obtained inside Solidity with `type(Foo).creationCode`."},"id":4119,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4064,"mutability":"mutable","name":"creationCode","nodeType":"VariableDeclaration","scope":4119,"src":"1878:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4063,"name":"bytes","nodeType":"ElementaryTypeName","src":"1878:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1877:27:49"},"returnParameters":{"id":4066,"nodeType":"ParameterList","parameters":[],"src":"1905:0:49"},"scope":4270,"src":"1866:2663:49","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4131,"nodeType":"Block","src":"4758:72:49","statements":[{"expression":{"components":[{"id":4127,"name":"_creationCodeContractA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"4776:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4128,"name":"_creationCodeContractB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"4800:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":4129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4775:48:49","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"functionReturnParameters":4126,"id":4130,"nodeType":"Return","src":"4768:55:49"}]},"documentation":{"id":4120,"nodeType":"StructuredDocumentation","src":"4535:123:49","text":" @dev Returns the two addresses where the creation code of the contract crated by this factory is stored."},"functionSelector":"174481fa","id":4132,"implemented":true,"kind":"function","modifiers":[],"name":"getCreationCodeContracts","nodeType":"FunctionDefinition","parameters":{"id":4121,"nodeType":"ParameterList","parameters":[],"src":"4696:2:49"},"returnParameters":{"id":4126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4123,"mutability":"mutable","name":"contractA","nodeType":"VariableDeclaration","scope":4132,"src":"4720:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4122,"name":"address","nodeType":"ElementaryTypeName","src":"4720:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4125,"mutability":"mutable","name":"contractB","nodeType":"VariableDeclaration","scope":4132,"src":"4739:17:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4124,"name":"address","nodeType":"ElementaryTypeName","src":"4739:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4719:38:49"},"scope":4270,"src":"4663:167:49","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4142,"nodeType":"Block","src":"4990:52:49","statements":[{"expression":{"arguments":[{"hexValue":"","id":4139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5032:2:49","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":4138,"name":"_getCreationCodeWithArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"5007:24:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bytes memory)"}},"id":4140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5007:28:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4137,"id":4141,"nodeType":"Return","src":"5000:35:49"}]},"documentation":{"id":4133,"nodeType":"StructuredDocumentation","src":"4836:87:49","text":" @dev Returns the creation code of the contract this factory creates."},"functionSelector":"00c194db","id":4143,"implemented":true,"kind":"function","modifiers":[],"name":"getCreationCode","nodeType":"FunctionDefinition","parameters":{"id":4134,"nodeType":"ParameterList","parameters":[],"src":"4952:2:49"},"returnParameters":{"id":4137,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4136,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4143,"src":"4976:12:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4135,"name":"bytes","nodeType":"ElementaryTypeName","src":"4976:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4975:14:49"},"scope":4270,"src":"4928:114:49","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4198,"nodeType":"Block","src":"5277:2587:49","statements":[{"assignments":[4152],"declarations":[{"constant":false,"id":4152,"mutability":"mutable","name":"creationCodeContractA","nodeType":"VariableDeclaration","scope":4198,"src":"6088:29:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4151,"name":"address","nodeType":"ElementaryTypeName","src":"6088:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4154,"initialValue":{"id":4153,"name":"_creationCodeContractA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"6120:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6088:54:49"},{"assignments":[4156],"declarations":[{"constant":false,"id":4156,"mutability":"mutable","name":"creationCodeSizeA","nodeType":"VariableDeclaration","scope":4198,"src":"6152:25:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4155,"name":"uint256","nodeType":"ElementaryTypeName","src":"6152:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4158,"initialValue":{"id":4157,"name":"_creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4057,"src":"6180:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6152:46:49"},{"assignments":[4160],"declarations":[{"constant":false,"id":4160,"mutability":"mutable","name":"creationCodeContractB","nodeType":"VariableDeclaration","scope":4198,"src":"6208:29:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4159,"name":"address","nodeType":"ElementaryTypeName","src":"6208:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4162,"initialValue":{"id":4161,"name":"_creationCodeContractB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"6240:22:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6208:54:49"},{"assignments":[4164],"declarations":[{"constant":false,"id":4164,"mutability":"mutable","name":"creationCodeSizeB","nodeType":"VariableDeclaration","scope":4198,"src":"6272:25:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4163,"name":"uint256","nodeType":"ElementaryTypeName","src":"6272:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4166,"initialValue":{"id":4165,"name":"_creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"6300:18:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6272:46:49"},{"assignments":[4168],"declarations":[{"constant":false,"id":4168,"mutability":"mutable","name":"creationCodeSize","nodeType":"VariableDeclaration","scope":4198,"src":"6329:24:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4167,"name":"uint256","nodeType":"ElementaryTypeName","src":"6329:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4172,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4169,"name":"creationCodeSizeA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4156,"src":"6356:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4170,"name":"creationCodeSizeB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4164,"src":"6376:17:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6356:37:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6329:64:49"},{"assignments":[4174],"declarations":[{"constant":false,"id":4174,"mutability":"mutable","name":"constructorArgsSize","nodeType":"VariableDeclaration","scope":4198,"src":"6403:27:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4173,"name":"uint256","nodeType":"ElementaryTypeName","src":"6403:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4177,"initialValue":{"expression":{"id":4175,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4146,"src":"6433:15:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6433:22:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6403:52:49"},{"assignments":[4179],"declarations":[{"constant":false,"id":4179,"mutability":"mutable","name":"codeSize","nodeType":"VariableDeclaration","scope":4198,"src":"6466:16:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4178,"name":"uint256","nodeType":"ElementaryTypeName","src":"6466:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4183,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4180,"name":"creationCodeSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4168,"src":"6485:16:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4181,"name":"constructorArgsSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"6504:19:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6485:38:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6466:57:49"},{"AST":{"nodeType":"YulBlock","src":"6543:750:49","statements":[{"nodeType":"YulAssignment","src":"6793:19:49","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6807:4:49","type":"","value":"0x40"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6801:5:49"},"nodeType":"YulFunctionCall","src":"6801:11:49"},"variableNames":[{"name":"code","nodeType":"YulIdentifier","src":"6793:4:49"}]},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"6832:4:49","type":"","value":"0x40"},{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"6842:4:49"},{"arguments":[{"name":"codeSize","nodeType":"YulIdentifier","src":"6852:8:49"},{"kind":"number","nodeType":"YulLiteral","src":"6862:2:49","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6848:3:49"},"nodeType":"YulFunctionCall","src":"6848:17:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6838:3:49"},"nodeType":"YulFunctionCall","src":"6838:28:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6825:6:49"},"nodeType":"YulFunctionCall","src":"6825:42:49"},"nodeType":"YulExpressionStatement","src":"6825:42:49"},{"expression":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"6967:4:49"},{"name":"codeSize","nodeType":"YulIdentifier","src":"6973:8:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6960:6:49"},"nodeType":"YulFunctionCall","src":"6960:22:49"},"nodeType":"YulExpressionStatement","src":"6960:22:49"},{"nodeType":"YulVariableDeclaration","src":"7069:30:49","value":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"7090:4:49"},{"kind":"number","nodeType":"YulLiteral","src":"7096:2:49","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7086:3:49"},"nodeType":"YulFunctionCall","src":"7086:13:49"},"variables":[{"name":"dataStart","nodeType":"YulTypedName","src":"7073:9:49","type":""}]},{"expression":{"arguments":[{"name":"creationCodeContractA","nodeType":"YulIdentifier","src":"7124:21:49"},{"name":"dataStart","nodeType":"YulIdentifier","src":"7147:9:49"},{"kind":"number","nodeType":"YulLiteral","src":"7158:1:49","type":"","value":"0"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"7161:17:49"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"7112:11:49"},"nodeType":"YulFunctionCall","src":"7112:67:49"},"nodeType":"YulExpressionStatement","src":"7112:67:49"},{"expression":{"arguments":[{"name":"creationCodeContractB","nodeType":"YulIdentifier","src":"7204:21:49"},{"arguments":[{"name":"dataStart","nodeType":"YulIdentifier","src":"7231:9:49"},{"name":"creationCodeSizeA","nodeType":"YulIdentifier","src":"7242:17:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7227:3:49"},"nodeType":"YulFunctionCall","src":"7227:33:49"},{"kind":"number","nodeType":"YulLiteral","src":"7262:1:49","type":"","value":"0"},{"name":"creationCodeSizeB","nodeType":"YulIdentifier","src":"7265:17:49"}],"functionName":{"name":"extcodecopy","nodeType":"YulIdentifier","src":"7192:11:49"},"nodeType":"YulFunctionCall","src":"7192:91:49"},"nodeType":"YulExpressionStatement","src":"7192:91:49"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4149,"isOffset":false,"isSlot":false,"src":"6793:4:49","valueSize":1},{"declaration":4149,"isOffset":false,"isSlot":false,"src":"6842:4:49","valueSize":1},{"declaration":4149,"isOffset":false,"isSlot":false,"src":"6967:4:49","valueSize":1},{"declaration":4149,"isOffset":false,"isSlot":false,"src":"7090:4:49","valueSize":1},{"declaration":4179,"isOffset":false,"isSlot":false,"src":"6852:8:49","valueSize":1},{"declaration":4179,"isOffset":false,"isSlot":false,"src":"6973:8:49","valueSize":1},{"declaration":4152,"isOffset":false,"isSlot":false,"src":"7124:21:49","valueSize":1},{"declaration":4160,"isOffset":false,"isSlot":false,"src":"7204:21:49","valueSize":1},{"declaration":4156,"isOffset":false,"isSlot":false,"src":"7161:17:49","valueSize":1},{"declaration":4156,"isOffset":false,"isSlot":false,"src":"7242:17:49","valueSize":1},{"declaration":4164,"isOffset":false,"isSlot":false,"src":"7265:17:49","valueSize":1}],"id":4184,"nodeType":"InlineAssembly","src":"6534:759:49"},{"assignments":[4186],"declarations":[{"constant":false,"id":4186,"mutability":"mutable","name":"constructorArgsDataPtr","nodeType":"VariableDeclaration","scope":4198,"src":"7521:30:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4185,"name":"uint256","nodeType":"ElementaryTypeName","src":"7521:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4187,"nodeType":"VariableDeclarationStatement","src":"7521:30:49"},{"assignments":[4189],"declarations":[{"constant":false,"id":4189,"mutability":"mutable","name":"constructorArgsCodeDataPtr","nodeType":"VariableDeclaration","scope":4198,"src":"7561:34:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4188,"name":"uint256","nodeType":"ElementaryTypeName","src":"7561:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4190,"nodeType":"VariableDeclarationStatement","src":"7561:34:49"},{"AST":{"nodeType":"YulBlock","src":"7614:153:49","statements":[{"nodeType":"YulAssignment","src":"7628:50:49","value":{"arguments":[{"name":"constructorArgs","nodeType":"YulIdentifier","src":"7658:15:49"},{"kind":"number","nodeType":"YulLiteral","src":"7675:2:49","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7654:3:49"},"nodeType":"YulFunctionCall","src":"7654:24:49"},"variableNames":[{"name":"constructorArgsDataPtr","nodeType":"YulIdentifier","src":"7628:22:49"}]},{"nodeType":"YulAssignment","src":"7691:66:49","value":{"arguments":[{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"7729:4:49"},{"kind":"number","nodeType":"YulLiteral","src":"7735:2:49","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7725:3:49"},"nodeType":"YulFunctionCall","src":"7725:13:49"},{"name":"creationCodeSize","nodeType":"YulIdentifier","src":"7740:16:49"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7721:3:49"},"nodeType":"YulFunctionCall","src":"7721:36:49"},"variableNames":[{"name":"constructorArgsCodeDataPtr","nodeType":"YulIdentifier","src":"7691:26:49"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4149,"isOffset":false,"isSlot":false,"src":"7729:4:49","valueSize":1},{"declaration":4146,"isOffset":false,"isSlot":false,"src":"7658:15:49","valueSize":1},{"declaration":4189,"isOffset":false,"isSlot":false,"src":"7691:26:49","valueSize":1},{"declaration":4186,"isOffset":false,"isSlot":false,"src":"7628:22:49","valueSize":1},{"declaration":4168,"isOffset":false,"isSlot":false,"src":"7740:16:49","valueSize":1}],"id":4191,"nodeType":"InlineAssembly","src":"7605:162:49"},{"expression":{"arguments":[{"id":4193,"name":"constructorArgsCodeDataPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4189,"src":"7785:26:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4194,"name":"constructorArgsDataPtr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"7813:22:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4195,"name":"constructorArgsSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"7837:19:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4192,"name":"_memcpy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4269,"src":"7777:7:49","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256) pure"}},"id":4196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7777:80:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4197,"nodeType":"ExpressionStatement","src":"7777:80:49"}]},"documentation":{"id":4144,"nodeType":"StructuredDocumentation","src":"5048:119:49","text":" @dev Returns the creation code that will result in a contract being deployed with `constructorArgs`."},"id":4199,"implemented":true,"kind":"function","modifiers":[],"name":"_getCreationCodeWithArgs","nodeType":"FunctionDefinition","parameters":{"id":4147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4146,"mutability":"mutable","name":"constructorArgs","nodeType":"VariableDeclaration","scope":4199,"src":"5206:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4145,"name":"bytes","nodeType":"ElementaryTypeName","src":"5206:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5205:30:49"},"returnParameters":{"id":4150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4149,"mutability":"mutable","name":"code","nodeType":"VariableDeclaration","scope":4199,"src":"5258:17:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4148,"name":"bytes","nodeType":"ElementaryTypeName","src":"5258:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5257:19:49"},"scope":4270,"src":"5172:2692:49","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4228,"nodeType":"Block","src":"8136:548:49","statements":[{"assignments":[4208],"declarations":[{"constant":false,"id":4208,"mutability":"mutable","name":"creationCode","nodeType":"VariableDeclaration","scope":4228,"src":"8146:25:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4207,"name":"bytes","nodeType":"ElementaryTypeName","src":"8146:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4212,"initialValue":{"arguments":[{"id":4210,"name":"constructorArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4202,"src":"8199:15:49","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4209,"name":"_getCreationCodeWithArgs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4199,"src":"8174:24:49","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bytes memory)"}},"id":4211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8174:41:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"8146:69:49"},{"assignments":[4214],"declarations":[{"constant":false,"id":4214,"mutability":"mutable","name":"destination","nodeType":"VariableDeclaration","scope":4228,"src":"8226:19:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4213,"name":"address","nodeType":"ElementaryTypeName","src":"8226:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4215,"nodeType":"VariableDeclarationStatement","src":"8226:19:49"},{"AST":{"nodeType":"YulBlock","src":"8264:92:49","statements":[{"nodeType":"YulAssignment","src":"8278:68:49","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8300:1:49","type":"","value":"0"},{"arguments":[{"name":"creationCode","nodeType":"YulIdentifier","src":"8307:12:49"},{"kind":"number","nodeType":"YulLiteral","src":"8321:2:49","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8303:3:49"},"nodeType":"YulFunctionCall","src":"8303:21:49"},{"arguments":[{"name":"creationCode","nodeType":"YulIdentifier","src":"8332:12:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8326:5:49"},"nodeType":"YulFunctionCall","src":"8326:19:49"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"8293:6:49"},"nodeType":"YulFunctionCall","src":"8293:53:49"},"variableNames":[{"name":"destination","nodeType":"YulIdentifier","src":"8278:11:49"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4208,"isOffset":false,"isSlot":false,"src":"8307:12:49","valueSize":1},{"declaration":4208,"isOffset":false,"isSlot":false,"src":"8332:12:49","valueSize":1},{"declaration":4214,"isOffset":false,"isSlot":false,"src":"8278:11:49","valueSize":1}],"id":4216,"nodeType":"InlineAssembly","src":"8255:101:49"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4217,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"8370:11:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":4220,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8393:1:49","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8385:7:49","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4218,"name":"address","nodeType":"ElementaryTypeName","src":"8385:7:49","typeDescriptions":{}}},"id":4221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8385:10:49","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"8370:25:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4225,"nodeType":"IfStatement","src":"8366:283:49","trueBody":{"id":4224,"nodeType":"Block","src":"8397:252:49","statements":[{"AST":{"nodeType":"YulBlock","src":"8525:114:49","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8558:1:49","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"8561:1:49","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"8564:14:49"},"nodeType":"YulFunctionCall","src":"8564:16:49"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"8543:14:49"},"nodeType":"YulFunctionCall","src":"8543:38:49"},"nodeType":"YulExpressionStatement","src":"8543:38:49"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"8605:1:49","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"8608:14:49"},"nodeType":"YulFunctionCall","src":"8608:16:49"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"8598:6:49"},"nodeType":"YulFunctionCall","src":"8598:27:49"},"nodeType":"YulExpressionStatement","src":"8598:27:49"}]},"evmVersion":"istanbul","externalReferences":[],"id":4223,"nodeType":"InlineAssembly","src":"8516:123:49"}]}},{"expression":{"id":4226,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4214,"src":"8666:11:49","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":4206,"id":4227,"nodeType":"Return","src":"8659:18:49"}]},"documentation":{"id":4200,"nodeType":"StructuredDocumentation","src":"7870:179:49","text":" @dev Deploys a contract with constructor arguments. To create `constructorArgs`, call `abi.encode()` with the\n contract's constructor arguments, in order."},"id":4229,"implemented":true,"kind":"function","modifiers":[],"name":"_create","nodeType":"FunctionDefinition","parameters":{"id":4203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4202,"mutability":"mutable","name":"constructorArgs","nodeType":"VariableDeclaration","scope":4229,"src":"8071:28:49","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4201,"name":"bytes","nodeType":"ElementaryTypeName","src":"8071:5:49","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8070:30:49"},"returnParameters":{"id":4206,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4205,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4229,"src":"8127:7:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4204,"name":"address","nodeType":"ElementaryTypeName","src":"8127:7:49","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8126:9:49"},"scope":4270,"src":"8054:630:49","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":4268,"nodeType":"Block","src":"8920:490:49","statements":[{"body":{"id":4254,"nodeType":"Block","src":"9009:136:49","statements":[{"AST":{"nodeType":"YulBlock","src":"9032:56:49","statements":[{"expression":{"arguments":[{"name":"dest","nodeType":"YulIdentifier","src":"9057:4:49"},{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9069:3:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9063:5:49"},"nodeType":"YulFunctionCall","src":"9063:10:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9050:6:49"},"nodeType":"YulFunctionCall","src":"9050:24:49"},"nodeType":"YulExpressionStatement","src":"9050:24:49"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4231,"isOffset":false,"isSlot":false,"src":"9057:4:49","valueSize":1},{"declaration":4233,"isOffset":false,"isSlot":false,"src":"9069:3:49","valueSize":1}],"id":4245,"nodeType":"InlineAssembly","src":"9023:65:49"},{"expression":{"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4246,"name":"dest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4231,"src":"9101:4:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9109:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9101:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4249,"nodeType":"ExpressionStatement","src":"9101:10:49"},{"expression":{"id":4252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4250,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4233,"src":"9125:3:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9132:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"9125:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4253,"nodeType":"ExpressionStatement","src":"9125:9:49"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4238,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"8987:3:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"3332","id":4239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8994:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8987:9:49","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4255,"loopExpression":{"expression":{"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4241,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"8998:3:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3332","id":4242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9005:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8998:9:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4244,"nodeType":"ExpressionStatement","src":"8998:9:49"},"nodeType":"ForStatement","src":"8980:165:49"},{"assignments":[4257],"declarations":[{"constant":false,"id":4257,"mutability":"mutable","name":"mask","nodeType":"VariableDeclaration","scope":4268,"src":"9187:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4256,"name":"uint256","nodeType":"ElementaryTypeName","src":"9187:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4266,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":4258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9202:3:49","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3332","id":4259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9208:2:49","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4260,"name":"len","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4235,"src":"9213:3:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9208:8:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4262,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9207:10:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9202:15:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9220:1:49","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9202:19:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9187:34:49"},{"AST":{"nodeType":"YulBlock","src":"9240:164:49","statements":[{"nodeType":"YulVariableDeclaration","src":"9254:41:49","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"9279:3:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9273:5:49"},"nodeType":"YulFunctionCall","src":"9273:10:49"},{"arguments":[{"name":"mask","nodeType":"YulIdentifier","src":"9289:4:49"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"9285:3:49"},"nodeType":"YulFunctionCall","src":"9285:9:49"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9269:3:49"},"nodeType":"YulFunctionCall","src":"9269:26:49"},"variables":[{"name":"srcpart","nodeType":"YulTypedName","src":"9258:7:49","type":""}]},{"nodeType":"YulVariableDeclaration","src":"9308:38:49","value":{"arguments":[{"arguments":[{"name":"dest","nodeType":"YulIdentifier","src":"9334:4:49"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9328:5:49"},"nodeType":"YulFunctionCall","src":"9328:11:49"},{"name":"mask","nodeType":"YulIdentifier","src":"9341:4:49"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"9324:3:49"},"nodeType":"YulFunctionCall","src":"9324:22:49"},"variables":[{"name":"destpart","nodeType":"YulTypedName","src":"9312:8:49","type":""}]},{"expression":{"arguments":[{"name":"dest","nodeType":"YulIdentifier","src":"9366:4:49"},{"arguments":[{"name":"destpart","nodeType":"YulIdentifier","src":"9375:8:49"},{"name":"srcpart","nodeType":"YulIdentifier","src":"9385:7:49"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"9372:2:49"},"nodeType":"YulFunctionCall","src":"9372:21:49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9359:6:49"},"nodeType":"YulFunctionCall","src":"9359:35:49"},"nodeType":"YulExpressionStatement","src":"9359:35:49"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4231,"isOffset":false,"isSlot":false,"src":"9334:4:49","valueSize":1},{"declaration":4231,"isOffset":false,"isSlot":false,"src":"9366:4:49","valueSize":1},{"declaration":4257,"isOffset":false,"isSlot":false,"src":"9289:4:49","valueSize":1},{"declaration":4257,"isOffset":false,"isSlot":false,"src":"9341:4:49","valueSize":1},{"declaration":4233,"isOffset":false,"isSlot":false,"src":"9279:3:49","valueSize":1}],"id":4267,"nodeType":"InlineAssembly","src":"9231:173:49"}]},"id":4269,"implemented":true,"kind":"function","modifiers":[],"name":"_memcpy","nodeType":"FunctionDefinition","parameters":{"id":4236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4231,"mutability":"mutable","name":"dest","nodeType":"VariableDeclaration","scope":4269,"src":"8846:12:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4230,"name":"uint256","nodeType":"ElementaryTypeName","src":"8846:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4233,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":4269,"src":"8868:11:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4232,"name":"uint256","nodeType":"ElementaryTypeName","src":"8868:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4235,"mutability":"mutable","name":"len","nodeType":"VariableDeclaration","scope":4269,"src":"8889:11:49","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4234,"name":"uint256","nodeType":"ElementaryTypeName","src":"8889:7:49","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8836:70:49"},"returnParameters":{"id":4237,"nodeType":"ParameterList","parameters":[],"src":"8920:0:49"},"scope":4270,"src":"8820:590:49","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":4271,"src":"1072:8340:49"}],"src":"688:8725:49"},"id":49},"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol","exportedSymbols":{"CodeDeployer":[4303]},"id":4304,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4272,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:50"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4273,"nodeType":"ImportDirective","scope":4304,"sourceUnit":1870,"src":"713:90:50","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":4274,"nodeType":"StructuredDocumentation","src":"805:199:50","text":" @dev Library used to deploy contracts with specific code. This can be used for long-term storage of immutable data as\n contract code, which can be retrieved via the `extcodecopy` opcode."},"fullyImplemented":true,"id":4303,"linearizedBaseContracts":[4303],"name":"CodeDeployer","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4277,"mutability":"constant","name":"_DEPLOYER_CREATION_CODE","nodeType":"VariableDeclaration","scope":4303,"src":"2455:125:50","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4275,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2455:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307836303230333830333830363032303630303033393630303066336665666566656665666566656665666566656665666566656665666566656665666566656665","id":4276,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2514:66:50","typeDescriptions":{"typeIdentifier":"t_rational_43478959162261259322985507790388014220090819270403161015765007512459448090366_by_1","typeString":"int_const 4347...(69 digits omitted)...0366"},"value":"0x602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe"},"visibility":"private"},{"body":{"id":4301,"nodeType":"Block","src":"2811:1292:50","statements":[{"assignments":[4286],"declarations":[{"constant":false,"id":4286,"mutability":"mutable","name":"deployerCreationCode","nodeType":"VariableDeclaration","scope":4301,"src":"2821:28:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4285,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2821:7:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4288,"initialValue":{"id":4287,"name":"_DEPLOYER_CREATION_CODE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4277,"src":"2852:23:50","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2821:54:50"},{"AST":{"nodeType":"YulBlock","src":"3200:706:50","statements":[{"nodeType":"YulVariableDeclaration","src":"3214:29:50","value":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"3238:4:50"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3232:5:50"},"nodeType":"YulFunctionCall","src":"3232:11:50"},"variables":[{"name":"codeLength","nodeType":"YulTypedName","src":"3218:10:50","type":""}]},{"expression":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"3472:4:50"},{"name":"deployerCreationCode","nodeType":"YulIdentifier","src":"3478:20:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3465:6:50"},"nodeType":"YulFunctionCall","src":"3465:34:50"},"nodeType":"YulExpressionStatement","src":"3465:34:50"},{"nodeType":"YulAssignment","src":"3721:51:50","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3743:1:50","type":"","value":"0"},{"name":"code","nodeType":"YulIdentifier","src":"3746:4:50"},{"arguments":[{"name":"codeLength","nodeType":"YulIdentifier","src":"3756:10:50"},{"kind":"number","nodeType":"YulLiteral","src":"3768:2:50","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3752:3:50"},"nodeType":"YulFunctionCall","src":"3752:19:50"}],"functionName":{"name":"create","nodeType":"YulIdentifier","src":"3736:6:50"},"nodeType":"YulFunctionCall","src":"3736:36:50"},"variableNames":[{"name":"destination","nodeType":"YulIdentifier","src":"3721:11:50"}]},{"expression":{"arguments":[{"name":"code","nodeType":"YulIdentifier","src":"3879:4:50"},{"name":"codeLength","nodeType":"YulIdentifier","src":"3885:10:50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3872:6:50"},"nodeType":"YulFunctionCall","src":"3872:24:50"},"nodeType":"YulExpressionStatement","src":"3872:24:50"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4280,"isOffset":false,"isSlot":false,"src":"3238:4:50","valueSize":1},{"declaration":4280,"isOffset":false,"isSlot":false,"src":"3472:4:50","valueSize":1},{"declaration":4280,"isOffset":false,"isSlot":false,"src":"3746:4:50","valueSize":1},{"declaration":4280,"isOffset":false,"isSlot":false,"src":"3879:4:50","valueSize":1},{"declaration":4286,"isOffset":false,"isSlot":false,"src":"3478:20:50","valueSize":1},{"declaration":4283,"isOffset":false,"isSlot":false,"src":"3721:11:50","valueSize":1}],"id":4289,"nodeType":"InlineAssembly","src":"3191:715:50"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4291,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4283,"src":"4039:11:50","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4294,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4062:1:50","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4293,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4054:7:50","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4292,"name":"address","nodeType":"ElementaryTypeName","src":"4054:7:50","typeDescriptions":{}}},"id":4295,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4054:10:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4039:25:50","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4297,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4066:6:50","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CODE_DEPLOYMENT_FAILED","nodeType":"MemberAccess","referencedDeclaration":1712,"src":"4066:29:50","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4290,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"4030:8:50","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4030:66:50","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4300,"nodeType":"ExpressionStatement","src":"4030:66:50"}]},"documentation":{"id":4278,"nodeType":"StructuredDocumentation","src":"2587:145:50","text":" @dev Deploys a contract with `code` as its code, returning the destination address.\n Reverts if deployment fails."},"id":4302,"implemented":true,"kind":"function","modifiers":[],"name":"deploy","nodeType":"FunctionDefinition","parameters":{"id":4281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4280,"mutability":"mutable","name":"code","nodeType":"VariableDeclaration","scope":4302,"src":"2753:17:50","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4279,"name":"bytes","nodeType":"ElementaryTypeName","src":"2753:5:50","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2752:19:50"},"returnParameters":{"id":4284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4283,"mutability":"mutable","name":"destination","nodeType":"VariableDeclaration","scope":4302,"src":"2790:19:50","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4282,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:50","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2789:21:50"},"scope":4303,"src":"2737:1366:50","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":4304,"src":"1005:3100:50"}],"src":"688:3418:50"},"id":50},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","exportedSymbols":{"EOASignaturesValidator":[4483]},"id":4484,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4305,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:51"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4306,"nodeType":"ImportDirective","scope":4484,"sourceUnit":1870,"src":"713:90:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol","id":4307,"nodeType":"ImportDirective","scope":4484,"sourceUnit":1899,"src":"804:96:51","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","file":"../openzeppelin/EIP712.sol","id":4308,"nodeType":"ImportDirective","scope":4484,"sourceUnit":7121,"src":"902:36:51","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4310,"name":"ISignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":1898,"src":"1045:20:51","typeDescriptions":{"typeIdentifier":"t_contract$_ISignaturesValidator_$1898","typeString":"contract ISignaturesValidator"}},"id":4311,"nodeType":"InheritanceSpecifier","src":"1045:20:51"},{"baseName":{"id":4312,"name":"EIP712","nodeType":"UserDefinedTypeName","referencedDeclaration":7120,"src":"1067:6:51","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$7120","typeString":"contract EIP712"}},"id":4313,"nodeType":"InheritanceSpecifier","src":"1067:6:51"}],"contractDependencies":[1898,7120],"contractKind":"contract","documentation":{"id":4309,"nodeType":"StructuredDocumentation","src":"940:60:51","text":" @dev Utility for signing Solidity function calls."},"fullyImplemented":false,"id":4483,"linearizedBaseContracts":[4483,7120,1898],"name":"EOASignaturesValidator","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4317,"mutability":"mutable","name":"_nextNonce","nodeType":"VariableDeclaration","scope":4483,"src":"1130:47:51","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":4316,"keyType":{"id":4314,"name":"address","nodeType":"ElementaryTypeName","src":"1138:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1130:27:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":4315,"name":"uint256","nodeType":"ElementaryTypeName","src":"1149:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"},{"baseFunctions":[1889],"body":{"id":4326,"nodeType":"Block","src":"1253:44:51","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4323,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7093,"src":"1270:18:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1270:20:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":4322,"id":4325,"nodeType":"Return","src":"1263:27:51"}]},"functionSelector":"ed24911d","id":4327,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":4319,"nodeType":"OverrideSpecifier","overrides":[],"src":"1226:8:51"},"parameters":{"id":4318,"nodeType":"ParameterList","parameters":[],"src":"1211:2:51"},"returnParameters":{"id":4322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4321,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4327,"src":"1244:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4320,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1244:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1243:9:51"},"scope":4483,"src":"1184:113:51","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[1897],"body":{"id":4339,"nodeType":"Block","src":"1381:43:51","statements":[{"expression":{"baseExpression":{"id":4335,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4317,"src":"1398:10:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4337,"indexExpression":{"id":4336,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4329,"src":"1409:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1398:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4334,"id":4338,"nodeType":"Return","src":"1391:26:51"}]},"functionSelector":"90193b7c","id":4340,"implemented":true,"kind":"function","modifiers":[],"name":"getNextNonce","nodeType":"FunctionDefinition","overrides":{"id":4331,"nodeType":"OverrideSpecifier","overrides":[],"src":"1354:8:51"},"parameters":{"id":4330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4329,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4340,"src":"1325:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4328,"name":"address","nodeType":"ElementaryTypeName","src":"1325:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1324:17:51"},"returnParameters":{"id":4334,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4333,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4340,"src":"1372:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4332,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1371:9:51"},"scope":4483,"src":"1303:121:51","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4363,"nodeType":"Block","src":"1588:107:51","statements":[{"expression":{"arguments":[{"id":4352,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4342,"src":"1627:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4353,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4344,"src":"1636:10:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4354,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4346,"src":"1648:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"expression":{"arguments":[{"id":4357,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1664:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4356,"name":"uint256","nodeType":"ElementaryTypeName","src":"1664:7:51","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":4355,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1659:4:51","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":4358,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":4359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1659:17:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4360,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4348,"src":"1678:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4351,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[4364,4408],"referencedDeclaration":4408,"src":"1605:21:51","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":4361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:83:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"functionReturnParameters":4350,"id":4362,"nodeType":"Return","src":"1598:90:51"}]},"id":4364,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4342,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4364,"src":"1470:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4341,"name":"address","nodeType":"ElementaryTypeName","src":"1470:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4344,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":4364,"src":"1495:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4343,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1495:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4346,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4364,"src":"1523:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4345,"name":"bytes","nodeType":"ElementaryTypeName","src":"1523:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4348,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":4364,"src":"1555:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4347,"name":"uint256","nodeType":"ElementaryTypeName","src":"1555:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1460:118:51"},"returnParameters":{"id":4350,"nodeType":"ParameterList","parameters":[],"src":"1588:0:51"},"scope":4483,"src":"1430:265:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4407,"nodeType":"Block","src":"1885:1030:51","statements":[{"assignments":[4378],"declarations":[{"constant":false,"id":4378,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":4407,"src":"1895:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4377,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1895:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4382,"initialValue":{"arguments":[{"id":4380,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4368,"src":"1929:10:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4379,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7112,"src":"1912:16:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":4381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1912:28:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1895:45:51"},{"expression":{"arguments":[{"arguments":[{"id":4385,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"1977:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4386,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4378,"src":"1986:6:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4387,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4370,"src":"1994:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4384,"name":"_isValidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4460,"src":"1959:17:51","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,bytes32,bytes memory) view returns (bool)"}},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1959:45:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":4389,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4374,"src":"2006:9:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4383,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1950:8:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1950:66:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4391,"nodeType":"ExpressionStatement","src":"1950:66:51"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4393,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4372,"src":"2496:8:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":4394,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2508:5:51","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"2508:15:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2496:27:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4397,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2525:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"EXPIRED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1748,"src":"2525:24:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4392,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2487:8:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:63:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4400,"nodeType":"ExpressionStatement","src":"2487:63:51"},{"expression":{"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4401,"name":"_nextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4317,"src":"2884:10:51","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":4403,"indexExpression":{"id":4402,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4366,"src":"2895:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2884:19:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2907:1:51","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2884:24:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4406,"nodeType":"ExpressionStatement","src":"2884:24:51"}]},"id":4408,"implemented":true,"kind":"function","modifiers":[],"name":"_ensureValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4366,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4408,"src":"1741:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4365,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4368,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":4408,"src":"1766:18:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4367,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1766:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4370,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4408,"src":"1794:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4369,"name":"bytes","nodeType":"ElementaryTypeName","src":"1794:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4372,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":4408,"src":"1826:16:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4371,"name":"uint256","nodeType":"ElementaryTypeName","src":"1826:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4374,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":4408,"src":"1852:17:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4373,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1731:144:51"},"returnParameters":{"id":4376,"nodeType":"ParameterList","parameters":[],"src":"1885:0:51"},"scope":4483,"src":"1701:1214:51","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4459,"nodeType":"Block","src":"3072:725:51","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4420,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4414,"src":"3091:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3091:16:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":4422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3111:2:51","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"3091:22:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4424,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3115:6:51","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MALFORMED_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1751,"src":"3115:26:51","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4419,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3082:8:51","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:60:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4427,"nodeType":"ExpressionStatement","src":"3082:60:51"},{"assignments":[4429],"declarations":[{"constant":false,"id":4429,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4459,"src":"3153:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4428,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3153:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4430,"nodeType":"VariableDeclarationStatement","src":"3153:9:51"},{"assignments":[4432],"declarations":[{"constant":false,"id":4432,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4459,"src":"3172:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4431,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3172:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":4433,"nodeType":"VariableDeclarationStatement","src":"3172:9:51"},{"assignments":[4435],"declarations":[{"constant":false,"id":4435,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4459,"src":"3191:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4434,"name":"uint8","nodeType":"ElementaryTypeName","src":"3191:5:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":4436,"nodeType":"VariableDeclarationStatement","src":"3191:7:51"},{"AST":{"nodeType":"YulBlock","src":"3387:155:51","statements":[{"nodeType":"YulAssignment","src":"3401:32:51","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3416:9:51"},{"kind":"number","nodeType":"YulLiteral","src":"3427:4:51","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3412:3:51"},"nodeType":"YulFunctionCall","src":"3412:20:51"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3406:5:51"},"nodeType":"YulFunctionCall","src":"3406:27:51"},"variableNames":[{"name":"r","nodeType":"YulIdentifier","src":"3401:1:51"}]},{"nodeType":"YulAssignment","src":"3446:32:51","value":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3461:9:51"},{"kind":"number","nodeType":"YulLiteral","src":"3472:4:51","type":"","value":"0x40"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3457:3:51"},"nodeType":"YulFunctionCall","src":"3457:20:51"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3451:5:51"},"nodeType":"YulFunctionCall","src":"3451:27:51"},"variableNames":[{"name":"s","nodeType":"YulIdentifier","src":"3446:1:51"}]},{"nodeType":"YulAssignment","src":"3491:41:51","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3501:1:51","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"3514:9:51"},{"kind":"number","nodeType":"YulLiteral","src":"3525:4:51","type":"","value":"0x60"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3510:3:51"},"nodeType":"YulFunctionCall","src":"3510:20:51"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3504:5:51"},"nodeType":"YulFunctionCall","src":"3504:27:51"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"3496:4:51"},"nodeType":"YulFunctionCall","src":"3496:36:51"},"variableNames":[{"name":"v","nodeType":"YulIdentifier","src":"3491:1:51"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4429,"isOffset":false,"isSlot":false,"src":"3401:1:51","valueSize":1},{"declaration":4432,"isOffset":false,"isSlot":false,"src":"3446:1:51","valueSize":1},{"declaration":4414,"isOffset":false,"isSlot":false,"src":"3416:9:51","valueSize":1},{"declaration":4414,"isOffset":false,"isSlot":false,"src":"3461:9:51","valueSize":1},{"declaration":4414,"isOffset":false,"isSlot":false,"src":"3514:9:51","valueSize":1},{"declaration":4435,"isOffset":false,"isSlot":false,"src":"3491:1:51","valueSize":1}],"id":4437,"nodeType":"InlineAssembly","src":"3378:164:51"},{"assignments":[4439],"declarations":[{"constant":false,"id":4439,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","scope":4459,"src":"3552:24:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4438,"name":"address","nodeType":"ElementaryTypeName","src":"3552:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4446,"initialValue":{"arguments":[{"id":4441,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4412,"src":"3589:6:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4442,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4435,"src":"3597:1:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":4443,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4429,"src":"3600:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4444,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4432,"src":"3603:1:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4440,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3579:9:51","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3579:26:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3552:53:51"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4447,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4439,"src":"3728:16:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":4450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3756:1:51","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3748:7:51","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4448,"name":"address","nodeType":"ElementaryTypeName","src":"3748:7:51","typeDescriptions":{}}},"id":4451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3748:10:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3728:30:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4453,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4439,"src":"3762:16:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4454,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4410,"src":"3782:7:51","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3762:27:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3728:61:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":4457,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3727:63:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4418,"id":4458,"nodeType":"Return","src":"3720:70:51"}]},"id":4460,"implemented":true,"kind":"function","modifiers":[],"name":"_isValidSignature","nodeType":"FunctionDefinition","parameters":{"id":4415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4410,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4460,"src":"2957:15:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4409,"name":"address","nodeType":"ElementaryTypeName","src":"2957:7:51","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4412,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","scope":4460,"src":"2982:14:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4411,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4414,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4460,"src":"3006:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4413,"name":"bytes","nodeType":"ElementaryTypeName","src":"3006:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2947:87:51"},"returnParameters":{"id":4418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4417,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4460,"src":"3066:4:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4416,"name":"bool","nodeType":"ElementaryTypeName","src":"3066:4:51","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3065:6:51"},"scope":4483,"src":"2921:876:51","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":4481,"nodeType":"Block","src":"3928:294:51","statements":[{"assignments":[4472],"declarations":[{"constant":false,"id":4472,"mutability":"mutable","name":"signature","nodeType":"VariableDeclaration","scope":4481,"src":"3938:22:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4471,"name":"bytes","nodeType":"ElementaryTypeName","src":"3938:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4477,"initialValue":{"arguments":[{"hexValue":"3635","id":4475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3973:2:51","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"}],"id":4474,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3963:9:51","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4473,"name":"bytes","nodeType":"ElementaryTypeName","src":"3967:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3963:13:51","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3938:38:51"},{"AST":{"nodeType":"YulBlock","src":"4051:138:51","statements":[{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4076:9:51"},{"kind":"number","nodeType":"YulLiteral","src":"4087:2:51","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4072:3:51"},"nodeType":"YulFunctionCall","src":"4072:18:51"},{"name":"r","nodeType":"YulIdentifier","src":"4092:1:51"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4065:6:51"},"nodeType":"YulFunctionCall","src":"4065:29:51"},"nodeType":"YulExpressionStatement","src":"4065:29:51"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4118:9:51"},{"kind":"number","nodeType":"YulLiteral","src":"4129:2:51","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4114:3:51"},"nodeType":"YulFunctionCall","src":"4114:18:51"},{"name":"s","nodeType":"YulIdentifier","src":"4134:1:51"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4107:6:51"},"nodeType":"YulFunctionCall","src":"4107:29:51"},"nodeType":"YulExpressionStatement","src":"4107:29:51"},{"expression":{"arguments":[{"arguments":[{"name":"signature","nodeType":"YulIdentifier","src":"4161:9:51"},{"kind":"number","nodeType":"YulLiteral","src":"4172:2:51","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4157:3:51"},"nodeType":"YulFunctionCall","src":"4157:18:51"},{"name":"v","nodeType":"YulIdentifier","src":"4177:1:51"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"4149:7:51"},"nodeType":"YulFunctionCall","src":"4149:30:51"},"nodeType":"YulExpressionStatement","src":"4149:30:51"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4464,"isOffset":false,"isSlot":false,"src":"4092:1:51","valueSize":1},{"declaration":4466,"isOffset":false,"isSlot":false,"src":"4134:1:51","valueSize":1},{"declaration":4472,"isOffset":false,"isSlot":false,"src":"4076:9:51","valueSize":1},{"declaration":4472,"isOffset":false,"isSlot":false,"src":"4118:9:51","valueSize":1},{"declaration":4472,"isOffset":false,"isSlot":false,"src":"4161:9:51","valueSize":1},{"declaration":4462,"isOffset":false,"isSlot":false,"src":"4177:1:51","valueSize":1}],"id":4478,"nodeType":"InlineAssembly","src":"4042:147:51"},{"expression":{"id":4479,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4472,"src":"4206:9:51","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4470,"id":4480,"nodeType":"Return","src":"4199:16:51"}]},"id":4482,"implemented":true,"kind":"function","modifiers":[],"name":"_toArraySignature","nodeType":"FunctionDefinition","parameters":{"id":4467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4462,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":4482,"src":"3839:7:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4461,"name":"uint8","nodeType":"ElementaryTypeName","src":"3839:5:51","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4464,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":4482,"src":"3856:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4463,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3856:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4466,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":4482,"src":"3875:9:51","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3875:7:51","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3829:61:51"},"returnParameters":{"id":4470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4469,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4482,"src":"3914:12:51","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4468,"name":"bytes","nodeType":"ElementaryTypeName","src":"3914:5:51","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3913:14:51"},"scope":4483,"src":"3803:419:51","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4484,"src":"1001:3223:51"}],"src":"688:3537:51"},"id":51},"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","exportedSymbols":{"_asIAsset":[4499],"_findTokenIndex":[4683],"_insertSorted":[4641],"_sortTokens":[4546]},"id":4684,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4485,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:52"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4486,"nodeType":"ImportDirective","scope":4684,"sourceUnit":1870,"src":"713:90:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":4487,"nodeType":"ImportDirective","scope":4684,"sourceUnit":2091,"src":"804:87:52","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","id":4488,"nodeType":"ImportDirective","scope":4684,"sourceUnit":2905,"src":"892:65:52","symbolAliases":[],"unitAlias":""},{"body":{"id":4498,"nodeType":"Block","src":"1060:101:52","statements":[{"AST":{"nodeType":"YulBlock","src":"1127:32:52","statements":[{"nodeType":"YulAssignment","src":"1137:16:52","value":{"name":"tokens","nodeType":"YulIdentifier","src":"1147:6:52"},"variableNames":[{"name":"assets","nodeType":"YulIdentifier","src":"1137:6:52"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4495,"isOffset":false,"isSlot":false,"src":"1137:6:52","valueSize":1},{"declaration":4491,"isOffset":false,"isSlot":false,"src":"1147:6:52","valueSize":1}],"id":4497,"nodeType":"InlineAssembly","src":"1118:41:52"}]},"id":4499,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_asIAsset","nodeType":"FunctionDefinition","parameters":{"id":4492,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4491,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":4499,"src":"998:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4489,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"998:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4490,"nodeType":"ArrayTypeName","src":"998:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"997:24:52"},"returnParameters":{"id":4496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4495,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":4499,"src":"1036:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":4493,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"1036:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":4494,"nodeType":"ArrayTypeName","src":"1036:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"1035:24:52"},"scope":4684,"src":"979:182:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4545,"nodeType":"Block","src":"1262:213:52","statements":[{"assignments":[4510],"declarations":[{"constant":false,"id":4510,"mutability":"mutable","name":"aFirst","nodeType":"VariableDeclaration","scope":4545,"src":"1268:11:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4509,"name":"bool","nodeType":"ElementaryTypeName","src":"1268:4:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":4514,"initialValue":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"id":4513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4511,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"1282:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4512,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4503,"src":"1291:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1282:15:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"1268:29:52"},{"assignments":[4518],"declarations":[{"constant":false,"id":4518,"mutability":"mutable","name":"sortedTokens","nodeType":"VariableDeclaration","scope":4545,"src":"1303:28:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4516,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1303:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4517,"nodeType":"ArrayTypeName","src":"1303:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":4524,"initialValue":{"arguments":[{"hexValue":"32","id":4522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1347:1:52","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":4521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1334:12:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":4519,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1338:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4520,"nodeType":"ArrayTypeName","src":"1338:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":4523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1334:15:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1303:46:52"},{"expression":{"id":4532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4525,"name":"sortedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"1356:12:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4527,"indexExpression":{"hexValue":"30","id":4526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1369:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1356:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4528,"name":"aFirst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"1374:6:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4530,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4503,"src":"1392:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1374:24:52","trueExpression":{"id":4529,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"1383:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1356:42:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4533,"nodeType":"ExpressionStatement","src":"1356:42:52"},{"expression":{"id":4541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4534,"name":"sortedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"1404:12:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4536,"indexExpression":{"hexValue":"31","id":4535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1417:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1404:15:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":4537,"name":"aFirst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"1422:6:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":4539,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4501,"src":"1440:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1422:24:52","trueExpression":{"id":4538,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4503,"src":"1431:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1404:42:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4542,"nodeType":"ExpressionStatement","src":"1404:42:52"},{"expression":{"id":4543,"name":"sortedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"1460:12:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":4508,"id":4544,"nodeType":"Return","src":"1453:19:52"}]},"id":4546,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_sortTokens","nodeType":"FunctionDefinition","parameters":{"id":4504,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4501,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","scope":4546,"src":"1189:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":4500,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1189:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":4503,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","scope":4546,"src":"1208:13:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":4502,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1208:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1183:40:52"},"returnParameters":{"id":4508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4507,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":4546,"src":"1238:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4505,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1238:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4506,"nodeType":"ArrayTypeName","src":"1238:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1237:24:52"},"scope":4684,"src":"1163:312:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4640,"nodeType":"Block","src":"1576:326:52","statements":[{"expression":{"id":4566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4557,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"1582:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4561,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"1604:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1604:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":4563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1620:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1604:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1591:12:52","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":4558,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1595:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4559,"nodeType":"ArrayTypeName","src":"1595:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1591:31:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"src":"1582:40:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4567,"nodeType":"ExpressionStatement","src":"1582:40:52"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4568,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"1633:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1633:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1650:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1633:18:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4581,"nodeType":"IfStatement","src":"1629:81:52","trueBody":{"id":4580,"nodeType":"Block","src":"1653:57:52","statements":[{"expression":{"id":4576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4572,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"1663:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4574,"indexExpression":{"hexValue":"30","id":4573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1670:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1663:9:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4575,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"1675:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1663:17:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4577,"nodeType":"ExpressionStatement","src":"1663:17:52"},{"expression":{"id":4578,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"1697:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":4556,"id":4579,"nodeType":"Return","src":"1690:13:52"}]}},{"assignments":[4583],"declarations":[{"constant":false,"id":4583,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":4640,"src":"1716:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4582,"name":"uint256","nodeType":"ElementaryTypeName","src":"1716:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4584,"nodeType":"VariableDeclarationStatement","src":"1716:9:52"},{"body":{"expression":{"id":4612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4604,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"1792:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4606,"indexExpression":{"id":4605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1799:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1792:9:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4607,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"1804:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4611,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4608,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1811:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1815:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1811:5:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1804:13:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1792:25:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4613,"nodeType":"ExpressionStatement","src":"1792:25:52"},"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4590,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1755:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1759:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1755:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"id":4599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4593,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"1764:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4597,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4594,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1771:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":4595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1775:1:52","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1771:5:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1764:13:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":4598,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"1780:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1764:21:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1755:30:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4614,"initializationExpression":{"expression":{"id":4588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4585,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1736:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":4586,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"1740:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1740:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1736:17:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4589,"nodeType":"ExpressionStatement","src":"1736:17:52"},"loopExpression":{"expression":{"id":4602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1787:3:52","subExpression":{"id":4601,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1787:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4603,"nodeType":"ExpressionStatement","src":"1787:3:52"},"nodeType":"ForStatement","src":"1731:86:52"},{"body":{"expression":{"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4625,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"1855:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4627,"indexExpression":{"id":4626,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"1862:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1855:9:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":4628,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4549,"src":"1867:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4630,"indexExpression":{"id":4629,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"1874:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1867:9:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1855:21:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4632,"nodeType":"ExpressionStatement","src":"1855:21:52"},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4619,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"1843:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4620,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1847:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1843:5:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4633,"initializationExpression":{"assignments":[4616],"declarations":[{"constant":false,"id":4616,"mutability":"mutable","name":"j","nodeType":"VariableDeclaration","scope":4633,"src":"1828:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4615,"name":"uint256","nodeType":"ElementaryTypeName","src":"1828:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4618,"initialValue":{"hexValue":"30","id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1840:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1828:13:52"},"loopExpression":{"expression":{"id":4623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1850:3:52","subExpression":{"id":4622,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4616,"src":"1850:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4624,"nodeType":"ExpressionStatement","src":"1850:3:52"},"nodeType":"ForStatement","src":"1823:53:52"},{"expression":{"id":4638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":4634,"name":"sorted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4555,"src":"1882:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4636,"indexExpression":{"id":4635,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4583,"src":"1889:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1882:9:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4637,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4551,"src":"1894:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1882:17:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4639,"nodeType":"ExpressionStatement","src":"1882:17:52"}]},"id":4641,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_insertSorted","nodeType":"FunctionDefinition","parameters":{"id":4552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4549,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":4641,"src":"1500:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4547,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1500:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4548,"nodeType":"ArrayTypeName","src":"1500:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":4551,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4641,"src":"1524:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":4550,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1524:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1499:38:52"},"returnParameters":{"id":4556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4555,"mutability":"mutable","name":"sorted","nodeType":"VariableDeclaration","scope":4641,"src":"1552:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4553,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1552:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4554,"nodeType":"ArrayTypeName","src":"1552:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1551:24:52"},"scope":4684,"src":"1477:425:52","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4682,"nodeType":"Block","src":"1990:405:52","statements":[{"assignments":[4652],"declarations":[{"constant":false,"id":4652,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":4682,"src":"2199:20:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4651,"name":"uint256","nodeType":"ElementaryTypeName","src":"2199:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4655,"initialValue":{"expression":{"id":4653,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"2222:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2222:13:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2199:36:52"},{"body":{"id":4675,"nodeType":"Block","src":"2284:73:52","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"id":4670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4666,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4644,"src":"2298:6:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":4668,"indexExpression":{"id":4667,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"2305:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2298:9:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4669,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4646,"src":"2311:5:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"2298:18:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4674,"nodeType":"IfStatement","src":"2294:57:52","trueBody":{"id":4673,"nodeType":"Block","src":"2318:33:52","statements":[{"expression":{"id":4671,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"2339:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4650,"id":4672,"nodeType":"Return","src":"2332:8:52"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4660,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"2261:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4661,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4652,"src":"2265:12:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2261:16:52","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4676,"initializationExpression":{"assignments":[4657],"declarations":[{"constant":false,"id":4657,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":4676,"src":"2246:9:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4656,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4659,"initialValue":{"hexValue":"30","id":4658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2258:1:52","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2246:13:52"},"loopExpression":{"expression":{"id":4664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2279:3:52","subExpression":{"id":4663,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4657,"src":"2279:1:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4665,"nodeType":"ExpressionStatement","src":"2279:3:52"},"nodeType":"ForStatement","src":"2241:116:52"},{"expression":{"arguments":[{"expression":{"id":4678,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2371:6:52","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_TOKEN","nodeType":"MemberAccess","referencedDeclaration":1481,"src":"2371:20:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4677,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"2363:7:52","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2363:29:52","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4681,"nodeType":"ExpressionStatement","src":"2363:29:52"}]},"id":4683,"implemented":true,"kind":"freeFunction","modifiers":[],"name":"_findTokenIndex","nodeType":"FunctionDefinition","parameters":{"id":4647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4644,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":4683,"src":"1929:22:52","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4642,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1929:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4643,"nodeType":"ArrayTypeName","src":"1929:8:52","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":4646,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":4683,"src":"1953:12:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":4645,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1953:6:52","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1928:38:52"},"returnParameters":{"id":4650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4649,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4683,"src":"1981:7:52","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4648,"name":"uint256","nodeType":"ElementaryTypeName","src":"1981:7:52","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1980:9:52"},"scope":4684,"src":"1904:491:52","stateMutability":"pure","virtual":false,"visibility":"internal"}],"src":"688:1708:52"},"id":52},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","exportedSymbols":{"InputHelpers":[4795]},"id":4796,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4685,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:53"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":4686,"nodeType":"ImportDirective","scope":4796,"sourceUnit":2091,"src":"713:87:53","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4687,"nodeType":"ImportDirective","scope":4796,"sourceUnit":1870,"src":"801:90:53","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4795,"linearizedBaseContracts":[4795],"name":"InputHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":4702,"nodeType":"Block","src":"988:63:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4695,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4689,"src":"1007:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4696,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4691,"src":"1012:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1007:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4698,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1015:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1409,"src":"1015:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4694,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"998:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"998:46:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4701,"nodeType":"ExpressionStatement","src":"998:46:53"}]},"id":4703,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":4692,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4689,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4703,"src":"952:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4688,"name":"uint256","nodeType":"ElementaryTypeName","src":"952:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4691,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4703,"src":"963:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4690,"name":"uint256","nodeType":"ElementaryTypeName","src":"963:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"951:22:53"},"returnParameters":{"id":4693,"nodeType":"ParameterList","parameters":[],"src":"988:0:53"},"scope":4795,"src":"920:131:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4724,"nodeType":"Block","src":"1166:73:53","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4713,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4705,"src":"1185:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4714,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"1190:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1185:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4716,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4707,"src":"1195:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":4717,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4709,"src":"1200:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1195:6:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1185:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4720,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1203:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INPUT_LENGTH_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1409,"src":"1203:28:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4712,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1176:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1176:56:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4723,"nodeType":"ExpressionStatement","src":"1176:56:53"}]},"id":4725,"implemented":true,"kind":"function","modifiers":[],"name":"ensureInputLengthMatch","nodeType":"FunctionDefinition","parameters":{"id":4710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4705,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4725,"src":"1098:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1098:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4707,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4725,"src":"1117:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4706,"name":"uint256","nodeType":"ElementaryTypeName","src":"1117:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4709,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":4725,"src":"1136:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4708,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1088:63:53"},"returnParameters":{"id":4711,"nodeType":"ParameterList","parameters":[],"src":"1166:0:53"},"scope":4795,"src":"1057:182:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4742,"nodeType":"Block","src":"1311:208:53","statements":[{"assignments":[4735],"declarations":[{"constant":false,"id":4735,"mutability":"mutable","name":"addressArray","nodeType":"VariableDeclaration","scope":4742,"src":"1321:29:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4733,"name":"address","nodeType":"ElementaryTypeName","src":"1321:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4734,"nodeType":"ArrayTypeName","src":"1321:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":4736,"nodeType":"VariableDeclarationStatement","src":"1321:29:53"},{"AST":{"nodeType":"YulBlock","src":"1425:45:53","statements":[{"nodeType":"YulAssignment","src":"1439:21:53","value":{"name":"array","nodeType":"YulIdentifier","src":"1455:5:53"},"variableNames":[{"name":"addressArray","nodeType":"YulIdentifier","src":"1439:12:53"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4735,"isOffset":false,"isSlot":false,"src":"1439:12:53","valueSize":1},{"declaration":4728,"isOffset":false,"isSlot":false,"src":"1455:5:53","valueSize":1}],"id":4737,"nodeType":"InlineAssembly","src":"1416:54:53"},{"expression":{"arguments":[{"id":4739,"name":"addressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4735,"src":"1499:12:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":4738,"name":"ensureArrayIsSorted","nodeType":"Identifier","overloadedDeclarations":[4743,4794],"referencedDeclaration":4794,"src":"1479:19:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory) pure"}},"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1479:33:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4741,"nodeType":"ExpressionStatement","src":"1479:33:53"}]},"id":4743,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":4729,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4728,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":4743,"src":"1274:21:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":4726,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1274:6:53","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":4727,"nodeType":"ArrayTypeName","src":"1274:8:53","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1273:23:53"},"returnParameters":{"id":4730,"nodeType":"ParameterList","parameters":[],"src":"1311:0:53"},"scope":4795,"src":"1245:274:53","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4793,"nodeType":"Block","src":"1592:307:53","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":4749,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"1606:5:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1606:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":4751,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1621:1:53","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1606:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4755,"nodeType":"IfStatement","src":"1602:53:53","trueBody":{"id":4754,"nodeType":"Block","src":"1624:31:53","statements":[{"functionReturnParameters":4748,"id":4753,"nodeType":"Return","src":"1638:7:53"}]}},{"assignments":[4757],"declarations":[{"constant":false,"id":4757,"mutability":"mutable","name":"previous","nodeType":"VariableDeclaration","scope":4793,"src":"1665:16:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4756,"name":"address","nodeType":"ElementaryTypeName","src":"1665:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4761,"initialValue":{"baseExpression":{"id":4758,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"1684:5:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4760,"indexExpression":{"hexValue":"30","id":4759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:53","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1684:8:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1665:27:53"},{"body":{"id":4791,"nodeType":"Block","src":"1745:148:53","statements":[{"assignments":[4774],"declarations":[{"constant":false,"id":4774,"mutability":"mutable","name":"current","nodeType":"VariableDeclaration","scope":4791,"src":"1759:15:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4773,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":4778,"initialValue":{"baseExpression":{"id":4775,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"1777:5:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4777,"indexExpression":{"id":4776,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"1783:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1777:8:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1759:26:53"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4780,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4757,"src":"1808:8:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4781,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"1819:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1808:18:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4783,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1828:6:53","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNSORTED_ARRAY","nodeType":"MemberAccess","referencedDeclaration":1403,"src":"1828:21:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4779,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1799:8:53","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:51:53","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4786,"nodeType":"ExpressionStatement","src":"1799:51:53"},{"expression":{"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4787,"name":"previous","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4757,"src":"1864:8:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4788,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4774,"src":"1875:7:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1864:18:53","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4790,"nodeType":"ExpressionStatement","src":"1864:18:53"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4766,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"1722:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4767,"name":"array","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4746,"src":"1726:5:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1726:12:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1722:16:53","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4792,"initializationExpression":{"assignments":[4763],"declarations":[{"constant":false,"id":4763,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":4792,"src":"1707:9:53","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4762,"name":"uint256","nodeType":"ElementaryTypeName","src":"1707:7:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4765,"initialValue":{"hexValue":"31","id":4764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1719:1:53","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"1707:13:53"},"loopExpression":{"expression":{"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1740:3:53","subExpression":{"id":4770,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4763,"src":"1742:1:53","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4772,"nodeType":"ExpressionStatement","src":"1740:3:53"},"nodeType":"ForStatement","src":"1702:191:53"}]},"id":4794,"implemented":true,"kind":"function","modifiers":[],"name":"ensureArrayIsSorted","nodeType":"FunctionDefinition","parameters":{"id":4747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4746,"mutability":"mutable","name":"array","nodeType":"VariableDeclaration","scope":4794,"src":"1554:22:53","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4744,"name":"address","nodeType":"ElementaryTypeName","src":"1554:7:53","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4745,"nodeType":"ArrayTypeName","src":"1554:9:53","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1553:24:53"},"returnParameters":{"id":4748,"nodeType":"ParameterList","parameters":[],"src":"1592:0:53"},"scope":4795,"src":"1525:374:53","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4796,"src":"893:1008:53"}],"src":"688:1214:53"},"id":53},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","exportedSymbols":{"SingletonAuthentication":[4890]},"id":4891,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4797,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:54"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol","id":4798,"nodeType":"ImportDirective","scope":4891,"sourceUnit":29,"src":"713:88:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":4799,"nodeType":"ImportDirective","scope":4891,"sourceUnit":3618,"src":"802:65:54","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"./Authentication.sol","id":4800,"nodeType":"ImportDirective","scope":4891,"sourceUnit":4049,"src":"869:30:54","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":4801,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4048,"src":"946:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$4048","typeString":"contract Authentication"}},"id":4802,"nodeType":"InheritanceSpecifier","src":"946:14:54"}],"contractDependencies":[1880,4048],"contractKind":"contract","fullyImplemented":true,"id":4890,"linearizedBaseContracts":[4890,4048,1880],"name":"SingletonAuthentication","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4804,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":4890,"src":"967:31:54","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":4803,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"967:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"body":{"id":4825,"nodeType":"Block","src":"1152:31:54","statements":[{"expression":{"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4821,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"1162:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":4822,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4806,"src":"1171:5:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"1162:14:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":4824,"nodeType":"ExpressionStatement","src":"1162:14:54"}]},"id":4826,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":4815,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1143:4:54","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}],"id":4814,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1135:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4813,"name":"address","nodeType":"ElementaryTypeName","src":"1135:7:54","typeDescriptions":{}}},"id":4816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1135:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1127:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1127:7:54","typeDescriptions":{}}},"id":4817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1127:22:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1119:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":4809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1119:7:54","typeDescriptions":{}}},"id":4818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1119:31:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":4819,"modifierName":{"id":4808,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"1104:14:54","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$4048_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1104:47:54"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":4807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4806,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":4826,"src":"1090:12:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":4805,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1090:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1089:14:54"},"returnParameters":{"id":4820,"nodeType":"ParameterList","parameters":[],"src":"1152:0:54"},"scope":4890,"src":"1078:105:54","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":4834,"nodeType":"Block","src":"1296:30:54","statements":[{"expression":{"id":4832,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4804,"src":"1313:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"functionReturnParameters":4831,"id":4833,"nodeType":"Return","src":"1306:13:54"}]},"documentation":{"id":4827,"nodeType":"StructuredDocumentation","src":"1189:53:54","text":" @notice Returns the Balancer Vault"},"functionSelector":"8d928af8","id":4835,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":4828,"nodeType":"ParameterList","parameters":[],"src":"1264:2:54"},"returnParameters":{"id":4831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4830,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4835,"src":"1288:6:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":4829,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1288:6:54","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1287:8:54"},"scope":4890,"src":"1247:79:54","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4846,"nodeType":"Block","src":"1445:50:54","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4841,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4835,"src":"1462:8:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":4842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1462:10:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":3177,"src":"1462:24:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":4844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1462:26:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"functionReturnParameters":4840,"id":4845,"nodeType":"Return","src":"1455:33:54"}]},"documentation":{"id":4836,"nodeType":"StructuredDocumentation","src":"1332:49:54","text":" @notice Returns the Authorizer"},"functionSelector":"aaabadc5","id":4847,"implemented":true,"kind":"function","modifiers":[],"name":"getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":4837,"nodeType":"ParameterList","parameters":[],"src":"1408:2:54"},"returnParameters":{"id":4840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4839,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4847,"src":"1432:11:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":4838,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"1432:11:54","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1431:13:54"},"scope":4890,"src":"1386:109:54","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[4047],"body":{"id":4868,"nodeType":"Block","src":"1595:84:54","statements":[{"expression":{"arguments":[{"id":4860,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4849,"src":"1639:8:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4861,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"1649:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":4864,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1666:4:54","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}],"id":4863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1658:7:54","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4862,"name":"address","nodeType":"ElementaryTypeName","src":"1658:7:54","typeDescriptions":{}}},"id":4865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1658:13:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4857,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"1612:13:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":4858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1612:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"id":4859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2918,"src":"1612:26:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":4866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1612:60:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4856,"id":4867,"nodeType":"Return","src":"1605:67:54"}]},"id":4869,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":4853,"nodeType":"OverrideSpecifier","overrides":[],"src":"1571:8:54"},"parameters":{"id":4852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4849,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4869,"src":"1522:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4848,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1522:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4851,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4869,"src":"1540:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4850,"name":"address","nodeType":"ElementaryTypeName","src":"1540:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1521:35:54"},"returnParameters":{"id":4856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4855,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4869,"src":"1589:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4854,"name":"bool","nodeType":"ElementaryTypeName","src":"1589:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1588:6:54"},"scope":4890,"src":"1501:178:54","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4888,"nodeType":"Block","src":"1815:76:54","statements":[{"expression":{"arguments":[{"id":4883,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4871,"src":"1859:8:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":4884,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4873,"src":"1869:7:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":4885,"name":"where","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4875,"src":"1878:5:54","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":4880,"name":"getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"1832:13:54","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1832:15:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"id":4882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2918,"src":"1832:26:54","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":4886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1832:52:54","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":4879,"id":4887,"nodeType":"Return","src":"1825:59:54"}]},"id":4889,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","parameters":{"id":4876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4871,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":4889,"src":"1715:16:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4870,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1715:7:54","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":4873,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":4889,"src":"1741:15:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4872,"name":"address","nodeType":"ElementaryTypeName","src":"1741:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":4875,"mutability":"mutable","name":"where","nodeType":"VariableDeclaration","scope":4889,"src":"1766:13:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4874,"name":"address","nodeType":"ElementaryTypeName","src":"1766:7:54","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1705:80:54"},"returnParameters":{"id":4879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4878,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4889,"src":"1809:4:54","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4877,"name":"bool","nodeType":"ElementaryTypeName","src":"1809:4:54","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1808:6:54"},"scope":4890,"src":"1685:206:54","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":4891,"src":"901:992:54"}],"src":"688:1206:54"},"id":54},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","exportedSymbols":{"VaultHelpers":[4915]},"id":4916,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4892,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:55"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":4915,"linearizedBaseContracts":[4915],"name":"VaultHelpers","nodeType":"ContractDefinition","nodes":[{"body":{"id":4913,"nodeType":"Block","src":"967:241:55","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4904,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4895,"src":"1181:6:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":4903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1173:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:55","typeDescriptions":{}}},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1173:15:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"id":4908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3132","id":4906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1193:2:55","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":4907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:55","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1193:6:55","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}}],"id":4909,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1192:8:55","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"}},"src":"1173:27:55","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1165:7:55","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4900,"name":"address","nodeType":"ElementaryTypeName","src":"1165:7:55","typeDescriptions":{}}},"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1165:36:55","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"functionReturnParameters":4899,"id":4912,"nodeType":"Return","src":"1158:43:55"}]},"documentation":{"id":4893,"nodeType":"StructuredDocumentation","src":"740:151:55","text":" @dev Returns the address of a Pool's contract.\n This is the same code the Vault runs in `PoolRegistry._getPoolAddress`."},"id":4914,"implemented":true,"kind":"function","modifiers":[],"name":"toPoolAddress","nodeType":"FunctionDefinition","parameters":{"id":4896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4895,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":4914,"src":"919:14:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":4894,"name":"bytes32","nodeType":"ElementaryTypeName","src":"919:7:55","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"918:16:55"},"returnParameters":{"id":4899,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4898,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4914,"src":"958:7:55","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4897,"name":"address","nodeType":"ElementaryTypeName","src":"958:7:55","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"957:9:55"},"scope":4915,"src":"896:312:55","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":4916,"src":"713:497:55"}],"src":"688:523:55"},"id":55},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","exportedSymbols":{"FixedPoint":[5293]},"id":5294,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":4917,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:56"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":4918,"nodeType":"ImportDirective","scope":5294,"sourceUnit":1870,"src":"713:90:56","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","file":"./LogExpMath.sol","id":4919,"nodeType":"ImportDirective","scope":5294,"sourceUnit":6592,"src":"805:26:56","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":5293,"linearizedBaseContracts":[5293],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":4922,"mutability":"constant","name":"ONE","nodeType":"VariableDeclaration","scope":5293,"src":"956:36:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4920,"name":"uint256","nodeType":"ElementaryTypeName","src":"956:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":4921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"988:4:56","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":4927,"mutability":"constant","name":"TWO","nodeType":"VariableDeclaration","scope":5293,"src":"1019:39:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4923,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1051:1:56","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4925,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"1055:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1051:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4932,"mutability":"constant","name":"FOUR","nodeType":"VariableDeclaration","scope":5293,"src":"1064:40:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1064:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"34","id":4929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1097:1:56","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4930,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"1101:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1097:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":4935,"mutability":"constant","name":"MAX_POW_RELATIVE_ERROR","nodeType":"VariableDeclaration","scope":5293,"src":"1110:56:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4933,"name":"uint256","nodeType":"ElementaryTypeName","src":"1110:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3130303030","id":4934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1161:5:56","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"visibility":"internal"},{"constant":true,"id":4938,"mutability":"constant","name":"MIN_POW_BASE_FREE_EXPONENT","nodeType":"VariableDeclaration","scope":5293,"src":"1275:61:56","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4936,"name":"uint256","nodeType":"ElementaryTypeName","src":"1275:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"302e37653138","id":4937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1330:6:56","typeDescriptions":{"typeIdentifier":"t_rational_700000000000000000_by_1","typeString":"int_const 700000000000000000"},"value":"0.7e18"},"visibility":"internal"},{"body":{"id":4963,"nodeType":"Block","src":"1410:172:56","statements":[{"assignments":[4948],"declarations":[{"constant":false,"id":4948,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":4963,"src":"1493:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4947,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4952,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4949,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4940,"src":"1505:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":4950,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4942,"src":"1509:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1505:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1493:17:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4954,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"1529:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":4955,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4940,"src":"1534:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1529:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4957,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1537:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1370,"src":"1537:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4953,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1520:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1520:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4960,"nodeType":"ExpressionStatement","src":"1520:37:56"},{"expression":{"id":4961,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"1574:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4946,"id":4962,"nodeType":"Return","src":"1567:8:56"}]},"id":4964,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":4943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4940,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4964,"src":"1356:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4939,"name":"uint256","nodeType":"ElementaryTypeName","src":"1356:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4942,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4964,"src":"1367:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1367:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1355:22:56"},"returnParameters":{"id":4946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4964,"src":"1401:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1401:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1400:9:56"},"scope":5293,"src":"1343:239:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4989,"nodeType":"Block","src":"1655:172:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4974,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"1747:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":4975,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4966,"src":"1752:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1747:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":4977,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1755:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":4978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"1755:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4973,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1738:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":4979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1738:37:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4980,"nodeType":"ExpressionStatement","src":"1738:37:56"},{"assignments":[4982],"declarations":[{"constant":false,"id":4982,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":4989,"src":"1785:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4981,"name":"uint256","nodeType":"ElementaryTypeName","src":"1785:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4986,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4983,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4966,"src":"1797:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4984,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4968,"src":"1801:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1797:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1785:17:56"},{"expression":{"id":4987,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4982,"src":"1819:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4972,"id":4988,"nodeType":"Return","src":"1812:8:56"}]},"id":4990,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":4969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4966,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":4990,"src":"1601:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4965,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4968,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":4990,"src":"1612:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4967,"name":"uint256","nodeType":"ElementaryTypeName","src":"1612:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1600:22:56"},"returnParameters":{"id":4972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4971,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":4990,"src":"1646:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4970,"name":"uint256","nodeType":"ElementaryTypeName","src":"1646:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1645:9:56"},"scope":5293,"src":"1588:239:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5023,"nodeType":"Block","src":"1904:138:56","statements":[{"assignments":[5000],"declarations":[{"constant":false,"id":5000,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5023,"src":"1914:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4999,"name":"uint256","nodeType":"ElementaryTypeName","src":"1914:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5004,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5001,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"1932:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5002,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"1936:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1932:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1914:23:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5006,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"1956:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1961:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1956:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5009,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"1966:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5010,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4992,"src":"1976:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5012,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4994,"src":"1981:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1966:16:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1956:26:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5015,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1984:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1379,"src":"1984:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5005,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1947:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1947:57:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5018,"nodeType":"ExpressionStatement","src":"1947:57:56"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5019,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5000,"src":"2022:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5020,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"2032:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2022:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4998,"id":5022,"nodeType":"Return","src":"2015:20:56"}]},"id":5024,"implemented":true,"kind":"function","modifiers":[],"name":"mulDown","nodeType":"FunctionDefinition","parameters":{"id":4995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4992,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5024,"src":"1850:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4991,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4994,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5024,"src":"1861:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4993,"name":"uint256","nodeType":"ElementaryTypeName","src":"1861:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1849:22:56"},"returnParameters":{"id":4998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4997,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5024,"src":"1895:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4996,"name":"uint256","nodeType":"ElementaryTypeName","src":"1895:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1894:9:56"},"scope":5293,"src":"1833:209:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5054,"nodeType":"Block","src":"2124:638:56","statements":[{"assignments":[5034],"declarations":[{"constant":false,"id":5034,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5054,"src":"2134:15:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5033,"name":"uint256","nodeType":"ElementaryTypeName","src":"2134:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5038,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5035,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5026,"src":"2152:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5036,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"2156:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2152:5:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2134:23:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5040,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5026,"src":"2176:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2181:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2176:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5043,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5034,"src":"2186:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5044,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5026,"src":"2196:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:11:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5046,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5028,"src":"2201:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2186:16:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2176:26:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5049,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2204:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1379,"src":"2204:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5039,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2167:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2167:57:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5052,"nodeType":"ExpressionStatement","src":"2167:57:56"},{"AST":{"nodeType":"YulBlock","src":"2659:97:56","statements":[{"nodeType":"YulAssignment","src":"2673:73:56","value":{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2701:7:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2694:6:56"},"nodeType":"YulFunctionCall","src":"2694:15:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2687:6:56"},"nodeType":"YulFunctionCall","src":"2687:23:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"product","nodeType":"YulIdentifier","src":"2724:7:56"},{"kind":"number","nodeType":"YulLiteral","src":"2733:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2720:3:56"},"nodeType":"YulFunctionCall","src":"2720:15:56"},{"name":"ONE","nodeType":"YulIdentifier","src":"2737:3:56"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"2716:3:56"},"nodeType":"YulFunctionCall","src":"2716:25:56"},{"kind":"number","nodeType":"YulLiteral","src":"2743:1:56","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2712:3:56"},"nodeType":"YulFunctionCall","src":"2712:33:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2683:3:56"},"nodeType":"YulFunctionCall","src":"2683:63:56"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2673:6:56"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4922,"isOffset":false,"isSlot":false,"src":"2737:3:56","valueSize":1},{"declaration":5034,"isOffset":false,"isSlot":false,"src":"2701:7:56","valueSize":1},{"declaration":5034,"isOffset":false,"isSlot":false,"src":"2724:7:56","valueSize":1},{"declaration":5031,"isOffset":false,"isSlot":false,"src":"2673:6:56","valueSize":1}],"id":5053,"nodeType":"InlineAssembly","src":"2650:106:56"}]},"id":5055,"implemented":true,"kind":"function","modifiers":[],"name":"mulUp","nodeType":"FunctionDefinition","parameters":{"id":5029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5026,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5055,"src":"2063:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5025,"name":"uint256","nodeType":"ElementaryTypeName","src":"2063:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5028,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5055,"src":"2074:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5027,"name":"uint256","nodeType":"ElementaryTypeName","src":"2074:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:22:56"},"returnParameters":{"id":5032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5031,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5055,"src":"2108:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5030,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2107:16:56"},"scope":5293,"src":"2048:714:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5096,"nodeType":"Block","src":"2839:211:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5065,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5059,"src":"2858:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2863:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2858:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5068,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2866:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1382,"src":"2866:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5064,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2849:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2849:38:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5071,"nodeType":"ExpressionStatement","src":"2849:38:56"},{"assignments":[5073],"declarations":[{"constant":false,"id":5073,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":5096,"src":"2898:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5072,"name":"uint256","nodeType":"ElementaryTypeName","src":"2898:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5077,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5074,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"2918:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5075,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"2922:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2918:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2898:27:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"2944:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2949:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2944:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5082,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"2954:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5083,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5057,"src":"2966:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5085,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"2971:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2954:20:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2944:30:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5088,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2976:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1385,"src":"2976:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5078,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2935:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2935:61:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5091,"nodeType":"ExpressionStatement","src":"2935:61:56"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5092,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5073,"src":"3030:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5093,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5059,"src":"3042:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3030:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5063,"id":5095,"nodeType":"Return","src":"3023:20:56"}]},"id":5097,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":5060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5057,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5097,"src":"2785:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5056,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5059,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5097,"src":"2796:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5058,"name":"uint256","nodeType":"ElementaryTypeName","src":"2796:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2784:22:56"},"returnParameters":{"id":5063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5097,"src":"2830:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5061,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:9:56"},"scope":5293,"src":"2768:282:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5135,"nodeType":"Block","src":"3132:703:56","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5107,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5101,"src":"3151:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":5108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3156:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3151:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5110,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3159:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1382,"src":"3159:20:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5106,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3142:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3142:38:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5113,"nodeType":"ExpressionStatement","src":"3142:38:56"},{"assignments":[5115],"declarations":[{"constant":false,"id":5115,"mutability":"mutable","name":"aInflated","nodeType":"VariableDeclaration","scope":5135,"src":"3191:17:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5119,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5116,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5099,"src":"3211:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5117,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"3215:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3211:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3191:27:56"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5121,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5099,"src":"3237:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3237:6:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5124,"name":"aInflated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"3247:9:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5125,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5099,"src":"3259:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:13:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5127,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"3264:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3247:20:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3237:30:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5130,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3269:6:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"DIV_INTERNAL","nodeType":"MemberAccess","referencedDeclaration":1385,"src":"3269:19:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5120,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3228:8:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:61:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5133,"nodeType":"ExpressionStatement","src":"3228:61:56"},{"AST":{"nodeType":"YulBlock","src":"3730:99:56","statements":[{"nodeType":"YulAssignment","src":"3744:75:56","value":{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3772:9:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3765:6:56"},"nodeType":"YulFunctionCall","src":"3765:17:56"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3758:6:56"},"nodeType":"YulFunctionCall","src":"3758:25:56"},{"arguments":[{"arguments":[{"arguments":[{"name":"aInflated","nodeType":"YulIdentifier","src":"3797:9:56"},{"kind":"number","nodeType":"YulLiteral","src":"3808:1:56","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3793:3:56"},"nodeType":"YulFunctionCall","src":"3793:17:56"},{"name":"b","nodeType":"YulIdentifier","src":"3812:1:56"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3789:3:56"},"nodeType":"YulFunctionCall","src":"3789:25:56"},{"kind":"number","nodeType":"YulLiteral","src":"3816:1:56","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:56"},"nodeType":"YulFunctionCall","src":"3785:33:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3754:3:56"},"nodeType":"YulFunctionCall","src":"3754:65:56"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3744:6:56"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":5115,"isOffset":false,"isSlot":false,"src":"3772:9:56","valueSize":1},{"declaration":5115,"isOffset":false,"isSlot":false,"src":"3797:9:56","valueSize":1},{"declaration":5101,"isOffset":false,"isSlot":false,"src":"3812:1:56","valueSize":1},{"declaration":5104,"isOffset":false,"isSlot":false,"src":"3744:6:56","valueSize":1}],"id":5134,"nodeType":"InlineAssembly","src":"3721:108:56"}]},"id":5136,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":5102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5099,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":5136,"src":"3071:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5098,"name":"uint256","nodeType":"ElementaryTypeName","src":"3071:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5101,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":5136,"src":"3082:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5100,"name":"uint256","nodeType":"ElementaryTypeName","src":"3082:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3070:22:56"},"returnParameters":{"id":5105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5104,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5136,"src":"3116:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5103,"name":"uint256","nodeType":"ElementaryTypeName","src":"3116:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3115:16:56"},"scope":5293,"src":"3056:779:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5212,"nodeType":"Block","src":"4138:681:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5146,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"4306:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5147,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"4311:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4306:8:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5152,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"4359:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5153,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"4364:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4359:8:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5161,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"4424:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5162,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"4429:4:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4424:9:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5208,"nodeType":"Block","src":"4540:273:56","statements":[{"assignments":[5178],"declarations":[{"constant":false,"id":5178,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":5208,"src":"4554:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5177,"name":"uint256","nodeType":"ElementaryTypeName","src":"4554:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5184,"initialValue":{"arguments":[{"id":5181,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"4583:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5182,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5141,"src":"4586:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5179,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6591,"src":"4568:10:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$6591_$","typeString":"type(library LogExpMath)"}},"id":5180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":5535,"src":"4568:14:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4568:20:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4554:34:56"},{"assignments":[5186],"declarations":[{"constant":false,"id":5186,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":5208,"src":"4602:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5185,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5194,"initialValue":{"arguments":[{"arguments":[{"id":5189,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5178,"src":"4631:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5190,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"4636:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5188,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"4625:5:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4625:34:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":5192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4661:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":5187,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4964,"src":"4621:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4621:42:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4602:61:56"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5195,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5178,"src":"4682:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5196,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"4688:8:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4682:14:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5206,"nodeType":"Block","src":"4745:58:56","statements":[{"expression":{"arguments":[{"id":5202,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5178,"src":"4774:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5203,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5186,"src":"4779:8:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5201,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4990,"src":"4770:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4770:18:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5145,"id":5205,"nodeType":"Return","src":"4763:25:56"}]},"id":5207,"nodeType":"IfStatement","src":"4678:125:56","trueBody":{"id":5200,"nodeType":"Block","src":"4698:41:56","statements":[{"expression":{"hexValue":"30","id":5198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4723:1:56","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":5145,"id":5199,"nodeType":"Return","src":"4716:8:56"}]}}]},"id":5209,"nodeType":"IfStatement","src":"4420:393:56","trueBody":{"id":5176,"nodeType":"Block","src":"4435:99:56","statements":[{"assignments":[5165],"declarations":[{"constant":false,"id":5165,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":5176,"src":"4449:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5164,"name":"uint256","nodeType":"ElementaryTypeName","src":"4449:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5170,"initialValue":{"arguments":[{"id":5167,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"4474:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5168,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"4477:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5166,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5024,"src":"4466:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4466:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4449:30:56"},{"expression":{"arguments":[{"id":5172,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5165,"src":"4508:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5173,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5165,"src":"4516:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5171,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5024,"src":"4500:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4500:23:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5145,"id":5175,"nodeType":"Return","src":"4493:30:56"}]}},"id":5210,"nodeType":"IfStatement","src":"4355:458:56","trueBody":{"id":5160,"nodeType":"Block","src":"4369:45:56","statements":[{"expression":{"arguments":[{"id":5156,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"4398:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5157,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"4401:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5155,"name":"mulDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5024,"src":"4390:7:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4390:13:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5145,"id":5159,"nodeType":"Return","src":"4383:20:56"}]}},"id":5211,"nodeType":"IfStatement","src":"4302:511:56","trueBody":{"id":5151,"nodeType":"Block","src":"4316:33:56","statements":[{"expression":{"id":5149,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5139,"src":"4337:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5145,"id":5150,"nodeType":"Return","src":"4330:8:56"}]}}]},"documentation":{"id":5137,"nodeType":"StructuredDocumentation","src":"3841:221:56","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding down. The result is guaranteed to not be above\n the true value (that is, the error function expected - actual is always positive)."},"id":5213,"implemented":true,"kind":"function","modifiers":[],"name":"powDown","nodeType":"FunctionDefinition","parameters":{"id":5142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5139,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5213,"src":"4084:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5138,"name":"uint256","nodeType":"ElementaryTypeName","src":"4084:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5141,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5213,"src":"4095:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5140,"name":"uint256","nodeType":"ElementaryTypeName","src":"4095:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4083:22:56"},"returnParameters":{"id":5145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5144,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5213,"src":"4129:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5143,"name":"uint256","nodeType":"ElementaryTypeName","src":"4129:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4128:9:56"},"scope":5293,"src":"4067:752:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5281,"nodeType":"Block","src":"5118:576:56","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5223,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5218,"src":"5286:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5224,"name":"ONE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4922,"src":"5291:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5286:8:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5229,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5218,"src":"5339:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5230,"name":"TWO","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4927,"src":"5344:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5339:8:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5238,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5218,"src":"5402:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":5239,"name":"FOUR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4932,"src":"5407:4:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5402:9:56","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5277,"nodeType":"Block","src":"5514:174:56","statements":[{"assignments":[5255],"declarations":[{"constant":false,"id":5255,"mutability":"mutable","name":"raw","nodeType":"VariableDeclaration","scope":5277,"src":"5528:11:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5254,"name":"uint256","nodeType":"ElementaryTypeName","src":"5528:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5261,"initialValue":{"arguments":[{"id":5258,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"5557:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5259,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5218,"src":"5560:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":5256,"name":"LogExpMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6591,"src":"5542:10:56","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LogExpMath_$6591_$","typeString":"type(library LogExpMath)"}},"id":5257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pow","nodeType":"MemberAccess","referencedDeclaration":5535,"src":"5542:14:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5260,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5542:20:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5528:34:56"},{"assignments":[5263],"declarations":[{"constant":false,"id":5263,"mutability":"mutable","name":"maxError","nodeType":"VariableDeclaration","scope":5277,"src":"5576:16:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5262,"name":"uint256","nodeType":"ElementaryTypeName","src":"5576:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5271,"initialValue":{"arguments":[{"arguments":[{"id":5266,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5255,"src":"5605:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5267,"name":"MAX_POW_RELATIVE_ERROR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4935,"src":"5610:22:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5265,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"5599:5:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:34:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":5269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5635:1:56","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":5264,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4964,"src":"5595:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5595:42:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5576:61:56"},{"expression":{"arguments":[{"id":5273,"name":"raw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5255,"src":"5663:3:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5274,"name":"maxError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5263,"src":"5668:8:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5272,"name":"add","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4964,"src":"5659:3:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5659:18:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5222,"id":5276,"nodeType":"Return","src":"5652:25:56"}]},"id":5278,"nodeType":"IfStatement","src":"5398:290:56","trueBody":{"id":5253,"nodeType":"Block","src":"5413:95:56","statements":[{"assignments":[5242],"declarations":[{"constant":false,"id":5242,"mutability":"mutable","name":"square","nodeType":"VariableDeclaration","scope":5253,"src":"5427:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5241,"name":"uint256","nodeType":"ElementaryTypeName","src":"5427:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5247,"initialValue":{"arguments":[{"id":5244,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"5450:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5245,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"5453:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5243,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"5444:5:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5444:11:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5427:28:56"},{"expression":{"arguments":[{"id":5249,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"5482:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5250,"name":"square","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5242,"src":"5490:6:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5248,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"5476:5:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5476:21:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5222,"id":5252,"nodeType":"Return","src":"5469:28:56"}]}},"id":5279,"nodeType":"IfStatement","src":"5335:353:56","trueBody":{"id":5237,"nodeType":"Block","src":"5349:43:56","statements":[{"expression":{"arguments":[{"id":5233,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"5376:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":5234,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"5379:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5232,"name":"mulUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5055,"src":"5370:5:56","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":5235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5370:11:56","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5222,"id":5236,"nodeType":"Return","src":"5363:18:56"}]}},"id":5280,"nodeType":"IfStatement","src":"5282:406:56","trueBody":{"id":5228,"nodeType":"Block","src":"5296:33:56","statements":[{"expression":{"id":5226,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5216,"src":"5317:1:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5222,"id":5227,"nodeType":"Return","src":"5310:8:56"}]}}]},"documentation":{"id":5214,"nodeType":"StructuredDocumentation","src":"4825:219:56","text":" @dev Returns x^y, assuming both are fixed point numbers, rounding up. The result is guaranteed to not be below\n the true value (that is, the error function expected - actual is always negative)."},"id":5282,"implemented":true,"kind":"function","modifiers":[],"name":"powUp","nodeType":"FunctionDefinition","parameters":{"id":5219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5216,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5282,"src":"5064:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5215,"name":"uint256","nodeType":"ElementaryTypeName","src":"5064:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5218,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5282,"src":"5075:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5217,"name":"uint256","nodeType":"ElementaryTypeName","src":"5075:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5063:22:56"},"returnParameters":{"id":5222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5221,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5282,"src":"5109:7:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5220,"name":"uint256","nodeType":"ElementaryTypeName","src":"5109:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5108:9:56"},"scope":5293,"src":"5049:645:56","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5291,"nodeType":"Block","src":"6047:160:56","statements":[{"AST":{"nodeType":"YulBlock","src":"6139:62:56","statements":[{"nodeType":"YulAssignment","src":"6153:38:56","value":{"arguments":[{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"6170:1:56"},{"name":"ONE","nodeType":"YulIdentifier","src":"6173:3:56"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"6167:2:56"},"nodeType":"YulFunctionCall","src":"6167:10:56"},{"arguments":[{"name":"ONE","nodeType":"YulIdentifier","src":"6183:3:56"},{"name":"x","nodeType":"YulIdentifier","src":"6188:1:56"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"6179:3:56"},"nodeType":"YulFunctionCall","src":"6179:11:56"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"6163:3:56"},"nodeType":"YulFunctionCall","src":"6163:28:56"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"6153:6:56"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":4922,"isOffset":false,"isSlot":false,"src":"6173:3:56","valueSize":1},{"declaration":4922,"isOffset":false,"isSlot":false,"src":"6183:3:56","valueSize":1},{"declaration":5288,"isOffset":false,"isSlot":false,"src":"6153:6:56","valueSize":1},{"declaration":5285,"isOffset":false,"isSlot":false,"src":"6170:1:56","valueSize":1},{"declaration":5285,"isOffset":false,"isSlot":false,"src":"6188:1:56","valueSize":1}],"id":5290,"nodeType":"InlineAssembly","src":"6130:71:56"}]},"documentation":{"id":5283,"nodeType":"StructuredDocumentation","src":"5700:272:56","text":" @dev Returns the complement of a value (1 - x), capped to 0 if x is larger than 1.\n Useful when computing the complement for values with some level of relative error, as it strips this error and\n prevents intermediate negative values."},"id":5292,"implemented":true,"kind":"function","modifiers":[],"name":"complement","nodeType":"FunctionDefinition","parameters":{"id":5286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5285,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5292,"src":"5997:9:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5997:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5996:11:56"},"returnParameters":{"id":5289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5288,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":5292,"src":"6031:14:56","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5287,"name":"uint256","nodeType":"ElementaryTypeName","src":"6031:7:56","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6030:16:56"},"scope":5293,"src":"5977:230:56","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5294,"src":"888:5321:56"}],"src":"688:5522:56"},"id":56},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol","exportedSymbols":{"LogExpMath":[6591]},"id":6592,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5295,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"1094:23:57"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":5296,"nodeType":"ImportDirective","scope":6592,"sourceUnit":1870,"src":"1119:90:57","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":5297,"nodeType":"StructuredDocumentation","src":"1234:446:57","text":" @dev Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument).\n Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural\n exponentiation and logarithm (where the base is Euler's number).\n @author Fernando Martinelli - @fernandomartinelli\n @author Sergio Yuhjtman - @sergioyuhjtman\n @author Daniel Fernandez - @dmf7z"},"fullyImplemented":true,"id":6591,"linearizedBaseContracts":[6591],"name":"LogExpMath","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":5300,"mutability":"constant","name":"ONE_18","nodeType":"VariableDeclaration","scope":6591,"src":"1961:29:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5298,"name":"int256","nodeType":"ElementaryTypeName","src":"1961:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653138","id":5299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1986:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"internal"},{"constant":true,"id":5303,"mutability":"constant","name":"ONE_20","nodeType":"VariableDeclaration","scope":6591,"src":"2151:29:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5301,"name":"int256","nodeType":"ElementaryTypeName","src":"2151:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653230","id":5302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2176:4:57","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"1e20"},"visibility":"internal"},{"constant":true,"id":5306,"mutability":"constant","name":"ONE_36","nodeType":"VariableDeclaration","scope":6591,"src":"2186:29:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5304,"name":"int256","nodeType":"ElementaryTypeName","src":"2186:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31653336","id":5305,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2211:4:57","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(29 digits omitted)...0000"},"value":"1e36"},"visibility":"internal"},{"constant":true,"id":5309,"mutability":"constant","name":"MAX_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":6591,"src":"2732:45:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5307,"name":"int256","nodeType":"ElementaryTypeName","src":"2732:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313330653138","id":5308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2771:6:57","typeDescriptions":{"typeIdentifier":"t_rational_130000000000000000000_by_1","typeString":"int_const 130000000000000000000"},"value":"130e18"},"visibility":"internal"},{"constant":true,"id":5313,"mutability":"constant","name":"MIN_NATURAL_EXPONENT","nodeType":"VariableDeclaration","scope":6591,"src":"2783:45:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5310,"name":"int256","nodeType":"ElementaryTypeName","src":"2783:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"id":5312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2822:6:57","subExpression":{"hexValue":"3431653138","id":5311,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:5:57","typeDescriptions":{"typeIdentifier":"t_rational_41000000000000000000_by_1","typeString":"int_const 41000000000000000000"},"value":"41e18"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_41000000000000000000_by_1","typeString":"int_const -41000000000000000000"}},"visibility":"internal"},{"constant":true,"id":5318,"mutability":"constant","name":"LN_36_LOWER_BOUND","nodeType":"VariableDeclaration","scope":6591,"src":"2979:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5314,"name":"int256","nodeType":"ElementaryTypeName","src":"2979:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5315,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"3015:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31653137","id":5316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:4:57","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3015:13:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":5323,"mutability":"constant","name":"LN_36_UPPER_BOUND","nodeType":"VariableDeclaration","scope":6591,"src":"3034:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5319,"name":"int256","nodeType":"ElementaryTypeName","src":"3034:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5322,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5320,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"3070:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31653137","id":5321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:4:57","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000_by_1","typeString":"int_const 100000000000000000"},"value":"1e17"},"src":"3070:13:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":true,"id":5333,"mutability":"constant","name":"MILD_EXPONENT_BOUND","nodeType":"VariableDeclaration","scope":6591,"src":"3090:63:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5324,"name":"uint256","nodeType":"ElementaryTypeName","src":"3090:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"},"id":5327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":5325,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3129:1:57","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323534","id":5326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3132:3:57","typeDescriptions":{"typeIdentifier":"t_rational_254_by_1","typeString":"int_const 254"},"value":"254"},"src":"3129:6:57","typeDescriptions":{"typeIdentifier":"t_rational_28948022309329048855892746252171976963317496166410141009864396001978282409984_by_1","typeString":"int_const 2894...(69 digits omitted)...9984"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":5330,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"3146:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3138:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5328,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:57","typeDescriptions":{}}},"id":5331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3138:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3129:24:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":true,"id":5336,"mutability":"constant","name":"x0","nodeType":"VariableDeclaration","scope":6591,"src":"3188:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5334,"name":"int256","nodeType":"ElementaryTypeName","src":"3188:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238303030303030303030303030303030303030","id":5335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3209:21:57","typeDescriptions":{"typeIdentifier":"t_rational_128000000000000000000_by_1","typeString":"int_const 128000000000000000000"},"value":"128000000000000000000"},"visibility":"internal"},{"constant":true,"id":5339,"mutability":"constant","name":"a0","nodeType":"VariableDeclaration","scope":6591,"src":"3244:77:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5337,"name":"int256","nodeType":"ElementaryTypeName","src":"3244:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3338383737303834303539393435393530393232323030303030303030303030303030303030303030303030303030303030303030303030","id":5338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3265:56:57","typeDescriptions":{"typeIdentifier":"t_rational_38877084059945950922200000000000000000000000000000000000_by_1","typeString":"int_const 3887...(48 digits omitted)...0000"},"value":"38877084059945950922200000000000000000000000000000000000"},"visibility":"internal"},{"constant":true,"id":5342,"mutability":"constant","name":"x1","nodeType":"VariableDeclaration","scope":6591,"src":"3352:41:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5340,"name":"int256","nodeType":"ElementaryTypeName","src":"3352:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3634303030303030303030303030303030303030","id":5341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3373:20:57","typeDescriptions":{"typeIdentifier":"t_rational_64000000000000000000_by_1","typeString":"int_const 64000000000000000000"},"value":"64000000000000000000"},"visibility":"internal"},{"constant":true,"id":5345,"mutability":"constant","name":"a1","nodeType":"VariableDeclaration","scope":6591,"src":"3407:49:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5343,"name":"int256","nodeType":"ElementaryTypeName","src":"3407:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323335313439303830383131363136383832393130303030303030","id":5344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3428:28:57","typeDescriptions":{"typeIdentifier":"t_rational_6235149080811616882910000000_by_1","typeString":"int_const 6235149080811616882910000000"},"value":"6235149080811616882910000000"},"visibility":"internal"},{"constant":true,"id":5348,"mutability":"constant","name":"x2","nodeType":"VariableDeclaration","scope":6591,"src":"3516:43:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5346,"name":"int256","nodeType":"ElementaryTypeName","src":"3516:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"33323030303030303030303030303030303030303030","id":5347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3537:22:57","typeDescriptions":{"typeIdentifier":"t_rational_3200000000000000000000_by_1","typeString":"int_const 3200000000000000000000"},"value":"3200000000000000000000"},"visibility":"internal"},{"constant":true,"id":5351,"mutability":"constant","name":"a2","nodeType":"VariableDeclaration","scope":6591,"src":"3573:55:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5349,"name":"int256","nodeType":"ElementaryTypeName","src":"3573:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"37383936323936303138323638303639353136313030303030303030303030303030","id":5350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3594:34:57","typeDescriptions":{"typeIdentifier":"t_rational_7896296018268069516100000000000000_by_1","typeString":"int_const 7896...(26 digits omitted)...0000"},"value":"7896296018268069516100000000000000"},"visibility":"internal"},{"constant":true,"id":5354,"mutability":"constant","name":"x3","nodeType":"VariableDeclaration","scope":6591,"src":"3645:43:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5352,"name":"int256","nodeType":"ElementaryTypeName","src":"3645:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"31363030303030303030303030303030303030303030","id":5353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3666:22:57","typeDescriptions":{"typeIdentifier":"t_rational_1600000000000000000000_by_1","typeString":"int_const 1600000000000000000000"},"value":"1600000000000000000000"},"visibility":"internal"},{"constant":true,"id":5357,"mutability":"constant","name":"a3","nodeType":"VariableDeclaration","scope":6591,"src":"3702:48:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5355,"name":"int256","nodeType":"ElementaryTypeName","src":"3702:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383838363131303532303530373837323633363736303030303030","id":5356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3723:27:57","typeDescriptions":{"typeIdentifier":"t_rational_888611052050787263676000000_by_1","typeString":"int_const 888611052050787263676000000"},"value":"888611052050787263676000000"},"visibility":"internal"},{"constant":true,"id":5360,"mutability":"constant","name":"x4","nodeType":"VariableDeclaration","scope":6591,"src":"3767:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5358,"name":"int256","nodeType":"ElementaryTypeName","src":"3767:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"383030303030303030303030303030303030303030","id":5359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3788:21:57","typeDescriptions":{"typeIdentifier":"t_rational_800000000000000000000_by_1","typeString":"int_const 800000000000000000000"},"value":"800000000000000000000"},"visibility":"internal"},{"constant":true,"id":5363,"mutability":"constant","name":"a4","nodeType":"VariableDeclaration","scope":6591,"src":"3823:45:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5361,"name":"int256","nodeType":"ElementaryTypeName","src":"3823:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323938303935373938373034313732383237343734303030","id":5362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3844:24:57","typeDescriptions":{"typeIdentifier":"t_rational_298095798704172827474000_by_1","typeString":"int_const 298095798704172827474000"},"value":"298095798704172827474000"},"visibility":"internal"},{"constant":true,"id":5366,"mutability":"constant","name":"x5","nodeType":"VariableDeclaration","scope":6591,"src":"3885:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5364,"name":"int256","nodeType":"ElementaryTypeName","src":"3885:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"343030303030303030303030303030303030303030","id":5365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:21:57","typeDescriptions":{"typeIdentifier":"t_rational_400000000000000000000_by_1","typeString":"int_const 400000000000000000000"},"value":"400000000000000000000"},"visibility":"internal"},{"constant":true,"id":5369,"mutability":"constant","name":"a5","nodeType":"VariableDeclaration","scope":6591,"src":"3941:43:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5367,"name":"int256","nodeType":"ElementaryTypeName","src":"3941:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"35343539383135303033333134343233393037383130","id":5368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3962:22:57","typeDescriptions":{"typeIdentifier":"t_rational_5459815003314423907810_by_1","typeString":"int_const 5459815003314423907810"},"value":"5459815003314423907810"},"visibility":"internal"},{"constant":true,"id":5372,"mutability":"constant","name":"x6","nodeType":"VariableDeclaration","scope":6591,"src":"4001:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5370,"name":"int256","nodeType":"ElementaryTypeName","src":"4001:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323030303030303030303030303030303030303030","id":5371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4022:21:57","typeDescriptions":{"typeIdentifier":"t_rational_200000000000000000000_by_1","typeString":"int_const 200000000000000000000"},"value":"200000000000000000000"},"visibility":"internal"},{"constant":true,"id":5375,"mutability":"constant","name":"a6","nodeType":"VariableDeclaration","scope":6591,"src":"4057:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5373,"name":"int256","nodeType":"ElementaryTypeName","src":"4057:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"373338393035363039383933303635303232373233","id":5374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:21:57","typeDescriptions":{"typeIdentifier":"t_rational_738905609893065022723_by_1","typeString":"int_const 738905609893065022723"},"value":"738905609893065022723"},"visibility":"internal"},{"constant":true,"id":5378,"mutability":"constant","name":"x7","nodeType":"VariableDeclaration","scope":6591,"src":"4116:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5376,"name":"int256","nodeType":"ElementaryTypeName","src":"4116:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313030303030303030303030303030303030303030","id":5377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:21:57","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100000000000000000000"},"visibility":"internal"},{"constant":true,"id":5381,"mutability":"constant","name":"a7","nodeType":"VariableDeclaration","scope":6591,"src":"4172:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5379,"name":"int256","nodeType":"ElementaryTypeName","src":"4172:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"323731383238313832383435393034353233353336","id":5380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4193:21:57","typeDescriptions":{"typeIdentifier":"t_rational_271828182845904523536_by_1","typeString":"int_const 271828182845904523536"},"value":"271828182845904523536"},"visibility":"internal"},{"constant":true,"id":5384,"mutability":"constant","name":"x8","nodeType":"VariableDeclaration","scope":6591,"src":"4231:41:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5382,"name":"int256","nodeType":"ElementaryTypeName","src":"4231:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3530303030303030303030303030303030303030","id":5383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4252:20:57","typeDescriptions":{"typeIdentifier":"t_rational_50000000000000000000_by_1","typeString":"int_const 50000000000000000000"},"value":"50000000000000000000"},"visibility":"internal"},{"constant":true,"id":5387,"mutability":"constant","name":"a8","nodeType":"VariableDeclaration","scope":6591,"src":"4287:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5385,"name":"int256","nodeType":"ElementaryTypeName","src":"4287:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313634383732313237303730303132383134363835","id":5386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:21:57","typeDescriptions":{"typeIdentifier":"t_rational_164872127070012814685_by_1","typeString":"int_const 164872127070012814685"},"value":"164872127070012814685"},"visibility":"internal"},{"constant":true,"id":5390,"mutability":"constant","name":"x9","nodeType":"VariableDeclaration","scope":6591,"src":"4346:41:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5388,"name":"int256","nodeType":"ElementaryTypeName","src":"4346:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3235303030303030303030303030303030303030","id":5389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4367:20:57","typeDescriptions":{"typeIdentifier":"t_rational_25000000000000000000_by_1","typeString":"int_const 25000000000000000000"},"value":"25000000000000000000"},"visibility":"internal"},{"constant":true,"id":5393,"mutability":"constant","name":"a9","nodeType":"VariableDeclaration","scope":6591,"src":"4402:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5391,"name":"int256","nodeType":"ElementaryTypeName","src":"4402:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313238343032353431363638373734313438343037","id":5392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4423:21:57","typeDescriptions":{"typeIdentifier":"t_rational_128402541668774148407_by_1","typeString":"int_const 128402541668774148407"},"value":"128402541668774148407"},"visibility":"internal"},{"constant":true,"id":5396,"mutability":"constant","name":"x10","nodeType":"VariableDeclaration","scope":6591,"src":"4461:42:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5394,"name":"int256","nodeType":"ElementaryTypeName","src":"4461:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"3132353030303030303030303030303030303030","id":5395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4483:20:57","typeDescriptions":{"typeIdentifier":"t_rational_12500000000000000000_by_1","typeString":"int_const 12500000000000000000"},"value":"12500000000000000000"},"visibility":"internal"},{"constant":true,"id":5399,"mutability":"constant","name":"a10","nodeType":"VariableDeclaration","scope":6591,"src":"4518:43:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5397,"name":"int256","nodeType":"ElementaryTypeName","src":"4518:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313133333134383435333036363832363331363833","id":5398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4540:21:57","typeDescriptions":{"typeIdentifier":"t_rational_113314845306682631683_by_1","typeString":"int_const 113314845306682631683"},"value":"113314845306682631683"},"visibility":"internal"},{"constant":true,"id":5402,"mutability":"constant","name":"x11","nodeType":"VariableDeclaration","scope":6591,"src":"4579:41:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5400,"name":"int256","nodeType":"ElementaryTypeName","src":"4579:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"36323530303030303030303030303030303030","id":5401,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4601:19:57","typeDescriptions":{"typeIdentifier":"t_rational_6250000000000000000_by_1","typeString":"int_const 6250000000000000000"},"value":"6250000000000000000"},"visibility":"internal"},{"constant":true,"id":5405,"mutability":"constant","name":"a11","nodeType":"VariableDeclaration","scope":6591,"src":"4635:43:57","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5403,"name":"int256","nodeType":"ElementaryTypeName","src":"4635:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":{"hexValue":"313036343439343435383931373835393432393536","id":5404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4657:21:57","typeDescriptions":{"typeIdentifier":"t_rational_106449445891785942956_by_1","typeString":"int_const 106449445891785942956"},"value":"106449445891785942956"},"visibility":"internal"},{"body":{"id":5534,"nodeType":"Block","src":"4983:2128:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5415,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"4997:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5416,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5002:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4997:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5424,"nodeType":"IfStatement","src":"4993:131:57","trueBody":{"id":5423,"nodeType":"Block","src":"5005:119:57","statements":[{"expression":{"arguments":[{"id":5420,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"5106:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5098:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5418,"name":"uint256","nodeType":"ElementaryTypeName","src":"5098:7:57","typeDescriptions":{}}},"id":5421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5098:15:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5414,"id":5422,"nodeType":"Return","src":"5091:22:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5425,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5138:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5143:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5138:6:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5431,"nodeType":"IfStatement","src":"5134:45:57","trueBody":{"id":5430,"nodeType":"Block","src":"5146:33:57","statements":[{"expression":{"hexValue":"30","id":5428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5167:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":5414,"id":5429,"nodeType":"Return","src":"5160:8:57"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5433,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5558:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":5434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5563:3:57","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"5558:8:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":5436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5570:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5558:13:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5438,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5573:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"X_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1388,"src":"5573:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5432,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"5549:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5549:47:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5441,"nodeType":"ExpressionStatement","src":"5549:47:57"},{"assignments":[5443],"declarations":[{"constant":false,"id":5443,"mutability":"mutable","name":"x_int256","nodeType":"VariableDeclaration","scope":5534,"src":"5606:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5442,"name":"int256","nodeType":"ElementaryTypeName","src":"5606:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5448,"initialValue":{"arguments":[{"id":5446,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5408,"src":"5631:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5445,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5624:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5444,"name":"int256","nodeType":"ElementaryTypeName","src":"5624:6:57","typeDescriptions":{}}},"id":5447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5624:9:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"5606:27:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5450,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"5996:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5451,"name":"MILD_EXPONENT_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5333,"src":"6000:19:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5996:23:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5453,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"6021:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Y_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1391,"src":"6021:22:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5449,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"5987:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5987:57:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5456,"nodeType":"ExpressionStatement","src":"5987:57:57"},{"assignments":[5458],"declarations":[{"constant":false,"id":5458,"mutability":"mutable","name":"y_int256","nodeType":"VariableDeclaration","scope":5534,"src":"6054:15:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5457,"name":"int256","nodeType":"ElementaryTypeName","src":"6054:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5463,"initialValue":{"arguments":[{"id":5461,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5410,"src":"6079:1:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5460,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6072:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":5459,"name":"int256","nodeType":"ElementaryTypeName","src":"6072:6:57","typeDescriptions":{}}},"id":5462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6072:9:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6054:27:57"},{"assignments":[5465],"declarations":[{"constant":false,"id":5465,"mutability":"mutable","name":"logx_times_y","nodeType":"VariableDeclaration","scope":5534,"src":"6092:19:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5464,"name":"int256","nodeType":"ElementaryTypeName","src":"6092:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5466,"nodeType":"VariableDeclarationStatement","src":"6092:19:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5467,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5318,"src":"6125:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5468,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"6145:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6125:28:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5470,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"6157:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5471,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5323,"src":"6168:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6157:28:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6125:60:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5509,"nodeType":"Block","src":"6741:64:57","statements":[{"expression":{"id":5507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5501,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"6755:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5503,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"6774:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5502,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"6770:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6770:13:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5505,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"6786:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6770:24:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6755:39:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5508,"nodeType":"ExpressionStatement","src":"6755:39:57"}]},"id":5510,"nodeType":"IfStatement","src":"6121:684:57","trueBody":{"id":5500,"nodeType":"Block","src":"6187:548:57","statements":[{"assignments":[5475],"declarations":[{"constant":false,"id":5475,"mutability":"mutable","name":"ln_36_x","nodeType":"VariableDeclaration","scope":5500,"src":"6201:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5474,"name":"int256","nodeType":"ElementaryTypeName","src":"6201:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5479,"initialValue":{"arguments":[{"id":5477,"name":"x_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5443,"src":"6225:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5476,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6590,"src":"6218:6:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6218:16:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"6201:33:57"},{"expression":{"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5480,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"6635:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5481,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5475,"src":"6652:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5482,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"6662:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6652:16:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5484,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6651:18:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5485,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"6672:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:29:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5487,"name":"ln_36_x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5475,"src":"6685:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":5488,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"6695:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6685:16:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6684:18:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5491,"name":"y_int256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5458,"src":"6705:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6684:29:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5493,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6683:31:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5494,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"6717:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6683:40:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6651:72:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6650:74:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6635:89:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5499,"nodeType":"ExpressionStatement","src":"6635:89:57"}]}},{"expression":{"id":5513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5511,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"6814:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":5512,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"6830:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6814:22:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5514,"nodeType":"ExpressionStatement","src":"6814:22:57"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5516,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5313,"src":"6932:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5517,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"6956:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6932:36:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5519,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"6972:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5520,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5309,"src":"6988:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"6972:36:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6932:76:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5523,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"7022:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"PRODUCT_OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1394,"src":"7022:28:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5515,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"6910:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6910:150:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5526,"nodeType":"ExpressionStatement","src":"6910:150:57"},{"expression":{"arguments":[{"arguments":[{"id":5530,"name":"logx_times_y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5465,"src":"7090:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5529,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"7086:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7086:17:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7078:7:57","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5527,"name":"uint256","nodeType":"ElementaryTypeName","src":"7078:7:57","typeDescriptions":{}}},"id":5532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7078:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5414,"id":5533,"nodeType":"Return","src":"7071:33:57"}]},"documentation":{"id":5406,"nodeType":"StructuredDocumentation","src":"4697:214:57","text":" @dev Exponentiation (x^y) with unsigned 18 decimal fixed point base and exponent.\n Reverts if ln(x) * y is smaller than `MIN_NATURAL_EXPONENT`, or larger than `MAX_NATURAL_EXPONENT`."},"id":5535,"implemented":true,"kind":"function","modifiers":[],"name":"pow","nodeType":"FunctionDefinition","parameters":{"id":5411,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5408,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5535,"src":"4929:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5407,"name":"uint256","nodeType":"ElementaryTypeName","src":"4929:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5410,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","scope":5535,"src":"4940:9:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5409,"name":"uint256","nodeType":"ElementaryTypeName","src":"4940:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4928:22:57"},"returnParameters":{"id":5414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5413,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5535,"src":"4974:7:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5412,"name":"uint256","nodeType":"ElementaryTypeName","src":"4974:7:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4973:9:57"},"scope":6591,"src":"4916:2195:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5961,"nodeType":"Block","src":"7379:5325:57","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5544,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"7398:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5545,"name":"MIN_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5313,"src":"7403:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7398:25:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5547,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"7427:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":5548,"name":"MAX_NATURAL_EXPONENT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5309,"src":"7432:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7427:25:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7398:54:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":5551,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"7454:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":5552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_EXPONENT","nodeType":"MemberAccess","referencedDeclaration":1397,"src":"7454:23:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5543,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"7389:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":5553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7389:89:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5554,"nodeType":"ExpressionStatement","src":"7389:89:57"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5555,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"7493:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":5556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7497:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7493:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5570,"nodeType":"IfStatement","src":"7489:353:57","trueBody":{"id":5569,"nodeType":"Block","src":"7500:342:57","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":5558,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"7804:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5559,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"7813:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7804:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5561,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7803:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":5564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7827:2:57","subExpression":{"id":5563,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"7828:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5562,"name":"exp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"7823:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:7:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7803:27:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5567,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7802:29:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5542,"id":5568,"nodeType":"Return","src":"7795:36:57"}]}},{"assignments":[5572],"declarations":[{"constant":false,"id":5572,"mutability":"mutable","name":"firstAN","nodeType":"VariableDeclaration","scope":5961,"src":"9143:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5571,"name":"int256","nodeType":"ElementaryTypeName","src":"9143:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5573,"nodeType":"VariableDeclarationStatement","src":"9143:14:57"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5574,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9171:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5575,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5336,"src":"9176:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9171:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5586,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9248:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5587,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5342,"src":"9253:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9248:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5602,"nodeType":"Block","src":"9321:66:57","statements":[{"expression":{"id":5600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5598,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"9335:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":5599,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9345:1:57","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9335:11:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5601,"nodeType":"ExpressionStatement","src":"9335:11:57"}]},"id":5603,"nodeType":"IfStatement","src":"9244:143:57","trueBody":{"id":5597,"nodeType":"Block","src":"9257:58:57","statements":[{"expression":{"id":5591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5589,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9271:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5590,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5342,"src":"9276:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9271:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5592,"nodeType":"ExpressionStatement","src":"9271:7:57"},{"expression":{"id":5595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5593,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"9292:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5594,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"9302:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9292:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5596,"nodeType":"ExpressionStatement","src":"9292:12:57"}]}},"id":5604,"nodeType":"IfStatement","src":"9167:220:57","trueBody":{"id":5585,"nodeType":"Block","src":"9180:58:57","statements":[{"expression":{"id":5579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5577,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9194:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5578,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5336,"src":"9199:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9194:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5580,"nodeType":"ExpressionStatement","src":"9194:7:57"},{"expression":{"id":5583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5581,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"9215:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5582,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"9225:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9215:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5584,"nodeType":"ExpressionStatement","src":"9215:12:57"}]}},{"expression":{"id":5607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5605,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9537:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":5606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9542:3:57","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"9537:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5608,"nodeType":"ExpressionStatement","src":"9537:8:57"},{"assignments":[5610],"declarations":[{"constant":false,"id":5610,"mutability":"mutable","name":"product","nodeType":"VariableDeclaration","scope":5961,"src":"9758:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5609,"name":"int256","nodeType":"ElementaryTypeName","src":"9758:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5612,"initialValue":{"id":5611,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"9775:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"9758:23:57"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5613,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9796:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5614,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"9801:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9796:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5630,"nodeType":"IfStatement","src":"9792:92:57","trueBody":{"id":5629,"nodeType":"Block","src":"9805:79:57","statements":[{"expression":{"id":5618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5616,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9819:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5617,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"9824:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9819:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5619,"nodeType":"ExpressionStatement","src":"9819:7:57"},{"expression":{"id":5627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5620,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"9840:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5621,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"9851:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5622,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5351,"src":"9861:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9851:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5624,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9850:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5625,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"9867:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9850:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9840:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5628,"nodeType":"ExpressionStatement","src":"9840:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5631,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9897:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5632,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"9902:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9897:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5648,"nodeType":"IfStatement","src":"9893:92:57","trueBody":{"id":5647,"nodeType":"Block","src":"9906:79:57","statements":[{"expression":{"id":5636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5634,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9920:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5635,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"9925:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9920:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5637,"nodeType":"ExpressionStatement","src":"9920:7:57"},{"expression":{"id":5645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5638,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"9941:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5639,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"9952:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5640,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5357,"src":"9962:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9952:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5642,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9951:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5643,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"9968:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9951:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9941:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5646,"nodeType":"ExpressionStatement","src":"9941:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5649,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"9998:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5650,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"10003:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"9998:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5666,"nodeType":"IfStatement","src":"9994:92:57","trueBody":{"id":5665,"nodeType":"Block","src":"10007:79:57","statements":[{"expression":{"id":5654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5652,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10021:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5653,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"10026:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10021:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5655,"nodeType":"ExpressionStatement","src":"10021:7:57"},{"expression":{"id":5663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5656,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10042:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5657,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10053:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5658,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"10063:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10053:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10052:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5661,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10069:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10052:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10042:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5664,"nodeType":"ExpressionStatement","src":"10042:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5667,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10099:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5668,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"10104:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10099:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5684,"nodeType":"IfStatement","src":"10095:92:57","trueBody":{"id":5683,"nodeType":"Block","src":"10108:79:57","statements":[{"expression":{"id":5672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5670,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10122:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5671,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"10127:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10122:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5673,"nodeType":"ExpressionStatement","src":"10122:7:57"},{"expression":{"id":5681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5674,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10143:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5675,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10154:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5676,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5369,"src":"10164:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10154:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5678,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10153:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5679,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10170:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10153:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10143:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5682,"nodeType":"ExpressionStatement","src":"10143:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5685,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10200:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5686,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"10205:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10200:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5702,"nodeType":"IfStatement","src":"10196:92:57","trueBody":{"id":5701,"nodeType":"Block","src":"10209:79:57","statements":[{"expression":{"id":5690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5688,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10223:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5689,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"10228:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10223:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5691,"nodeType":"ExpressionStatement","src":"10223:7:57"},{"expression":{"id":5699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5692,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10244:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5693,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10255:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5694,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"10265:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10255:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5696,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10254:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5697,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10271:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10254:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10244:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5700,"nodeType":"ExpressionStatement","src":"10244:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5703,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10301:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5704,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"10306:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10301:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5720,"nodeType":"IfStatement","src":"10297:92:57","trueBody":{"id":5719,"nodeType":"Block","src":"10310:79:57","statements":[{"expression":{"id":5708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5706,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10324:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5707,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"10329:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10324:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5709,"nodeType":"ExpressionStatement","src":"10324:7:57"},{"expression":{"id":5717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5710,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10345:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5711,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10356:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5712,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5381,"src":"10366:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10356:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5714,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10355:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5715,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10372:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10355:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10345:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5718,"nodeType":"ExpressionStatement","src":"10345:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5721,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10402:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5722,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"10407:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10402:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5738,"nodeType":"IfStatement","src":"10398:92:57","trueBody":{"id":5737,"nodeType":"Block","src":"10411:79:57","statements":[{"expression":{"id":5726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5724,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10425:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5725,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"10430:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10425:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5727,"nodeType":"ExpressionStatement","src":"10425:7:57"},{"expression":{"id":5735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5728,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10446:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5729,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10457:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5730,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5387,"src":"10467:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10457:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10456:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5733,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10473:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10456:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10446:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5736,"nodeType":"ExpressionStatement","src":"10446:33:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5739,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10503:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":5740,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5390,"src":"10508:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10503:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5756,"nodeType":"IfStatement","src":"10499:92:57","trueBody":{"id":5755,"nodeType":"Block","src":"10512:79:57","statements":[{"expression":{"id":5744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5742,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"10526:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":5743,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5390,"src":"10531:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10526:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5745,"nodeType":"ExpressionStatement","src":"10526:7:57"},{"expression":{"id":5753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5746,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10547:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5747,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"10558:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5748,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"10568:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10558:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5750,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10557:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5751,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10574:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10557:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"10547:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5754,"nodeType":"ExpressionStatement","src":"10547:33:57"}]}},{"assignments":[5758],"declarations":[{"constant":false,"id":5758,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":5961,"src":"10895:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5757,"name":"int256","nodeType":"ElementaryTypeName","src":"10895:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5760,"initialValue":{"id":5759,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"10914:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"10895:25:57"},{"assignments":[5762],"declarations":[{"constant":false,"id":5762,"mutability":"mutable","name":"term","nodeType":"VariableDeclaration","scope":5961,"src":"10985:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5761,"name":"int256","nodeType":"ElementaryTypeName","src":"10985:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5763,"nodeType":"VariableDeclarationStatement","src":"10985:11:57"},{"expression":{"id":5766,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5764,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11105:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":5765,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11112:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11105:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5767,"nodeType":"ExpressionStatement","src":"11105:8:57"},{"expression":{"id":5770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5768,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11123:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5769,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11136:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11123:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5771,"nodeType":"ExpressionStatement","src":"11123:17:57"},{"expression":{"id":5782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5772,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11377:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5773,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11386:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5774,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11393:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11386:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11385:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5777,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11398:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11385:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5779,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11384:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":5780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11408:1:57","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11384:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11377:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5783,"nodeType":"ExpressionStatement","src":"11377:32:57"},{"expression":{"id":5786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5784,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11419:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5785,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11432:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11419:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5787,"nodeType":"ExpressionStatement","src":"11419:17:57"},{"expression":{"id":5798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5788,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11447:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5789,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11456:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5790,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11463:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11456:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5792,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11455:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5793,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11468:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11455:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5795,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11454:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":5796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11478:1:57","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11454:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11447:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5799,"nodeType":"ExpressionStatement","src":"11447:32:57"},{"expression":{"id":5802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5800,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11489:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5801,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11502:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11489:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5803,"nodeType":"ExpressionStatement","src":"11489:17:57"},{"expression":{"id":5814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5804,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11517:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5805,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11526:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5806,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11533:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11526:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5808,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11525:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5809,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11538:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11525:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11524:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"34","id":5812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11548:1:57","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11524:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11517:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5815,"nodeType":"ExpressionStatement","src":"11517:32:57"},{"expression":{"id":5818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5816,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11559:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5817,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11572:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11559:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5819,"nodeType":"ExpressionStatement","src":"11559:17:57"},{"expression":{"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5820,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11587:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5821,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11596:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5822,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11603:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11596:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11595:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5825,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11608:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11595:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5827,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11594:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":5828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11618:1:57","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"11594:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11587:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5831,"nodeType":"ExpressionStatement","src":"11587:32:57"},{"expression":{"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5832,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11629:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5833,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11642:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11629:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5835,"nodeType":"ExpressionStatement","src":"11629:17:57"},{"expression":{"id":5846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5836,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11657:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5837,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11666:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5838,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11673:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11666:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5840,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11665:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5841,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11678:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11665:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5843,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11664:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"36","id":5844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11688:1:57","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"11664:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11657:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5847,"nodeType":"ExpressionStatement","src":"11657:32:57"},{"expression":{"id":5850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5848,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11699:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5849,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11712:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11699:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5851,"nodeType":"ExpressionStatement","src":"11699:17:57"},{"expression":{"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5852,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11727:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5853,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11736:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5854,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11743:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11736:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5856,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11735:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5857,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11748:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11735:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11734:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":5860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11758:1:57","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"11734:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11727:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5863,"nodeType":"ExpressionStatement","src":"11727:32:57"},{"expression":{"id":5866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5864,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11769:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5865,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11782:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11769:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5867,"nodeType":"ExpressionStatement","src":"11769:17:57"},{"expression":{"id":5878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5868,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11797:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5869,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11806:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5870,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11813:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11806:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5872,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11805:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5873,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11818:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11805:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5875,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11804:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"38","id":5876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11828:1:57","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11804:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11797:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5879,"nodeType":"ExpressionStatement","src":"11797:32:57"},{"expression":{"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5880,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11839:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5881,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11852:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11839:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5883,"nodeType":"ExpressionStatement","src":"11839:17:57"},{"expression":{"id":5894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5884,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11867:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5885,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11876:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5886,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11883:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11876:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11875:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5889,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11888:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11875:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5891,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11874:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":5892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11898:1:57","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"11874:25:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11867:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5895,"nodeType":"ExpressionStatement","src":"11867:32:57"},{"expression":{"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5896,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11909:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5897,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11922:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11909:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5899,"nodeType":"ExpressionStatement","src":"11909:17:57"},{"expression":{"id":5910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5900,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11937:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5901,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11946:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5902,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"11953:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11946:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11945:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5905,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"11958:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11945:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5907,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11944:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":5908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11968:2:57","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"11944:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11937:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5911,"nodeType":"ExpressionStatement","src":"11937:33:57"},{"expression":{"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5912,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"11980:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5913,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"11993:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"11980:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5915,"nodeType":"ExpressionStatement","src":"11980:17:57"},{"expression":{"id":5926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5916,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"12008:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5917,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"12017:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5918,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"12024:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12017:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5920,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12016:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5921,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"12029:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12016:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5923,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12015:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":5924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12039:2:57","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"12015:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12008:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5927,"nodeType":"ExpressionStatement","src":"12008:33:57"},{"expression":{"id":5930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5928,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"12051:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5929,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"12064:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12051:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5931,"nodeType":"ExpressionStatement","src":"12051:17:57"},{"expression":{"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5932,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"12079:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5933,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"12088:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5934,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5538,"src":"12095:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12088:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5936,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12087:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5937,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"12100:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12087:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5939,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12086:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3132","id":5940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12110:2:57","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"src":"12086:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12079:33:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5943,"nodeType":"ExpressionStatement","src":"12079:33:57"},{"expression":{"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5944,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"12122:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":5945,"name":"term","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5762,"src":"12135:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12122:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5947,"nodeType":"ExpressionStatement","src":"12122:17:57"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5948,"name":"product","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5610,"src":"12650:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5949,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5758,"src":"12660:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12650:19:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5951,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12649:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":5952,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"12673:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12649:30:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5954,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12648:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5955,"name":"firstAN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5572,"src":"12683:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"12648:42:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":5957,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12647:44:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":5958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12694:3:57","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"12647:50:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5542,"id":5960,"nodeType":"Return","src":"12640:57:57"}]},"documentation":{"id":5536,"nodeType":"StructuredDocumentation","src":"7117:203:57","text":" @dev Natural exponentiation (e^x) with signed 18 decimal fixed point exponent.\n Reverts if `x` is smaller than MIN_NATURAL_EXPONENT, or larger than `MAX_NATURAL_EXPONENT`."},"id":5962,"implemented":true,"kind":"function","modifiers":[],"name":"exp","nodeType":"FunctionDefinition","parameters":{"id":5539,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5538,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":5962,"src":"7338:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5537,"name":"int256","nodeType":"ElementaryTypeName","src":"7338:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7337:10:57"},"returnParameters":{"id":5542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5541,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":5962,"src":"7371:6:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5540,"name":"int256","nodeType":"ElementaryTypeName","src":"7371:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7370:8:57"},"scope":6591,"src":"7325:5379:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6033,"nodeType":"Block","src":"12888:753:57","statements":[{"assignments":[5973],"declarations":[{"constant":false,"id":5973,"mutability":"mutable","name":"logBase","nodeType":"VariableDeclaration","scope":6033,"src":"13118:14:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5972,"name":"int256","nodeType":"ElementaryTypeName","src":"13118:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":5974,"nodeType":"VariableDeclarationStatement","src":"13118:14:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5975,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5318,"src":"13146:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5976,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"13166:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13146:24:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5978,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"13174:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5979,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5323,"src":"13181:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13174:24:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13146:52:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5997,"nodeType":"Block","src":"13253:53:57","statements":[{"expression":{"id":5995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5989,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"13267:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5991,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"13281:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5990,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"13277:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13277:9:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":5993,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"13289:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13277:18:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13267:28:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5996,"nodeType":"ExpressionStatement","src":"13267:28:57"}]},"id":5998,"nodeType":"IfStatement","src":"13142:164:57","trueBody":{"id":5988,"nodeType":"Block","src":"13200:47:57","statements":[{"expression":{"id":5986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5982,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"13214:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":5984,"name":"base","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5967,"src":"13231:4:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":5983,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6590,"src":"13224:6:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":5985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13224:12:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13214:22:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":5987,"nodeType":"ExpressionStatement","src":"13214:22:57"}]}},{"assignments":[6000],"declarations":[{"constant":false,"id":6000,"mutability":"mutable","name":"logArg","nodeType":"VariableDeclaration","scope":6033,"src":"13316:13:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5999,"name":"int256","nodeType":"ElementaryTypeName","src":"13316:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6001,"nodeType":"VariableDeclarationStatement","src":"13316:13:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6002,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5318,"src":"13343:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6003,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5965,"src":"13363:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13343:23:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6005,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5965,"src":"13370:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6006,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5323,"src":"13376:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13370:23:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13343:50:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6024,"nodeType":"Block","src":"13446:51:57","statements":[{"expression":{"id":6022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6016,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"13460:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6018,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5965,"src":"13473:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6017,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"13469:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13469:8:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6020,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"13480:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13469:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13460:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6023,"nodeType":"ExpressionStatement","src":"13460:26:57"}]},"id":6025,"nodeType":"IfStatement","src":"13339:158:57","trueBody":{"id":6015,"nodeType":"Block","src":"13395:45:57","statements":[{"expression":{"id":6013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6009,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"13409:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6011,"name":"arg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5965,"src":"13425:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6010,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6590,"src":"13418:6:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13418:11:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13409:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6014,"nodeType":"ExpressionStatement","src":"13409:20:57"}]}},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6026,"name":"logArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"13608:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6027,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"13617:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13608:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6029,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13607:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6030,"name":"logBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5973,"src":"13627:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13607:27:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":5971,"id":6032,"nodeType":"Return","src":"13600:34:57"}]},"documentation":{"id":5963,"nodeType":"StructuredDocumentation","src":"12710:104:57","text":" @dev Logarithm (log(arg, base), with signed 18 decimal fixed point base and argument."},"id":6034,"implemented":true,"kind":"function","modifiers":[],"name":"log","nodeType":"FunctionDefinition","parameters":{"id":5968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5965,"mutability":"mutable","name":"arg","nodeType":"VariableDeclaration","scope":6034,"src":"12832:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5964,"name":"int256","nodeType":"ElementaryTypeName","src":"12832:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":5967,"mutability":"mutable","name":"base","nodeType":"VariableDeclaration","scope":6034,"src":"12844:11:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5966,"name":"int256","nodeType":"ElementaryTypeName","src":"12844:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12831:25:57"},"returnParameters":{"id":5971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5970,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6034,"src":"12880:6:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5969,"name":"int256","nodeType":"ElementaryTypeName","src":"12880:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"12879:8:57"},"scope":6591,"src":"12819:822:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6070,"nodeType":"Block","src":"13799:292:57","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6043,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"13901:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6044,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13905:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13901:5:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6046,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"13908:6:57","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1400,"src":"13908:20:57","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6042,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"13892:8:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13892:37:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6049,"nodeType":"ExpressionStatement","src":"13892:37:57"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6050,"name":"LN_36_LOWER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5318,"src":"13943:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6051,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"13963:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13943:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6053,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"13968:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6054,"name":"LN_36_UPPER_BOUND","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5323,"src":"13972:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"13968:21:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13943:46:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6068,"nodeType":"Block","src":"14047:38:57","statements":[{"expression":{"arguments":[{"id":6065,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"14072:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6064,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"14068:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14068:6:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6041,"id":6067,"nodeType":"Return","src":"14061:13:57"}]},"id":6069,"nodeType":"IfStatement","src":"13939:146:57","trueBody":{"id":6063,"nodeType":"Block","src":"13991:50:57","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":6058,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6037,"src":"14019:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6057,"name":"_ln_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6590,"src":"14012:6:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14012:9:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6060,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"14024:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14012:18:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6041,"id":6062,"nodeType":"Return","src":"14005:25:57"}]}}]},"documentation":{"id":6035,"nodeType":"StructuredDocumentation","src":"13647:94:57","text":" @dev Natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":6071,"implemented":true,"kind":"function","modifiers":[],"name":"ln","nodeType":"FunctionDefinition","parameters":{"id":6038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6037,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6071,"src":"13758:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6036,"name":"int256","nodeType":"ElementaryTypeName","src":"13758:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13757:10:57"},"returnParameters":{"id":6041,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6040,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6071,"src":"13791:6:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6039,"name":"int256","nodeType":"ElementaryTypeName","src":"13791:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"13790:8:57"},"scope":6591,"src":"13746:345:57","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6435,"nodeType":"Block","src":"14258:4906:57","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6079,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"14272:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6080,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"14276:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14272:10:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6094,"nodeType":"IfStatement","src":"14268:382:57","trueBody":{"id":6093,"nodeType":"Block","src":"14284:366:57","statements":[{"expression":{"components":[{"id":6090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14611:27:57","subExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6083,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"14617:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6084,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"14626:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14617:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6086,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"14616:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6087,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"14636:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14616:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6082,"name":"_ln","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6436,"src":"14612:3:57","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_int256_$","typeString":"function (int256) pure returns (int256)"}},"id":6089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14612:26:57","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6091,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14610:29:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6078,"id":6092,"nodeType":"Return","src":"14603:36:57"}]}},{"assignments":[6096],"declarations":[{"constant":false,"id":6096,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","scope":6435,"src":"15975:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6095,"name":"int256","nodeType":"ElementaryTypeName","src":"15975:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6098,"initialValue":{"hexValue":"30","id":6097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15988:1:57","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15975:14:57"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6099,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16003:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6100,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"16008:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6101,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"16013:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16008:11:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16003:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6113,"nodeType":"IfStatement","src":"15999:114:57","trueBody":{"id":6112,"nodeType":"Block","src":"16021:92:57","statements":[{"expression":{"id":6106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6104,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16035:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":6105,"name":"a0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5339,"src":"16040:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16035:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6107,"nodeType":"ExpressionStatement","src":"16035:7:57"},{"expression":{"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6108,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16093:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6109,"name":"x0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5336,"src":"16100:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16093:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6111,"nodeType":"ExpressionStatement","src":"16093:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6114,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16127:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"id":6115,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"16132:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6116,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"16137:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16132:11:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16127:16:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6128,"nodeType":"IfStatement","src":"16123:114:57","trueBody":{"id":6127,"nodeType":"Block","src":"16145:92:57","statements":[{"expression":{"id":6121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6119,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16159:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"id":6120,"name":"a1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5345,"src":"16164:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16159:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6122,"nodeType":"ExpressionStatement","src":"16159:7:57"},{"expression":{"id":6125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6123,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16217:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6124,"name":"x1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5342,"src":"16224:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16217:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6126,"nodeType":"ExpressionStatement","src":"16217:9:57"}]}},{"expression":{"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6129,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16368:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":6130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16375:3:57","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16368:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6132,"nodeType":"ExpressionStatement","src":"16368:10:57"},{"expression":{"id":6135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6133,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16388:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"313030","id":6134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16393:3:57","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16388:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6136,"nodeType":"ExpressionStatement","src":"16388:8:57"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6137,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16523:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6138,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5351,"src":"16528:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16523:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6154,"nodeType":"IfStatement","src":"16519:82:57","trueBody":{"id":6153,"nodeType":"Block","src":"16532:69:57","statements":[{"expression":{"id":6147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6140,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16546:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6141,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16551:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6142,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"16555:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16551:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6144,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16550:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6145,"name":"a2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5351,"src":"16565:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16550:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16546:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6148,"nodeType":"ExpressionStatement","src":"16546:21:57"},{"expression":{"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6149,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16581:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6150,"name":"x2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5348,"src":"16588:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16581:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6152,"nodeType":"ExpressionStatement","src":"16581:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6155,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16615:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6156,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5357,"src":"16620:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16615:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6172,"nodeType":"IfStatement","src":"16611:82:57","trueBody":{"id":6171,"nodeType":"Block","src":"16624:69:57","statements":[{"expression":{"id":6165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6158,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16638:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6159,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16643:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6160,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"16647:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16643:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6162,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16642:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6163,"name":"a3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5357,"src":"16657:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16642:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16638:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6166,"nodeType":"ExpressionStatement","src":"16638:21:57"},{"expression":{"id":6169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6167,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16673:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6168,"name":"x3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5354,"src":"16680:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16673:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6170,"nodeType":"ExpressionStatement","src":"16673:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6173,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16707:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6174,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16712:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16707:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6190,"nodeType":"IfStatement","src":"16703:82:57","trueBody":{"id":6189,"nodeType":"Block","src":"16716:69:57","statements":[{"expression":{"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6176,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16730:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6177,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16735:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6178,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"16739:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16735:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6180,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16734:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6181,"name":"a4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5363,"src":"16749:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16734:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16730:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6184,"nodeType":"ExpressionStatement","src":"16730:21:57"},{"expression":{"id":6187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6185,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16765:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6186,"name":"x4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5360,"src":"16772:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16765:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6188,"nodeType":"ExpressionStatement","src":"16765:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6191,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16799:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6192,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5369,"src":"16804:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16799:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6208,"nodeType":"IfStatement","src":"16795:82:57","trueBody":{"id":6207,"nodeType":"Block","src":"16808:69:57","statements":[{"expression":{"id":6201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6194,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16822:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6195,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16827:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6196,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"16831:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16827:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6198,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16826:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6199,"name":"a5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5369,"src":"16841:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16826:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16822:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6202,"nodeType":"ExpressionStatement","src":"16822:21:57"},{"expression":{"id":6205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6203,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16857:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6204,"name":"x5","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5366,"src":"16864:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16857:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6206,"nodeType":"ExpressionStatement","src":"16857:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6209,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16891:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6210,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"16896:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16891:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6226,"nodeType":"IfStatement","src":"16887:82:57","trueBody":{"id":6225,"nodeType":"Block","src":"16900:69:57","statements":[{"expression":{"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6212,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16914:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6213,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16919:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6214,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"16923:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16919:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6216,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16918:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6217,"name":"a6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5375,"src":"16933:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16918:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16914:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6220,"nodeType":"ExpressionStatement","src":"16914:21:57"},{"expression":{"id":6223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6221,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"16949:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6222,"name":"x6","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5372,"src":"16956:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16949:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6224,"nodeType":"ExpressionStatement","src":"16949:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6227,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"16983:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6228,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5381,"src":"16988:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16983:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6244,"nodeType":"IfStatement","src":"16979:82:57","trueBody":{"id":6243,"nodeType":"Block","src":"16992:69:57","statements":[{"expression":{"id":6237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6230,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17006:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6231,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17011:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6232,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17015:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17011:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6234,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17010:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6235,"name":"a7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5381,"src":"17025:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17010:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17006:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6238,"nodeType":"ExpressionStatement","src":"17006:21:57"},{"expression":{"id":6241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6239,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"17041:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6240,"name":"x7","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5378,"src":"17048:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17041:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6242,"nodeType":"ExpressionStatement","src":"17041:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6245,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17075:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6246,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5387,"src":"17080:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17075:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6262,"nodeType":"IfStatement","src":"17071:82:57","trueBody":{"id":6261,"nodeType":"Block","src":"17084:69:57","statements":[{"expression":{"id":6255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6248,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17098:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6249,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17103:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6250,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17107:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17103:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6252,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17102:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6253,"name":"a8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5387,"src":"17117:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17102:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17098:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6256,"nodeType":"ExpressionStatement","src":"17098:21:57"},{"expression":{"id":6259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6257,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"17133:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6258,"name":"x8","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5384,"src":"17140:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17133:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6260,"nodeType":"ExpressionStatement","src":"17133:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6263,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17167:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6264,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"17172:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17167:7:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6280,"nodeType":"IfStatement","src":"17163:82:57","trueBody":{"id":6279,"nodeType":"Block","src":"17176:69:57","statements":[{"expression":{"id":6273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6266,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17190:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6267,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17195:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6268,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17199:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17195:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6270,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17194:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6271,"name":"a9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5393,"src":"17209:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17194:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17190:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6274,"nodeType":"ExpressionStatement","src":"17190:21:57"},{"expression":{"id":6277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6275,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"17225:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6276,"name":"x9","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5390,"src":"17232:2:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17225:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6278,"nodeType":"ExpressionStatement","src":"17225:9:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6281,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17259:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6282,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"17264:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17259:8:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6298,"nodeType":"IfStatement","src":"17255:85:57","trueBody":{"id":6297,"nodeType":"Block","src":"17269:71:57","statements":[{"expression":{"id":6291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6284,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17283:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6285,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17288:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6286,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17292:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17288:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6288,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17287:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6289,"name":"a10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"17302:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17287:18:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17283:22:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6292,"nodeType":"ExpressionStatement","src":"17283:22:57"},{"expression":{"id":6295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6293,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"17319:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6294,"name":"x10","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5396,"src":"17326:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17319:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6296,"nodeType":"ExpressionStatement","src":"17319:10:57"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6299,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17354:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6300,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"17359:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17354:8:57","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6316,"nodeType":"IfStatement","src":"17350:85:57","trueBody":{"id":6315,"nodeType":"Block","src":"17364:71:57","statements":[{"expression":{"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6302,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17378:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6303,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17383:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6304,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17387:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17383:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6306,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17382:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6307,"name":"a11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5405,"src":"17397:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17382:18:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17378:22:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6310,"nodeType":"ExpressionStatement","src":"17378:22:57"},{"expression":{"id":6313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6311,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"17414:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":6312,"name":"x11","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5402,"src":"17421:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17414:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6314,"nodeType":"ExpressionStatement","src":"17414:10:57"}]}},{"assignments":[6318],"declarations":[{"constant":false,"id":6318,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":6435,"src":"17937:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6317,"name":"int256","nodeType":"ElementaryTypeName","src":"17937:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6331,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6319,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17950:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6320,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17954:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17950:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6322,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17949:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6323,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17964:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17949:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6325,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17948:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6326,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"17975:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6327,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"17979:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17975:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6329,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17974:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17948:38:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17937:49:57"},{"assignments":[6333],"declarations":[{"constant":false,"id":6333,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":6435,"src":"17996:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6332,"name":"int256","nodeType":"ElementaryTypeName","src":"17996:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6340,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6334,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"18016:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6335,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"18020:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18016:5:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6337,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18015:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6338,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"18025:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18015:16:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"17996:35:57"},{"assignments":[6342],"declarations":[{"constant":false,"id":6342,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":6435,"src":"18112:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6341,"name":"int256","nodeType":"ElementaryTypeName","src":"18112:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6344,"initialValue":{"id":6343,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6318,"src":"18125:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18112:14:57"},{"assignments":[6346],"declarations":[{"constant":false,"id":6346,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":6435,"src":"18240:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6345,"name":"int256","nodeType":"ElementaryTypeName","src":"18240:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6348,"initialValue":{"id":6347,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18259:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"18240:22:57"},{"expression":{"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6349,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18333:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6350,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18340:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6351,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"18346:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18340:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18339:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6354,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"18359:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18339:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18333:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6357,"nodeType":"ExpressionStatement","src":"18333:32:57"},{"expression":{"id":6362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6358,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"18375:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6359,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18388:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":6360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18394:1:57","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"18388:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18375:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6363,"nodeType":"ExpressionStatement","src":"18375:20:57"},{"expression":{"id":6371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6364,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18406:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6365,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18413:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6366,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"18419:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18413:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6368,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18412:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6369,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"18432:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18412:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18406:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6372,"nodeType":"ExpressionStatement","src":"18406:32:57"},{"expression":{"id":6377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6373,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"18448:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6374,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18461:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":6375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18467:1:57","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"18461:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18448:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6378,"nodeType":"ExpressionStatement","src":"18448:20:57"},{"expression":{"id":6386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6379,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18479:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6380,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18486:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6381,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"18492:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18486:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6383,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18485:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6384,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"18505:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18485:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18479:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6387,"nodeType":"ExpressionStatement","src":"18479:32:57"},{"expression":{"id":6392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6388,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"18521:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6389,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18534:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":6390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18540:1:57","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"18534:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18521:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6393,"nodeType":"ExpressionStatement","src":"18521:20:57"},{"expression":{"id":6401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6394,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18552:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6395,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18559:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6396,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"18565:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18559:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6398,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18558:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6399,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"18578:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18558:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18552:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6402,"nodeType":"ExpressionStatement","src":"18552:32:57"},{"expression":{"id":6407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6403,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"18594:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6404,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18607:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":6405,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18613:1:57","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"18607:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18594:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6408,"nodeType":"ExpressionStatement","src":"18594:20:57"},{"expression":{"id":6416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6409,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18625:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6410,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18632:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6411,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6333,"src":"18638:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18632:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18631:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6414,"name":"ONE_20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5303,"src":"18651:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18631:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18625:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6417,"nodeType":"ExpressionStatement","src":"18625:32:57"},{"expression":{"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6418,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"18667:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6419,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6342,"src":"18680:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":6420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18686:2:57","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"18680:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18667:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6423,"nodeType":"ExpressionStatement","src":"18667:21:57"},{"expression":{"id":6426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6424,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"18847:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"32","id":6425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18860:1:57","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"18847:14:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6427,"nodeType":"ExpressionStatement","src":"18847:14:57"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6428,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6096,"src":"19135:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6429,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"19141:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19135:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6431,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19134:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":6432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19154:3:57","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19134:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6078,"id":6434,"nodeType":"Return","src":"19127:30:57"}]},"documentation":{"id":6072,"nodeType":"StructuredDocumentation","src":"14097:103:57","text":" @dev Internal natural logarithm (ln(a)) with signed 18 decimal fixed point argument."},"id":6436,"implemented":true,"kind":"function","modifiers":[],"name":"_ln","nodeType":"FunctionDefinition","parameters":{"id":6075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6074,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6436,"src":"14218:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6073,"name":"int256","nodeType":"ElementaryTypeName","src":"14218:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14217:10:57"},"returnParameters":{"id":6078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6077,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6436,"src":"14250:6:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6076,"name":"int256","nodeType":"ElementaryTypeName","src":"14250:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"14249:8:57"},"scope":6591,"src":"14205:4959:57","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":6589,"nodeType":"Block","src":"19486:1658:57","statements":[{"expression":{"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6444,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6439,"src":"19700:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"id":6445,"name":"ONE_18","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5300,"src":"19705:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19700:11:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6447,"nodeType":"ExpressionStatement","src":"19700:11:57"},{"assignments":[6449],"declarations":[{"constant":false,"id":6449,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","scope":6589,"src":"20072:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6448,"name":"int256","nodeType":"ElementaryTypeName","src":"20072:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6462,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6450,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6439,"src":"20085:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6451,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20089:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20085:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6453,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20084:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6454,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20099:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20084:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6456,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20083:23:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6457,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6439,"src":"20110:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6458,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20114:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20110:10:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6460,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20109:12:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20083:38:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20072:49:57"},{"assignments":[6464],"declarations":[{"constant":false,"id":6464,"mutability":"mutable","name":"z_squared","nodeType":"VariableDeclaration","scope":6589,"src":"20131:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6463,"name":"int256","nodeType":"ElementaryTypeName","src":"20131:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6471,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6465,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"20151:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6466,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"20155:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20151:5:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6468,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20150:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6469,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20160:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20150:16:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20131:35:57"},{"assignments":[6473],"declarations":[{"constant":false,"id":6473,"mutability":"mutable","name":"num","nodeType":"VariableDeclaration","scope":6589,"src":"20247:10:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6472,"name":"int256","nodeType":"ElementaryTypeName","src":"20247:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6475,"initialValue":{"id":6474,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6449,"src":"20260:1:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20247:14:57"},{"assignments":[6477],"declarations":[{"constant":false,"id":6477,"mutability":"mutable","name":"seriesSum","nodeType":"VariableDeclaration","scope":6589,"src":"20375:16:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6476,"name":"int256","nodeType":"ElementaryTypeName","src":"20375:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6479,"initialValue":{"id":6478,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20394:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"20375:22:57"},{"expression":{"id":6487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6480,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20468:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6481,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20475:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6482,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20481:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20475:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6484,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20474:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6485,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20494:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20474:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20468:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6488,"nodeType":"ExpressionStatement","src":"20468:32:57"},{"expression":{"id":6493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6489,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20510:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6490,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20523:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":6491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20529:1:57","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"20523:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20510:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6494,"nodeType":"ExpressionStatement","src":"20510:20:57"},{"expression":{"id":6502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6495,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20541:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6496,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20548:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6497,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20554:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20548:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6499,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20547:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6500,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20567:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20547:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20541:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6503,"nodeType":"ExpressionStatement","src":"20541:32:57"},{"expression":{"id":6508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6504,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20583:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6505,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20596:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"35","id":6506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20602:1:57","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"20596:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20583:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6509,"nodeType":"ExpressionStatement","src":"20583:20:57"},{"expression":{"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6510,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20614:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6511,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20621:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6512,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20627:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20621:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6514,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20620:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6515,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20640:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20620:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20614:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6518,"nodeType":"ExpressionStatement","src":"20614:32:57"},{"expression":{"id":6523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6519,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20656:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6520,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20669:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"37","id":6521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20675:1:57","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"20669:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20656:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6524,"nodeType":"ExpressionStatement","src":"20656:20:57"},{"expression":{"id":6532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6525,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20687:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6526,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20694:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6527,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20700:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20694:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6529,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20693:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6530,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20713:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20693:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20687:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6533,"nodeType":"ExpressionStatement","src":"20687:32:57"},{"expression":{"id":6538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6534,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20729:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6535,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20742:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"39","id":6536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20748:1:57","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"20742:7:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20729:20:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6539,"nodeType":"ExpressionStatement","src":"20729:20:57"},{"expression":{"id":6547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6540,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20760:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6541,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20767:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6542,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20773:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20767:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20766:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6545,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20786:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20766:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20760:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6548,"nodeType":"ExpressionStatement","src":"20760:32:57"},{"expression":{"id":6553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6549,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20802:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6550,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20815:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3131","id":6551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20821:2:57","typeDescriptions":{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},"value":"11"},"src":"20815:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20802:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6554,"nodeType":"ExpressionStatement","src":"20802:21:57"},{"expression":{"id":6562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6555,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20834:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6556,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20841:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6557,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20847:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20841:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6559,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20840:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6560,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20860:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20840:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20834:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6563,"nodeType":"ExpressionStatement","src":"20834:32:57"},{"expression":{"id":6568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6564,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20876:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6565,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20889:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3133","id":6566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20895:2:57","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"13"},"src":"20889:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20876:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6569,"nodeType":"ExpressionStatement","src":"20876:21:57"},{"expression":{"id":6577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6570,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20908:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6571,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20915:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6572,"name":"z_squared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6464,"src":"20921:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20915:15:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6574,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"20914:17:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6575,"name":"ONE_36","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5306,"src":"20934:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20914:26:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20908:32:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6578,"nodeType":"ExpressionStatement","src":"20908:32:57"},{"expression":{"id":6583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6579,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"20950:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6580,"name":"num","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6473,"src":"20963:3:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3135","id":6581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20969:2:57","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"20963:8:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20950:21:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":6584,"nodeType":"ExpressionStatement","src":"20950:21:57"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6585,"name":"seriesSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6477,"src":"21124:9:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":6586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21136:1:57","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"21124:13:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6443,"id":6588,"nodeType":"Return","src":"21117:20:57"}]},"documentation":{"id":6437,"nodeType":"StructuredDocumentation","src":"19170:255:57","text":" @dev Intrnal high precision (36 decimal places) natural logarithm (ln(x)) with signed 18 decimal fixed point argument,\n for x close to one.\n Should only be used if x is between LN_36_LOWER_BOUND and LN_36_UPPER_BOUND."},"id":6590,"implemented":true,"kind":"function","modifiers":[],"name":"_ln_36","nodeType":"FunctionDefinition","parameters":{"id":6440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6439,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","scope":6590,"src":"19446:8:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6438,"name":"int256","nodeType":"ElementaryTypeName","src":"19446:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19445:10:57"},"returnParameters":{"id":6443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6442,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6590,"src":"19478:6:57","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6441,"name":"int256","nodeType":"ElementaryTypeName","src":"19478:6:57","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19477:8:57"},"scope":6591,"src":"19430:1714:57","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":6592,"src":"1681:19465:57"}],"src":"1094:20053:57"},"id":57},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","exportedSymbols":{"Math":[6862]},"id":6863,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6593,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:58"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6594,"nodeType":"ImportDirective","scope":6863,"sourceUnit":1870,"src":"58:90:58","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6595,"nodeType":"StructuredDocumentation","src":"150:139:58","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow checks.\n Adapted from OpenZeppelin's SafeMath library."},"fullyImplemented":true,"id":6862,"linearizedBaseContracts":[6862],"name":"Math","nodeType":"ContractDefinition","nodes":[{"body":{"id":6604,"nodeType":"Block","src":"490:188:58","statements":[{"AST":{"nodeType":"YulBlock","src":"588:84:58","statements":[{"nodeType":"YulVariableDeclaration","src":"602:20:58","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"615:3:58","type":"","value":"255"},{"name":"a","nodeType":"YulIdentifier","src":"620:1:58"}],"functionName":{"name":"sar","nodeType":"YulIdentifier","src":"611:3:58"},"nodeType":"YulFunctionCall","src":"611:11:58"},"variables":[{"name":"s","nodeType":"YulTypedName","src":"606:1:58","type":""}]},{"nodeType":"YulAssignment","src":"635:27:58","value":{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"653:1:58"},{"name":"s","nodeType":"YulIdentifier","src":"656:1:58"}],"functionName":{"name":"xor","nodeType":"YulIdentifier","src":"649:3:58"},"nodeType":"YulFunctionCall","src":"649:9:58"},{"name":"s","nodeType":"YulIdentifier","src":"660:1:58"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"645:3:58"},"nodeType":"YulFunctionCall","src":"645:17:58"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"635:6:58"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6598,"isOffset":false,"isSlot":false,"src":"620:1:58","valueSize":1},{"declaration":6598,"isOffset":false,"isSlot":false,"src":"653:1:58","valueSize":1},{"declaration":6601,"isOffset":false,"isSlot":false,"src":"635:6:58","valueSize":1}],"id":6603,"nodeType":"InlineAssembly","src":"579:93:58"}]},"documentation":{"id":6596,"nodeType":"StructuredDocumentation","src":"352:71:58","text":" @dev Returns the absolute value of a signed integer."},"id":6605,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nodeType":"FunctionDefinition","parameters":{"id":6599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6598,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6605,"src":"441:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6597,"name":"int256","nodeType":"ElementaryTypeName","src":"441:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"440:10:58"},"returnParameters":{"id":6602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6601,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":6605,"src":"474:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6600,"name":"uint256","nodeType":"ElementaryTypeName","src":"474:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"473:16:58"},"scope":6862,"src":"428:250:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6631,"nodeType":"Block","src":"861:99:58","statements":[{"assignments":[6616],"declarations":[{"constant":false,"id":6616,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6631,"src":"871:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6615,"name":"uint256","nodeType":"ElementaryTypeName","src":"871:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6620,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6617,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"883:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6618,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6610,"src":"887:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"883:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"871:17:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6622,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"907:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6623,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6608,"src":"912:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"907:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6625,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"915:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1370,"src":"915:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6621,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"898:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"898:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6628,"nodeType":"ExpressionStatement","src":"898:37:58"},{"expression":{"id":6629,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6616,"src":"952:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6614,"id":6630,"nodeType":"Return","src":"945:8:58"}]},"documentation":{"id":6606,"nodeType":"StructuredDocumentation","src":"684:105:58","text":" @dev Returns the addition of two unsigned integers of 256 bits, reverting on overflow."},"id":6632,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6608,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6632,"src":"807:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6607,"name":"uint256","nodeType":"ElementaryTypeName","src":"807:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6610,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6632,"src":"818:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6609,"name":"uint256","nodeType":"ElementaryTypeName","src":"818:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"806:22:58"},"returnParameters":{"id":6614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6613,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6632,"src":"852:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6612,"name":"uint256","nodeType":"ElementaryTypeName","src":"852:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"851:9:58"},"scope":6862,"src":"794:166:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6672,"nodeType":"Block","src":"1126:130:58","statements":[{"assignments":[6643],"declarations":[{"constant":false,"id":6643,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6672,"src":"1136:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6642,"name":"int256","nodeType":"ElementaryTypeName","src":"1136:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6647,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6644,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"1147:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":6645,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"1151:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1147:5:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1136:16:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6649,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"1172:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":6650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1177:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1172:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6652,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6643,"src":"1182:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6653,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"1187:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1182:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1172:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6656,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1171:18:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6657,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6637,"src":"1194:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1198:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1194:5:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6660,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6643,"src":"1203:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6661,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6635,"src":"1207:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1203:5:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1194:14:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6664,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1193:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1171:38:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6666,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1211:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1370,"src":"1211:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6648,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1162:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1162:69:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6669,"nodeType":"ExpressionStatement","src":"1162:69:58"},{"expression":{"id":6670,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6643,"src":"1248:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6641,"id":6671,"nodeType":"Return","src":"1241:8:58"}]},"documentation":{"id":6633,"nodeType":"StructuredDocumentation","src":"966:91:58","text":" @dev Returns the addition of two signed integers, reverting on overflow."},"id":6673,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":6638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6635,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6673,"src":"1075:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6634,"name":"int256","nodeType":"ElementaryTypeName","src":"1075:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6637,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6673,"src":"1085:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6636,"name":"int256","nodeType":"ElementaryTypeName","src":"1085:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1074:20:58"},"returnParameters":{"id":6641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6640,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6673,"src":"1118:6:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6639,"name":"int256","nodeType":"ElementaryTypeName","src":"1118:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1117:8:58"},"scope":6862,"src":"1062:194:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6699,"nodeType":"Block","src":"1442:99:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6684,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6678,"src":"1461:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6685,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"1466:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1461:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6687,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1469:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"1469:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6683,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1452:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1452:37:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6690,"nodeType":"ExpressionStatement","src":"1452:37:58"},{"assignments":[6692],"declarations":[{"constant":false,"id":6692,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6699,"src":"1499:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6691,"name":"uint256","nodeType":"ElementaryTypeName","src":"1499:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6696,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6693,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6676,"src":"1511:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6694,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6678,"src":"1515:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1511:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1499:17:58"},{"expression":{"id":6697,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6692,"src":"1533:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6682,"id":6698,"nodeType":"Return","src":"1526:8:58"}]},"documentation":{"id":6674,"nodeType":"StructuredDocumentation","src":"1262:108:58","text":" @dev Returns the subtraction of two unsigned integers of 256 bits, reverting on overflow."},"id":6700,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":6679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6676,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6700,"src":"1388:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6675,"name":"uint256","nodeType":"ElementaryTypeName","src":"1388:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6678,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6700,"src":"1399:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6677,"name":"uint256","nodeType":"ElementaryTypeName","src":"1399:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1387:22:58"},"returnParameters":{"id":6682,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6681,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6700,"src":"1433:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6680,"name":"uint256","nodeType":"ElementaryTypeName","src":"1433:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1432:9:58"},"scope":6862,"src":"1375:166:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6740,"nodeType":"Block","src":"1710:130:58","statements":[{"assignments":[6711],"declarations":[{"constant":false,"id":6711,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6740,"src":"1720:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6710,"name":"int256","nodeType":"ElementaryTypeName","src":"1720:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":6715,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6712,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6703,"src":"1731:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":6713,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"1735:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1731:5:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1720:16:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6717,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"1756:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30","id":6718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1761:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1756:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6720,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6711,"src":"1766:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":6721,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6703,"src":"1771:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1766:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1756:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1755:18:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6725,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6705,"src":"1778:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1782:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1778:5:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6728,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6711,"src":"1787:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6729,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6703,"src":"1791:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1787:5:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1778:14:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":6732,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1777:16:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1755:38:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6734,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1795:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"1795:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6716,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1746:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:69:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6737,"nodeType":"ExpressionStatement","src":"1746:69:58"},{"expression":{"id":6738,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6711,"src":"1832:1:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6709,"id":6739,"nodeType":"Return","src":"1825:8:58"}]},"documentation":{"id":6701,"nodeType":"StructuredDocumentation","src":"1547:94:58","text":" @dev Returns the subtraction of two signed integers, reverting on overflow."},"id":6741,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":6706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6703,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6741,"src":"1659:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6702,"name":"int256","nodeType":"ElementaryTypeName","src":"1659:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6705,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6741,"src":"1669:8:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6704,"name":"int256","nodeType":"ElementaryTypeName","src":"1669:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1658:20:58"},"returnParameters":{"id":6709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6741,"src":"1702:6:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6707,"name":"int256","nodeType":"ElementaryTypeName","src":"1702:6:58","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1701:8:58"},"scope":6862,"src":"1646:194:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6752,"nodeType":"Block","src":"1996:154:58","statements":[{"AST":{"nodeType":"YulBlock","src":"2078:66:58","statements":[{"nodeType":"YulAssignment","src":"2092:42:58","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2106:1:58"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2117:1:58"},{"name":"b","nodeType":"YulIdentifier","src":"2120:1:58"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2113:3:58"},"nodeType":"YulFunctionCall","src":"2113:9:58"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2127:1:58"},{"name":"b","nodeType":"YulIdentifier","src":"2130:1:58"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2124:2:58"},"nodeType":"YulFunctionCall","src":"2124:8:58"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2109:3:58"},"nodeType":"YulFunctionCall","src":"2109:24:58"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2102:3:58"},"nodeType":"YulFunctionCall","src":"2102:32:58"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2092:6:58"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6744,"isOffset":false,"isSlot":false,"src":"2106:1:58","valueSize":1},{"declaration":6744,"isOffset":false,"isSlot":false,"src":"2117:1:58","valueSize":1},{"declaration":6744,"isOffset":false,"isSlot":false,"src":"2127:1:58","valueSize":1},{"declaration":6746,"isOffset":false,"isSlot":false,"src":"2120:1:58","valueSize":1},{"declaration":6746,"isOffset":false,"isSlot":false,"src":"2130:1:58","valueSize":1},{"declaration":6749,"isOffset":false,"isSlot":false,"src":"2092:6:58","valueSize":1}],"id":6751,"nodeType":"InlineAssembly","src":"2069:75:58"}]},"documentation":{"id":6742,"nodeType":"StructuredDocumentation","src":"1846:71:58","text":" @dev Returns the largest of two numbers of 256 bits."},"id":6753,"implemented":true,"kind":"function","modifiers":[],"name":"max","nodeType":"FunctionDefinition","parameters":{"id":6747,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6744,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6753,"src":"1935:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6743,"name":"uint256","nodeType":"ElementaryTypeName","src":"1935:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6746,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6753,"src":"1946:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1946:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1934:22:58"},"returnParameters":{"id":6750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6749,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":6753,"src":"1980:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6748,"name":"uint256","nodeType":"ElementaryTypeName","src":"1980:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1979:16:58"},"scope":6862,"src":"1922:228:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6764,"nodeType":"Block","src":"2307:143:58","statements":[{"AST":{"nodeType":"YulBlock","src":"2378:66:58","statements":[{"nodeType":"YulAssignment","src":"2392:42:58","value":{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2406:1:58"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2417:1:58"},{"name":"b","nodeType":"YulIdentifier","src":"2420:1:58"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2413:3:58"},"nodeType":"YulFunctionCall","src":"2413:9:58"},{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"2427:1:58"},{"name":"b","nodeType":"YulIdentifier","src":"2430:1:58"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2424:2:58"},"nodeType":"YulFunctionCall","src":"2424:8:58"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2409:3:58"},"nodeType":"YulFunctionCall","src":"2409:24:58"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2402:3:58"},"nodeType":"YulFunctionCall","src":"2402:32:58"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"2392:6:58"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6756,"isOffset":false,"isSlot":false,"src":"2406:1:58","valueSize":1},{"declaration":6756,"isOffset":false,"isSlot":false,"src":"2417:1:58","valueSize":1},{"declaration":6756,"isOffset":false,"isSlot":false,"src":"2427:1:58","valueSize":1},{"declaration":6758,"isOffset":false,"isSlot":false,"src":"2420:1:58","valueSize":1},{"declaration":6758,"isOffset":false,"isSlot":false,"src":"2430:1:58","valueSize":1},{"declaration":6761,"isOffset":false,"isSlot":false,"src":"2392:6:58","valueSize":1}],"id":6763,"nodeType":"InlineAssembly","src":"2369:75:58"}]},"documentation":{"id":6754,"nodeType":"StructuredDocumentation","src":"2156:72:58","text":" @dev Returns the smallest of two numbers of 256 bits."},"id":6765,"implemented":true,"kind":"function","modifiers":[],"name":"min","nodeType":"FunctionDefinition","parameters":{"id":6759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6756,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6765,"src":"2246:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6755,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6758,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6765,"src":"2257:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6757,"name":"uint256","nodeType":"ElementaryTypeName","src":"2257:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2245:22:58"},"returnParameters":{"id":6762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6761,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":6765,"src":"2291:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6760,"name":"uint256","nodeType":"ElementaryTypeName","src":"2291:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2290:16:58"},"scope":6862,"src":"2233:217:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6796,"nodeType":"Block","src":"2523:113:58","statements":[{"assignments":[6775],"declarations":[{"constant":false,"id":6775,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":6796,"src":"2533:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6774,"name":"uint256","nodeType":"ElementaryTypeName","src":"2533:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6779,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6776,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"2545:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":6777,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"2549:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2545:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2533:17:58"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6781,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"2569:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":6782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2574:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2569:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6784,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6775,"src":"2579:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6785,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6767,"src":"2583:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":6787,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6769,"src":"2588:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2579:10:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2569:20:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6790,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2591:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"MUL_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1379,"src":"2591:19:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6780,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2560:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2560:51:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6793,"nodeType":"ExpressionStatement","src":"2560:51:58"},{"expression":{"id":6794,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6775,"src":"2628:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6773,"id":6795,"nodeType":"Return","src":"2621:8:58"}]},"id":6797,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","parameters":{"id":6770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6767,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6797,"src":"2469:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6766,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6769,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6797,"src":"2480:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6768,"name":"uint256","nodeType":"ElementaryTypeName","src":"2480:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2468:22:58"},"returnParameters":{"id":6773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6772,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6797,"src":"2514:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6771,"name":"uint256","nodeType":"ElementaryTypeName","src":"2514:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2513:9:58"},"scope":6862,"src":"2456:180:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6819,"nodeType":"Block","src":"2753:61:58","statements":[{"expression":{"condition":{"id":6808,"name":"roundUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6803,"src":"2770:7:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":6814,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6799,"src":"2802:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6815,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6801,"src":"2805:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6813,"name":"divDown","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6842,"src":"2794:7:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2794:13:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2770:37:58","trueExpression":{"arguments":[{"id":6810,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6799,"src":"2786:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":6811,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6801,"src":"2789:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6809,"name":"divUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6861,"src":"2780:5:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2780:11:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6807,"id":6818,"nodeType":"Return","src":"2763:44:58"}]},"id":6820,"implemented":true,"kind":"function","modifiers":[],"name":"div","nodeType":"FunctionDefinition","parameters":{"id":6804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6799,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6820,"src":"2664:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6798,"name":"uint256","nodeType":"ElementaryTypeName","src":"2664:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6801,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6820,"src":"2683:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6800,"name":"uint256","nodeType":"ElementaryTypeName","src":"2683:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6803,"mutability":"mutable","name":"roundUp","nodeType":"VariableDeclaration","scope":6820,"src":"2702:12:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6802,"name":"bool","nodeType":"ElementaryTypeName","src":"2702:4:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2654:66:58"},"returnParameters":{"id":6807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6806,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6820,"src":"2744:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6805,"name":"uint256","nodeType":"ElementaryTypeName","src":"2744:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2743:9:58"},"scope":6862,"src":"2642:172:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6841,"nodeType":"Block","src":"2891:77:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6830,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6824,"src":"2910:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2910:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6833,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2918:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1382,"src":"2918:20:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6829,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2901:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2901:38:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6836,"nodeType":"ExpressionStatement","src":"2901:38:58"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6837,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6822,"src":"2956:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":6838,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6824,"src":"2960:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2956:5:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6828,"id":6840,"nodeType":"Return","src":"2949:12:58"}]},"id":6842,"implemented":true,"kind":"function","modifiers":[],"name":"divDown","nodeType":"FunctionDefinition","parameters":{"id":6825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6822,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6842,"src":"2837:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6821,"name":"uint256","nodeType":"ElementaryTypeName","src":"2837:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6824,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6842,"src":"2848:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6823,"name":"uint256","nodeType":"ElementaryTypeName","src":"2848:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2836:22:58"},"returnParameters":{"id":6828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6827,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6842,"src":"2882:7:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6826,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:58"},"scope":6862,"src":"2820:148:58","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6860,"nodeType":"Block","src":"3050:233:58","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6852,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"3069:1:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":6853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3074:1:58","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3069:6:58","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6855,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3077:6:58","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ZERO_DIVISION","nodeType":"MemberAccess","referencedDeclaration":1382,"src":"3077:20:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6851,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3060:8:58","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3060:38:58","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6858,"nodeType":"ExpressionStatement","src":"3060:38:58"},{"AST":{"nodeType":"YulBlock","src":"3194:83:58","statements":[{"nodeType":"YulAssignment","src":"3208:59:58","value":{"arguments":[{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3236:1:58"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3229:6:58"},"nodeType":"YulFunctionCall","src":"3229:9:58"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3222:6:58"},"nodeType":"YulFunctionCall","src":"3222:17:58"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3245:1:58","type":"","value":"1"},{"arguments":[{"arguments":[{"name":"a","nodeType":"YulIdentifier","src":"3256:1:58"},{"kind":"number","nodeType":"YulLiteral","src":"3259:1:58","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3252:3:58"},"nodeType":"YulFunctionCall","src":"3252:9:58"},{"name":"b","nodeType":"YulIdentifier","src":"3263:1:58"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3248:3:58"},"nodeType":"YulFunctionCall","src":"3248:17:58"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3241:3:58"},"nodeType":"YulFunctionCall","src":"3241:25:58"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"3218:3:58"},"nodeType":"YulFunctionCall","src":"3218:49:58"},"variableNames":[{"name":"result","nodeType":"YulIdentifier","src":"3208:6:58"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6844,"isOffset":false,"isSlot":false,"src":"3236:1:58","valueSize":1},{"declaration":6844,"isOffset":false,"isSlot":false,"src":"3256:1:58","valueSize":1},{"declaration":6846,"isOffset":false,"isSlot":false,"src":"3263:1:58","valueSize":1},{"declaration":6849,"isOffset":false,"isSlot":false,"src":"3208:6:58","valueSize":1}],"id":6859,"nodeType":"InlineAssembly","src":"3185:92:58"}]},"id":6861,"implemented":true,"kind":"function","modifiers":[],"name":"divUp","nodeType":"FunctionDefinition","parameters":{"id":6847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6844,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":6861,"src":"2989:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6843,"name":"uint256","nodeType":"ElementaryTypeName","src":"2989:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":6846,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":6861,"src":"3000:9:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6845,"name":"uint256","nodeType":"ElementaryTypeName","src":"3000:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2988:22:58"},"returnParameters":{"id":6850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6849,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":6861,"src":"3034:14:58","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6848,"name":"uint256","nodeType":"ElementaryTypeName","src":"3034:7:58","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3033:16:58"},"scope":6862,"src":"2974:309:58","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6863,"src":"290:2995:58"}],"src":"33:3253:58"},"id":58},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","exportedSymbols":{"Address":[7029]},"id":7030,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6864,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"254:23:59"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":6865,"nodeType":"ImportDirective","scope":7030,"sourceUnit":1870,"src":"279:90:59","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":6866,"nodeType":"StructuredDocumentation","src":"371:67:59","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":7029,"linearizedBaseContracts":[7029],"name":"Address","nodeType":"ContractDefinition","nodes":[{"body":{"id":6882,"nodeType":"Block","src":"1097:367:59","statements":[{"assignments":[6875],"declarations":[{"constant":false,"id":6875,"mutability":"mutable","name":"size","nodeType":"VariableDeclaration","scope":6882,"src":"1294:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6874,"name":"uint256","nodeType":"ElementaryTypeName","src":"1294:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":6876,"nodeType":"VariableDeclarationStatement","src":"1294:12:59"},{"AST":{"nodeType":"YulBlock","src":"1381:52:59","statements":[{"nodeType":"YulAssignment","src":"1395:28:59","value":{"arguments":[{"name":"account","nodeType":"YulIdentifier","src":"1415:7:59"}],"functionName":{"name":"extcodesize","nodeType":"YulIdentifier","src":"1403:11:59"},"nodeType":"YulFunctionCall","src":"1403:20:59"},"variableNames":[{"name":"size","nodeType":"YulIdentifier","src":"1395:4:59"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":6869,"isOffset":false,"isSlot":false,"src":"1415:7:59","valueSize":1},{"declaration":6875,"isOffset":false,"isSlot":false,"src":"1395:4:59","valueSize":1}],"id":6877,"nodeType":"InlineAssembly","src":"1372:61:59"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6878,"name":"size","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6875,"src":"1449:4:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":6879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1456:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1449:8:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":6873,"id":6881,"nodeType":"Return","src":"1442:15:59"}]},"documentation":{"id":6867,"nodeType":"StructuredDocumentation","src":"461:565:59","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ===="},"id":6883,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nodeType":"FunctionDefinition","parameters":{"id":6870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6869,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":6883,"src":"1051:15:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6868,"name":"address","nodeType":"ElementaryTypeName","src":"1051:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1050:17:59"},"returnParameters":{"id":6873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6872,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6883,"src":"1091:4:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6871,"name":"bool","nodeType":"ElementaryTypeName","src":"1091:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1090:6:59"},"scope":7029,"src":"1031:433:59","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6918,"nodeType":"Block","src":"2492:298:59","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":6894,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2519:4:59","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}],"id":6893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2511:7:59","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6892,"name":"address","nodeType":"ElementaryTypeName","src":"2511:7:59","typeDescriptions":{}}},"id":6895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2511:13:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2511:21:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":6897,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"2536:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2511:31:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6899,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2544:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_INSUFFICIENT_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1685,"src":"2544:35:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6891,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2502:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2502:78:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6902,"nodeType":"ExpressionStatement","src":"2502:78:59"},{"assignments":[6904,null],"declarations":[{"constant":false,"id":6904,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6918,"src":"2669:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6903,"name":"bool","nodeType":"ElementaryTypeName","src":"2669:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":6911,"initialValue":{"arguments":[{"hexValue":"","id":6909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2719:2:59","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":6905,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6886,"src":"2687:9:59","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":6906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2687:14:59","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6907,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6888,"src":"2710:6:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2687:31:59","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2687:35:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2668:54:59"},{"expression":{"arguments":[{"id":6913,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6904,"src":"2741:7:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":6914,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2750:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":6915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADDRESS_CANNOT_SEND_VALUE","nodeType":"MemberAccess","referencedDeclaration":1688,"src":"2750:32:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6912,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2732:8:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":6916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2732:51:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6917,"nodeType":"ExpressionStatement","src":"2732:51:59"}]},"documentation":{"id":6884,"nodeType":"StructuredDocumentation","src":"1510:906:59","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":6919,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nodeType":"FunctionDefinition","parameters":{"id":6889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6886,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":6919,"src":"2440:25:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":6885,"name":"address","nodeType":"ElementaryTypeName","src":"2440:15:59","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":6888,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":6919,"src":"2467:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6887,"name":"uint256","nodeType":"ElementaryTypeName","src":"2467:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2439:43:59"},"returnParameters":{"id":6890,"nodeType":"ParameterList","parameters":[],"src":"2492:0:59"},"scope":7029,"src":"2421:369:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6943,"nodeType":"Block","src":"3583:189:59","statements":[{"assignments":[6930,6932],"declarations":[{"constant":false,"id":6930,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6943,"src":"3653:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6929,"name":"bool","nodeType":"ElementaryTypeName","src":"3653:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6932,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6943,"src":"3667:23:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6931,"name":"bytes","nodeType":"ElementaryTypeName","src":"3667:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6937,"initialValue":{"arguments":[{"id":6935,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6924,"src":"3706:4:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6933,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"3694:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"3694:11:59","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3694:17:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3652:59:59"},{"expression":{"arguments":[{"id":6939,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6930,"src":"3745:7:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6940,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6932,"src":"3754:10:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6938,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7028,"src":"3728:16:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3728:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6928,"id":6942,"nodeType":"Return","src":"3721:44:59"}]},"documentation":{"id":6920,"nodeType":"StructuredDocumentation","src":"2796:693:59","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":6944,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nodeType":"FunctionDefinition","parameters":{"id":6925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6922,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6944,"src":"3516:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6921,"name":"address","nodeType":"ElementaryTypeName","src":"3516:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6924,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6944,"src":"3532:17:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6923,"name":"bytes","nodeType":"ElementaryTypeName","src":"3532:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3515:35:59"},"returnParameters":{"id":6928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6927,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6944,"src":"3569:12:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6926,"name":"bytes","nodeType":"ElementaryTypeName","src":"3569:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3568:14:59"},"scope":7029,"src":"3494:278:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6972,"nodeType":"Block","src":"4155:205:59","statements":[{"assignments":[6957,6959],"declarations":[{"constant":false,"id":6957,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6972,"src":"4225:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6956,"name":"bool","nodeType":"ElementaryTypeName","src":"4225:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6959,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6972,"src":"4239:23:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6958,"name":"bytes","nodeType":"ElementaryTypeName","src":"4239:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6966,"initialValue":{"arguments":[{"id":6964,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6949,"src":"4294:4:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6960,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6947,"src":"4266:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"4266:11:59","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":6962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6951,"src":"4286:5:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4266:27:59","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":6965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4266:33:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4224:75:59"},{"expression":{"arguments":[{"id":6968,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6957,"src":"4333:7:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6969,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6959,"src":"4342:10:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6967,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7028,"src":"4316:16:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":6970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4316:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6955,"id":6971,"nodeType":"Return","src":"4309:44:59"}]},"documentation":{"id":6945,"nodeType":"StructuredDocumentation","src":"3817:190:59","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but passing some native ETH as msg.value to the call.\n _Available since v3.4._"},"id":6973,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nodeType":"FunctionDefinition","parameters":{"id":6952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6947,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6973,"src":"4052:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6946,"name":"address","nodeType":"ElementaryTypeName","src":"4052:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6949,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6973,"src":"4076:17:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6948,"name":"bytes","nodeType":"ElementaryTypeName","src":"4076:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":6951,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":6973,"src":"4103:13:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6950,"name":"uint256","nodeType":"ElementaryTypeName","src":"4103:7:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4042:80:59"},"returnParameters":{"id":6955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6973,"src":"4141:12:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6953,"name":"bytes","nodeType":"ElementaryTypeName","src":"4141:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4140:14:59"},"scope":7029,"src":"4012:348:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":6997,"nodeType":"Block","src":"4636:197:59","statements":[{"assignments":[6984,6986],"declarations":[{"constant":false,"id":6984,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":6997,"src":"4706:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6983,"name":"bool","nodeType":"ElementaryTypeName","src":"4706:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6986,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":6997,"src":"4720:23:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6985,"name":"bytes","nodeType":"ElementaryTypeName","src":"4720:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":6991,"initialValue":{"arguments":[{"id":6989,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6978,"src":"4767:4:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":6987,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6976,"src":"4747:6:59","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","src":"4747:19:59","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":6990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4747:25:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4705:67:59"},{"expression":{"arguments":[{"id":6993,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6984,"src":"4806:7:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6994,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"4815:10:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":6992,"name":"verifyCallResult","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7028,"src":"4789:16:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bool,bytes memory) pure returns (bytes memory)"}},"id":6995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4789:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":6982,"id":6996,"nodeType":"Return","src":"4782:44:59"}]},"documentation":{"id":6974,"nodeType":"StructuredDocumentation","src":"4366:168:59","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":6998,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nodeType":"FunctionDefinition","parameters":{"id":6979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6976,"mutability":"mutable","name":"target","nodeType":"VariableDeclaration","scope":6998,"src":"4569:14:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6975,"name":"address","nodeType":"ElementaryTypeName","src":"4569:7:59","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":6978,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":6998,"src":"4585:17:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6977,"name":"bytes","nodeType":"ElementaryTypeName","src":"4585:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4568:35:59"},"returnParameters":{"id":6982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6981,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":6998,"src":"4622:12:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":6980,"name":"bytes","nodeType":"ElementaryTypeName","src":"4622:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4621:14:59"},"scope":7029,"src":"4539:294:59","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7027,"nodeType":"Block","src":"5159:612:59","statements":[{"condition":{"id":7008,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7001,"src":"5173:7:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7025,"nodeType":"Block","src":"5230:535:59","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":7012,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7003,"src":"5314:10:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":7013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5314:17:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":7014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5334:1:59","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5314:21:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7023,"nodeType":"Block","src":"5685:70:59","statements":[{"expression":{"arguments":[{"expression":{"id":7019,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5711:6:59","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LOW_LEVEL_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":1718,"src":"5711:28:59","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7018,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5703:7:59","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":7021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5703:37:59","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7022,"nodeType":"ExpressionStatement","src":"5703:37:59"}]},"id":7024,"nodeType":"IfStatement","src":"5310:445:59","trueBody":{"id":7017,"nodeType":"Block","src":"5337:342:59","statements":[{"AST":{"nodeType":"YulBlock","src":"5520:145:59","statements":[{"nodeType":"YulVariableDeclaration","src":"5542:40:59","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"5571:10:59"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5565:5:59"},"nodeType":"YulFunctionCall","src":"5565:17:59"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"5546:15:59","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5614:2:59","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"5618:10:59"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5610:3:59"},"nodeType":"YulFunctionCall","src":"5610:19:59"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"5631:15:59"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5603:6:59"},"nodeType":"YulFunctionCall","src":"5603:44:59"},"nodeType":"YulExpressionStatement","src":"5603:44:59"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7003,"isOffset":false,"isSlot":false,"src":"5571:10:59","valueSize":1},{"declaration":7003,"isOffset":false,"isSlot":false,"src":"5618:10:59","valueSize":1}],"id":7016,"nodeType":"InlineAssembly","src":"5511:154:59"}]}}]},"id":7026,"nodeType":"IfStatement","src":"5169:596:59","trueBody":{"id":7011,"nodeType":"Block","src":"5182:42:59","statements":[{"expression":{"id":7009,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7003,"src":"5203:10:59","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":7007,"id":7010,"nodeType":"Return","src":"5196:17:59"}]}}]},"documentation":{"id":6999,"nodeType":"StructuredDocumentation","src":"4839:213:59","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling up the\n revert reason or using the one provided.\n _Available since v4.3._"},"id":7028,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nodeType":"FunctionDefinition","parameters":{"id":7004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7001,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":7028,"src":"5083:12:59","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7000,"name":"bool","nodeType":"ElementaryTypeName","src":"5083:4:59","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":7003,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":7028,"src":"5097:23:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7002,"name":"bytes","nodeType":"ElementaryTypeName","src":"5097:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5082:39:59"},"returnParameters":{"id":7007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7006,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7028,"src":"5145:12:59","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":7005,"name":"bytes","nodeType":"ElementaryTypeName","src":"5145:5:59","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5144:14:59"},"scope":7029,"src":"5057:714:59","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7030,"src":"439:5334:59"}],"src":"254:5520:59"},"id":59},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol","exportedSymbols":{"EIP712":[7120]},"id":7121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7031,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:60"},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":7032,"nodeType":"StructuredDocumentation","src":"58:1142:60","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data.\n The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible,\n thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding\n they need in their contracts using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n _Available since v3.4._"},"fullyImplemented":true,"id":7120,"linearizedBaseContracts":[7120],"name":"EIP712","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":7034,"mutability":"immutable","name":"_HASHED_NAME","nodeType":"VariableDeclaration","scope":7120,"src":"1277:38:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7033,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1277:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":7036,"mutability":"immutable","name":"_HASHED_VERSION","nodeType":"VariableDeclaration","scope":7120,"src":"1321:41:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7035,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1321:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":7038,"mutability":"immutable","name":"_TYPE_HASH","nodeType":"VariableDeclaration","scope":7120,"src":"1368:36:60","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7037,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1368:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":7070,"nodeType":"Block","src":"2075:225:60","statements":[{"expression":{"id":7053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7046,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"2085:12:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7050,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7041,"src":"2116:4:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7049,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2110:5:60","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7048,"name":"bytes","nodeType":"ElementaryTypeName","src":"2110:5:60","typeDescriptions":{}}},"id":7051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2110:11:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7047,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2100:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2100:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2085:37:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7054,"nodeType":"ExpressionStatement","src":"2085:37:60"},{"expression":{"id":7062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7055,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"2132:15:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":7059,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7043,"src":"2166:7:60","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":7058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2160:5:60","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":7057,"name":"bytes","nodeType":"ElementaryTypeName","src":"2160:5:60","typeDescriptions":{}}},"id":7060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2160:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7056,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2150:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2150:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2132:43:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7063,"nodeType":"ExpressionStatement","src":"2132:43:60"},{"expression":{"id":7068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7064,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7038,"src":"2185:10:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":7066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2208:84:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":7065,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2198:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7067,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:95:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2185:108:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":7069,"nodeType":"ExpressionStatement","src":"2185:108:60"}]},"documentation":{"id":7039,"nodeType":"StructuredDocumentation","src":"1456:559:60","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":7071,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7041,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7071,"src":"2032:18:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7040,"name":"string","nodeType":"ElementaryTypeName","src":"2032:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7043,"mutability":"mutable","name":"version","nodeType":"VariableDeclaration","scope":7071,"src":"2052:21:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7042,"name":"string","nodeType":"ElementaryTypeName","src":"2052:6:60","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2031:43:60"},"returnParameters":{"id":7045,"nodeType":"ParameterList","parameters":[],"src":"2075:0:60"},"scope":7120,"src":"2020:280:60","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7092,"nodeType":"Block","src":"2456:118:60","statements":[{"expression":{"arguments":[{"arguments":[{"id":7080,"name":"_TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7038,"src":"2494:10:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7081,"name":"_HASHED_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7034,"src":"2506:12:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7082,"name":"_HASHED_VERSION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"2520:15:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[],"expression":{"argumentTypes":[],"id":7083,"name":"_getChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7119,"src":"2537:11:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2537:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7087,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2560:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_EIP712_$7120","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_EIP712_$7120","typeString":"contract EIP712"}],"id":7086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2552:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7085,"name":"address","nodeType":"ElementaryTypeName","src":"2552:7:60","typeDescriptions":{}}},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2552:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":7078,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2483:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"2483:10:60","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2483:83:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7077,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2473:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2473:94:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7076,"id":7091,"nodeType":"Return","src":"2466:101:60"}]},"documentation":{"id":7072,"nodeType":"StructuredDocumentation","src":"2306:75:60","text":" @dev Returns the domain separator for the current chain."},"id":7093,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nodeType":"FunctionDefinition","parameters":{"id":7073,"nodeType":"ParameterList","parameters":[],"src":"2413:2:60"},"returnParameters":{"id":7076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7075,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7093,"src":"2447:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7074,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2447:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2446:9:60"},"scope":7120,"src":"2386:188:60","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7111,"nodeType":"Block","src":"3285:97:60","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1901","id":7104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3329:10:60","typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"arguments":[],"expression":{"argumentTypes":[],"id":7105,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7093,"src":"3341:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3341:20:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7107,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7096,"src":"3363:10:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":7102,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3312:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"3312:16:60","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3312:62:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7101,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3302:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3302:73:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7100,"id":7110,"nodeType":"Return","src":"3295:80:60"}]},"documentation":{"id":7094,"nodeType":"StructuredDocumentation","src":"2580:614:60","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n keccak256(\"Mail(address to,string contents)\"),\n mailTo,\n keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":7112,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nodeType":"FunctionDefinition","parameters":{"id":7097,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7096,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":7112,"src":"3225:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7095,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3225:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3224:20:60"},"returnParameters":{"id":7100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7099,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7112,"src":"3276:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7098,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3276:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3275:9:60"},"scope":7120,"src":"3199:183:60","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":7118,"nodeType":"Block","src":"3495:125:60","statements":[{"AST":{"nodeType":"YulBlock","src":"3570:44:60","statements":[{"nodeType":"YulAssignment","src":"3584:20:60","value":{"arguments":[],"functionName":{"name":"chainid","nodeType":"YulIdentifier","src":"3595:7:60"},"nodeType":"YulFunctionCall","src":"3595:9:60"},"variableNames":[{"name":"chainId","nodeType":"YulIdentifier","src":"3584:7:60"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":7115,"isOffset":false,"isSlot":false,"src":"3584:7:60","valueSize":1}],"id":7117,"nodeType":"InlineAssembly","src":"3561:53:60"}]},"id":7119,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainId","nodeType":"FunctionDefinition","parameters":{"id":7113,"nodeType":"ParameterList","parameters":[],"src":"3453:2:60"},"returnParameters":{"id":7116,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7115,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","scope":7119,"src":"3478:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7114,"name":"uint256","nodeType":"ElementaryTypeName","src":"3478:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3477:17:60"},"scope":7120,"src":"3433:187:60","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":7121,"src":"1201:2421:60"}],"src":"33:3590:60"},"id":60},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","exportedSymbols":{"ERC20":[7611]},"id":7612,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7122,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:61"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7123,"nodeType":"ImportDirective","scope":7612,"sourceUnit":1870,"src":"58:90:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":7124,"nodeType":"ImportDirective","scope":7612,"sourceUnit":2091,"src":"149:87:61","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","file":"./SafeMath.sol","id":7125,"nodeType":"ImportDirective","scope":7612,"sourceUnit":8574,"src":"238:24:61","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7127,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1445:6:61","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":7128,"nodeType":"InheritanceSpecifier","src":"1445:6:61"}],"contractDependencies":[2090],"contractKind":"contract","documentation":{"id":7126,"nodeType":"StructuredDocumentation","src":"264:1162:61","text":" @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."},"fullyImplemented":true,"id":7611,"linearizedBaseContracts":[7611,2090],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":7131,"libraryName":{"id":7129,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8573,"src":"1464:8:61","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8573","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"1458:27:61","typeName":{"id":7130,"name":"uint256","nodeType":"ElementaryTypeName","src":"1477:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":7135,"mutability":"mutable","name":"_balances","nodeType":"VariableDeclaration","scope":7611,"src":"1491:45:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7134,"keyType":{"id":7132,"name":"address","nodeType":"ElementaryTypeName","src":"1499:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1491:27:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7133,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":7141,"mutability":"mutable","name":"_allowances","nodeType":"VariableDeclaration","scope":7611,"src":"1543:67:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":7140,"keyType":{"id":7136,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1543:47:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":7139,"keyType":{"id":7137,"name":"address","nodeType":"ElementaryTypeName","src":"1570:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1562:27:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7138,"name":"uint256","nodeType":"ElementaryTypeName","src":"1581:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":7143,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","scope":7611,"src":"1617:28:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7142,"name":"uint256","nodeType":"ElementaryTypeName","src":"1617:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":7145,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":7611,"src":"1652:20:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7144,"name":"string","nodeType":"ElementaryTypeName","src":"1652:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7147,"mutability":"mutable","name":"_symbol","nodeType":"VariableDeclaration","scope":7611,"src":"1678:22:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":7146,"name":"string","nodeType":"ElementaryTypeName","src":"1678:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":7149,"mutability":"mutable","name":"_decimals","nodeType":"VariableDeclaration","scope":7611,"src":"1706:23:61","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7148,"name":"uint8","nodeType":"ElementaryTypeName","src":"1706:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"body":{"id":7169,"nodeType":"Block","src":"2108:81:61","statements":[{"expression":{"id":7159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7157,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7145,"src":"2118:5:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7158,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7152,"src":"2126:5:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2118:13:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7160,"nodeType":"ExpressionStatement","src":"2118:13:61"},{"expression":{"id":7163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7161,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"2141:7:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7162,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7154,"src":"2151:7:61","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2141:17:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":7164,"nodeType":"ExpressionStatement","src":"2141:17:61"},{"expression":{"id":7167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7165,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"2168:9:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3138","id":7166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2180:2:61","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"2168:14:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7168,"nodeType":"ExpressionStatement","src":"2168:14:61"}]},"documentation":{"id":7150,"nodeType":"StructuredDocumentation","src":"1736:311:61","text":" @dev Sets the values for {name} and {symbol}, initializes {decimals} with\n a default value of 18.\n To select a different value for {decimals}, use {_setupDecimals}.\n All three of these values are immutable: they can only be set once during\n construction."},"id":7170,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7152,"mutability":"mutable","name":"name_","nodeType":"VariableDeclaration","scope":7170,"src":"2064:19:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7151,"name":"string","nodeType":"ElementaryTypeName","src":"2064:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":7154,"mutability":"mutable","name":"symbol_","nodeType":"VariableDeclaration","scope":7170,"src":"2085:21:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7153,"name":"string","nodeType":"ElementaryTypeName","src":"2085:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2063:44:61"},"returnParameters":{"id":7156,"nodeType":"ParameterList","parameters":[],"src":"2108:0:61"},"scope":7611,"src":"2052:137:61","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":7178,"nodeType":"Block","src":"2306:29:61","statements":[{"expression":{"id":7176,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7145,"src":"2323:5:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7175,"id":7177,"nodeType":"Return","src":"2316:12:61"}]},"documentation":{"id":7171,"nodeType":"StructuredDocumentation","src":"2195:54:61","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":7179,"implemented":true,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","parameters":{"id":7172,"nodeType":"ParameterList","parameters":[],"src":"2267:2:61"},"returnParameters":{"id":7175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7179,"src":"2291:13:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7173,"name":"string","nodeType":"ElementaryTypeName","src":"2291:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2290:15:61"},"scope":7611,"src":"2254:81:61","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":7187,"nodeType":"Block","src":"2502:31:61","statements":[{"expression":{"id":7185,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7147,"src":"2519:7:61","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":7184,"id":7186,"nodeType":"Return","src":"2512:14:61"}]},"documentation":{"id":7180,"nodeType":"StructuredDocumentation","src":"2341:102:61","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":7188,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","parameters":{"id":7181,"nodeType":"ParameterList","parameters":[],"src":"2463:2:61"},"returnParameters":{"id":7184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7183,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7188,"src":"2487:13:61","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7182,"name":"string","nodeType":"ElementaryTypeName","src":"2487:6:61","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2486:15:61"},"scope":7611,"src":"2448:85:61","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":7196,"nodeType":"Block","src":"3204:33:61","statements":[{"expression":{"id":7194,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"3221:9:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":7193,"id":7195,"nodeType":"Return","src":"3214:16:61"}]},"documentation":{"id":7189,"nodeType":"StructuredDocumentation","src":"2539:612:61","text":" @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is\n called.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."},"functionSelector":"313ce567","id":7197,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","parameters":{"id":7190,"nodeType":"ParameterList","parameters":[],"src":"3173:2:61"},"returnParameters":{"id":7193,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7192,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7197,"src":"3197:5:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7191,"name":"uint8","nodeType":"ElementaryTypeName","src":"3197:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3196:7:61"},"scope":7611,"src":"3156:81:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2021],"body":{"id":7206,"nodeType":"Block","src":"3570:36:61","statements":[{"expression":{"id":7204,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"3587:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7203,"id":7205,"nodeType":"Return","src":"3580:19:61"}]},"documentation":{"id":7198,"nodeType":"StructuredDocumentation","src":"3243:252:61","text":" @dev See {IERC20-totalSupply}. The total supply should only be read using this function\n Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"functionSelector":"18160ddd","id":7207,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":7200,"nodeType":"OverrideSpecifier","overrides":[],"src":"3543:8:61"},"parameters":{"id":7199,"nodeType":"ParameterList","parameters":[],"src":"3520:2:61"},"returnParameters":{"id":7203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7202,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7207,"src":"3561:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7201,"name":"uint256","nodeType":"ElementaryTypeName","src":"3561:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3560:9:61"},"scope":7611,"src":"3500:106:61","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":7217,"nodeType":"Block","src":"3927:37:61","statements":[{"expression":{"id":7215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7213,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7143,"src":"3937:12:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7214,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7210,"src":"3952:5:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3937:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7216,"nodeType":"ExpressionStatement","src":"3937:20:61"}]},"documentation":{"id":7208,"nodeType":"StructuredDocumentation","src":"3612:253:61","text":" @dev Sets a new value for the total supply. It should only be set using this function.\n * Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other\n storage values)."},"id":7218,"implemented":true,"kind":"function","modifiers":[],"name":"_setTotalSupply","nodeType":"FunctionDefinition","parameters":{"id":7211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7210,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7218,"src":"3895:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7209,"name":"uint256","nodeType":"ElementaryTypeName","src":"3895:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3894:15:61"},"returnParameters":{"id":7212,"nodeType":"ParameterList","parameters":[],"src":"3927:0:61"},"scope":7611,"src":"3870:94:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[2029],"body":{"id":7231,"nodeType":"Block","src":"4097:42:61","statements":[{"expression":{"baseExpression":{"id":7227,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"4114:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7229,"indexExpression":{"id":7228,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"4124:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4114:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7226,"id":7230,"nodeType":"Return","src":"4107:25:61"}]},"documentation":{"id":7219,"nodeType":"StructuredDocumentation","src":"3970:47:61","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":7232,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":{"id":7223,"nodeType":"OverrideSpecifier","overrides":[],"src":"4070:8:61"},"parameters":{"id":7222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7221,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":7232,"src":"4041:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7220,"name":"address","nodeType":"ElementaryTypeName","src":"4041:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4040:17:61"},"returnParameters":{"id":7226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7225,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7232,"src":"4088:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7224,"name":"uint256","nodeType":"ElementaryTypeName","src":"4088:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4087:9:61"},"scope":7611,"src":"4022:117:61","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2039],"body":{"id":7252,"nodeType":"Block","src":"4434:78:61","statements":[{"expression":{"arguments":[{"expression":{"id":7244,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4454:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4454:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7246,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7235,"src":"4466:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7247,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7237,"src":"4477:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7243,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7458,"src":"4444:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4444:40:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7249,"nodeType":"ExpressionStatement","src":"4444:40:61"},{"expression":{"hexValue":"74727565","id":7250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4501:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7242,"id":7251,"nodeType":"Return","src":"4494:11:61"}]},"documentation":{"id":7233,"nodeType":"StructuredDocumentation","src":"4145:192:61","text":" @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."},"functionSelector":"a9059cbb","id":7253,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":7239,"nodeType":"OverrideSpecifier","overrides":[],"src":"4410:8:61"},"parameters":{"id":7238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7235,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7253,"src":"4360:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7234,"name":"address","nodeType":"ElementaryTypeName","src":"4360:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7237,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7253,"src":"4379:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7236,"name":"uint256","nodeType":"ElementaryTypeName","src":"4379:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:35:61"},"returnParameters":{"id":7242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7241,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7253,"src":"4428:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7240,"name":"bool","nodeType":"ElementaryTypeName","src":"4428:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4427:6:61"},"scope":7611,"src":"4342:170:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2049],"body":{"id":7270,"nodeType":"Block","src":"4668:51:61","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":7264,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"4685:11:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7266,"indexExpression":{"id":7265,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7256,"src":"4697:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:18:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7268,"indexExpression":{"id":7267,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7258,"src":"4704:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4685:27:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7263,"id":7269,"nodeType":"Return","src":"4678:34:61"}]},"documentation":{"id":7254,"nodeType":"StructuredDocumentation","src":"4518:47:61","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":7271,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":{"id":7260,"nodeType":"OverrideSpecifier","overrides":[],"src":"4641:8:61"},"parameters":{"id":7259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7256,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7271,"src":"4589:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7255,"name":"address","nodeType":"ElementaryTypeName","src":"4589:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7258,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7271,"src":"4604:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7257,"name":"address","nodeType":"ElementaryTypeName","src":"4604:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4588:32:61"},"returnParameters":{"id":7263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7262,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7271,"src":"4659:7:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7261,"name":"uint256","nodeType":"ElementaryTypeName","src":"4659:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4658:9:61"},"scope":7611,"src":"4570:149:61","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[2059],"body":{"id":7291,"nodeType":"Block","src":"4946:75:61","statements":[{"expression":{"arguments":[{"expression":{"id":7283,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4965:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4965:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7285,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7274,"src":"4977:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7286,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7276,"src":"4986:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7282,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"4956:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4956:37:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7288,"nodeType":"ExpressionStatement","src":"4956:37:61"},{"expression":{"hexValue":"74727565","id":7289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5010:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7281,"id":7290,"nodeType":"Return","src":"5003:11:61"}]},"documentation":{"id":7272,"nodeType":"StructuredDocumentation","src":"4725:127:61","text":" @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"095ea7b3","id":7292,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":7278,"nodeType":"OverrideSpecifier","overrides":[],"src":"4922:8:61"},"parameters":{"id":7277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7274,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7292,"src":"4874:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7273,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7276,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7292,"src":"4891:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7275,"name":"uint256","nodeType":"ElementaryTypeName","src":"4891:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4873:33:61"},"returnParameters":{"id":7281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7280,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7292,"src":"4940:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7279,"name":"bool","nodeType":"ElementaryTypeName","src":"4940:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4939:6:61"},"scope":7611,"src":"4857:164:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2071],"body":{"id":7330,"nodeType":"Block","src":"5630:244:61","statements":[{"expression":{"arguments":[{"id":7306,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7295,"src":"5650:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7307,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7297,"src":"5658:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7308,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7299,"src":"5669:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7305,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7458,"src":"5640:9:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5640:36:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7310,"nodeType":"ExpressionStatement","src":"5640:36:61"},{"expression":{"arguments":[{"id":7312,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7295,"src":"5708:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7313,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5728:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5728:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":7322,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7299,"src":"5788:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7323,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5796:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":1670,"src":"5796:39:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":7315,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"5752:11:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7317,"indexExpression":{"id":7316,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7295,"src":"5764:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:19:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7320,"indexExpression":{"expression":{"id":7318,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5772:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5772:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5752:31:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8572,"src":"5752:35:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5752:84:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7311,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"5686:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5686:160:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7327,"nodeType":"ExpressionStatement","src":"5686:160:61"},{"expression":{"hexValue":"74727565","id":7328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5863:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7304,"id":7329,"nodeType":"Return","src":"5856:11:61"}]},"documentation":{"id":7293,"nodeType":"StructuredDocumentation","src":"5027:456:61","text":" @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."},"functionSelector":"23b872dd","id":7331,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":7301,"nodeType":"OverrideSpecifier","overrides":[],"src":"5606:8:61"},"parameters":{"id":7300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7295,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":7331,"src":"5519:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7294,"name":"address","nodeType":"ElementaryTypeName","src":"5519:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7297,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7331,"src":"5543:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7296,"name":"address","nodeType":"ElementaryTypeName","src":"5543:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7299,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7331,"src":"5570:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7298,"name":"uint256","nodeType":"ElementaryTypeName","src":"5570:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5509:81:61"},"returnParameters":{"id":7304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7303,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7331,"src":"5624:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7302,"name":"bool","nodeType":"ElementaryTypeName","src":"5624:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5623:6:61"},"scope":7611,"src":"5488:386:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7358,"nodeType":"Block","src":"6363:117:61","statements":[{"expression":{"arguments":[{"expression":{"id":7342,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6382:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6382:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7344,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7334,"src":"6394:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7352,"name":"addedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7336,"src":"6440:10:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":7345,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"6403:11:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7348,"indexExpression":{"expression":{"id":7346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6415:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6415:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:23:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7350,"indexExpression":{"id":7349,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7334,"src":"6427:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6403:32:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8526,"src":"6403:36:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6403:48:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7341,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"6373:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6373:79:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7355,"nodeType":"ExpressionStatement","src":"6373:79:61"},{"expression":{"hexValue":"74727565","id":7356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6469:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7340,"id":7357,"nodeType":"Return","src":"6462:11:61"}]},"documentation":{"id":7332,"nodeType":"StructuredDocumentation","src":"5880:384:61","text":" @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."},"functionSelector":"39509351","id":7359,"implemented":true,"kind":"function","modifiers":[],"name":"increaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":7337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7334,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7359,"src":"6296:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7333,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7336,"mutability":"mutable","name":"addedValue","nodeType":"VariableDeclaration","scope":7359,"src":"6313:18:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7335,"name":"uint256","nodeType":"ElementaryTypeName","src":"6313:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:37:61"},"returnParameters":{"id":7340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7339,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7359,"src":"6357:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7338,"name":"bool","nodeType":"ElementaryTypeName","src":"6357:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6356:6:61"},"scope":7611,"src":"6269:211:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7388,"nodeType":"Block","src":"7066:213:61","statements":[{"expression":{"arguments":[{"expression":{"id":7370,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7098:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7098:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7372,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7362,"src":"7122:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":7380,"name":"subtractedValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7364,"src":"7180:15:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7381,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"7197:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_DECREASED_ALLOWANCE_BELOW_ZERO","nodeType":"MemberAccess","referencedDeclaration":1673,"src":"7197:43:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"baseExpression":{"id":7373,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"7143:11:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7376,"indexExpression":{"expression":{"id":7374,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7155:3:61","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7155:10:61","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:23:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7378,"indexExpression":{"id":7377,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7362,"src":"7167:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7143:32:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8572,"src":"7143:36:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7143:98:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7369,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"7076:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7076:175:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7385,"nodeType":"ExpressionStatement","src":"7076:175:61"},{"expression":{"hexValue":"74727565","id":7386,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7268:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7368,"id":7387,"nodeType":"Return","src":"7261:11:61"}]},"documentation":{"id":7360,"nodeType":"StructuredDocumentation","src":"6486:476:61","text":" @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."},"functionSelector":"a457c2d7","id":7389,"implemented":true,"kind":"function","modifiers":[],"name":"decreaseAllowance","nodeType":"FunctionDefinition","parameters":{"id":7365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7362,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7389,"src":"6994:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7361,"name":"address","nodeType":"ElementaryTypeName","src":"6994:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7364,"mutability":"mutable","name":"subtractedValue","nodeType":"VariableDeclaration","scope":7389,"src":"7011:23:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7363,"name":"uint256","nodeType":"ElementaryTypeName","src":"7011:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6993:42:61"},"returnParameters":{"id":7368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7367,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7389,"src":"7060:4:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7366,"name":"bool","nodeType":"ElementaryTypeName","src":"7060:4:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7059:6:61"},"scope":7611,"src":"6967:312:61","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7457,"nodeType":"Block","src":"7870:442:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7400,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"7889:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7907:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7899:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7401,"name":"address","nodeType":"ElementaryTypeName","src":"7899:7:61","typeDescriptions":{}}},"id":7404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7899:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7889:20:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7406,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"7911:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1652,"src":"7911:39:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7399,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"7880:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7880:71:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7409,"nodeType":"ExpressionStatement","src":"7880:71:61"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7411,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7394,"src":"7970:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7991:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7983:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7412,"name":"address","nodeType":"ElementaryTypeName","src":"7983:7:61","typeDescriptions":{}}},"id":7415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7983:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7970:23:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7417,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"7995:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_TO_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1655,"src":"7995:37:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7410,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"7961:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7961:72:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7420,"nodeType":"ExpressionStatement","src":"7961:72:61"},{"expression":{"arguments":[{"id":7422,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"8065:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7423,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7394,"src":"8073:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7424,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"8084:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7421,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"8044:20:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8044:47:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7426,"nodeType":"ExpressionStatement","src":"8044:47:61"},{"expression":{"id":7438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7427,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"8102:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7429,"indexExpression":{"id":7428,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"8112:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8102:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7434,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"8144:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7435,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"8152:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_TRANSFER_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1676,"src":"8152:37:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":7430,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"8122:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7432,"indexExpression":{"id":7431,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"8132:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8122:17:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8572,"src":"8122:21:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8122:68:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8102:88:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7439,"nodeType":"ExpressionStatement","src":"8102:88:61"},{"expression":{"id":7449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7440,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"8200:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7442,"indexExpression":{"id":7441,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7394,"src":"8210:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8200:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7447,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"8248:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":7443,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"8223:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7445,"indexExpression":{"id":7444,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7394,"src":"8233:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8223:20:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8526,"src":"8223:24:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8223:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8200:55:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7450,"nodeType":"ExpressionStatement","src":"8200:55:61"},{"eventCall":{"arguments":[{"id":7452,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"8279:6:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7453,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7394,"src":"8287:9:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7454,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7396,"src":"8298:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7451,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"8270:8:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8270:35:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7456,"nodeType":"EmitStatement","src":"8265:40:61"}]},"documentation":{"id":7390,"nodeType":"StructuredDocumentation","src":"7285:463:61","text":" @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."},"id":7458,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","parameters":{"id":7397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7392,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":7458,"src":"7781:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7391,"name":"address","nodeType":"ElementaryTypeName","src":"7781:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7394,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":7458,"src":"7805:17:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7393,"name":"address","nodeType":"ElementaryTypeName","src":"7805:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7396,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7458,"src":"7832:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7395,"name":"uint256","nodeType":"ElementaryTypeName","src":"7832:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7771:81:61"},"returnParameters":{"id":7398,"nodeType":"ParameterList","parameters":[],"src":"7870:0:61"},"scope":7611,"src":"7753:559:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7503,"nodeType":"Block","src":"8648:232:61","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":7469,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8687:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7468,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8679:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7467,"name":"address","nodeType":"ElementaryTypeName","src":"8679:7:61","typeDescriptions":{}}},"id":7470,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8679:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7471,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"8691:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7472,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"8700:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7466,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"8658:20:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8658:49:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7474,"nodeType":"ExpressionStatement","src":"8658:49:61"},{"expression":{"arguments":[{"arguments":[{"id":7479,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"8752:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7476,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7207,"src":"8734:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8526,"src":"8734:17:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8734:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7475,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"8718:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8718:42:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7482,"nodeType":"ExpressionStatement","src":"8718:42:61"},{"expression":{"id":7492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7483,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"8770:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7485,"indexExpression":{"id":7484,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"8780:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8770:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7490,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"8814:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":7486,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"8791:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7488,"indexExpression":{"id":7487,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"8801:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8791:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8526,"src":"8791:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8791:30:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8770:51:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7493,"nodeType":"ExpressionStatement","src":"8770:51:61"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":7497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8853:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8845:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7495,"name":"address","nodeType":"ElementaryTypeName","src":"8845:7:61","typeDescriptions":{}}},"id":7498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8845:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7499,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7461,"src":"8857:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7500,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7463,"src":"8866:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7494,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"8836:8:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8836:37:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7502,"nodeType":"EmitStatement","src":"8831:42:61"}]},"documentation":{"id":7459,"nodeType":"StructuredDocumentation","src":"8318:260:61","text":"@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."},"id":7504,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","parameters":{"id":7464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7461,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":7504,"src":"8598:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7460,"name":"address","nodeType":"ElementaryTypeName","src":"8598:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7463,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7504,"src":"8615:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7462,"name":"uint256","nodeType":"ElementaryTypeName","src":"8615:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8597:33:61"},"returnParameters":{"id":7465,"nodeType":"ParameterList","parameters":[],"src":"8648:0:61"},"scope":7611,"src":"8583:297:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7562,"nodeType":"Block","src":"9265:346:61","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":7518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7513,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"9284:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":7516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9303:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9295:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7514,"name":"address","nodeType":"ElementaryTypeName","src":"9295:7:61","typeDescriptions":{}}},"id":7517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9295:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"9284:21:61","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7519,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"9307:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_FROM_ZERO_ADDRESS","nodeType":"MemberAccess","referencedDeclaration":1661,"src":"9307:35:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7512,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"9275:8:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9275:68:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7522,"nodeType":"ExpressionStatement","src":"9275:68:61"},{"expression":{"arguments":[{"id":7524,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"9375:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9392:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9384:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7525,"name":"address","nodeType":"ElementaryTypeName","src":"9384:7:61","typeDescriptions":{}}},"id":7528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9384:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7529,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"9396:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7523,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7610,"src":"9354:20:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9354:49:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7531,"nodeType":"ExpressionStatement","src":"9354:49:61"},{"expression":{"id":7543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":7532,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"9414:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7534,"indexExpression":{"id":7533,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"9424:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9414:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":7539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"9458:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7540,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"9466:6:61","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_BALANCE","nodeType":"MemberAccess","referencedDeclaration":1730,"src":"9466:33:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":7535,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7135,"src":"9435:9:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7537,"indexExpression":{"id":7536,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"9445:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9435:18:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8572,"src":"9435:22:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9435:65:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9414:86:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7544,"nodeType":"ExpressionStatement","src":"9414:86:61"},{"expression":{"arguments":[{"arguments":[{"id":7549,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"9544:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7546,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7207,"src":"9526:11:61","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":7547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:13:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8544,"src":"9526:17:61","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":7550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9526:25:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7545,"name":"_setTotalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"9510:15:61","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":7551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9510:42:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7552,"nodeType":"ExpressionStatement","src":"9510:42:61"},{"eventCall":{"arguments":[{"id":7554,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"9576:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":7557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9593:1:61","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7556,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9585:7:61","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":7555,"name":"address","nodeType":"ElementaryTypeName","src":"9585:7:61","typeDescriptions":{}}},"id":7558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9585:10:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7559,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"9597:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7553,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"9567:8:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9567:37:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7561,"nodeType":"EmitStatement","src":"9562:42:61"}]},"documentation":{"id":7505,"nodeType":"StructuredDocumentation","src":"8886:309:61","text":" @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."},"id":7563,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","parameters":{"id":7510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7507,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":7563,"src":"9215:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7506,"name":"address","nodeType":"ElementaryTypeName","src":"9215:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7509,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7563,"src":"9232:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7508,"name":"uint256","nodeType":"ElementaryTypeName","src":"9232:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9214:33:61"},"returnParameters":{"id":7511,"nodeType":"ParameterList","parameters":[],"src":"9265:0:61"},"scope":7611,"src":"9200:411:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7587,"nodeType":"Block","src":"10147:100:61","statements":[{"expression":{"id":7579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":7573,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7141,"src":"10157:11:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":7576,"indexExpression":{"id":7574,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7566,"src":"10169:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10157:18:61","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7577,"indexExpression":{"id":7575,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7568,"src":"10176:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10157:27:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7578,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"10187:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10157:36:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7580,"nodeType":"ExpressionStatement","src":"10157:36:61"},{"eventCall":{"arguments":[{"id":7582,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7566,"src":"10217:5:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7583,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7568,"src":"10224:7:61","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7584,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7570,"src":"10233:6:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7581,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"10208:8:61","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10208:32:61","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7586,"nodeType":"EmitStatement","src":"10203:37:61"}]},"documentation":{"id":7564,"nodeType":"StructuredDocumentation","src":"9617:412:61","text":" @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."},"id":7588,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","parameters":{"id":7571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7566,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7588,"src":"10061:13:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7565,"name":"address","nodeType":"ElementaryTypeName","src":"10061:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7568,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7588,"src":"10084:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7567,"name":"address","nodeType":"ElementaryTypeName","src":"10084:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7570,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7588,"src":"10109:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7569,"name":"uint256","nodeType":"ElementaryTypeName","src":"10109:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10051:78:61"},"returnParameters":{"id":7572,"nodeType":"ParameterList","parameters":[],"src":"10147:0:61"},"scope":7611,"src":"10034:213:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":7598,"nodeType":"Block","src":"10620:38:61","statements":[{"expression":{"id":7596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":7594,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7149,"src":"10630:9:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7595,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7591,"src":"10642:9:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"10630:21:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7597,"nodeType":"ExpressionStatement","src":"10630:21:61"}]},"documentation":{"id":7589,"nodeType":"StructuredDocumentation","src":"10253:312:61","text":" @dev Sets {decimals} to a value other than the default one of 18.\n WARNING: This function should only be called from the constructor. Most\n applications that interact with token contracts will not expect\n {decimals} to ever change, and may work incorrectly if it does."},"id":7599,"implemented":true,"kind":"function","modifiers":[],"name":"_setupDecimals","nodeType":"FunctionDefinition","parameters":{"id":7592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7591,"mutability":"mutable","name":"decimals_","nodeType":"VariableDeclaration","scope":7599,"src":"10594:15:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7590,"name":"uint8","nodeType":"ElementaryTypeName","src":"10594:5:61","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"10593:17:61"},"returnParameters":{"id":7593,"nodeType":"ParameterList","parameters":[],"src":"10620:0:61"},"scope":7611,"src":"10570:88:61","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7609,"nodeType":"Block","src":"11364:64:61","statements":[]},"documentation":{"id":7600,"nodeType":"StructuredDocumentation","src":"10664:576:61","text":" @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":7610,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nodeType":"FunctionDefinition","parameters":{"id":7607,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7602,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":7610,"src":"11284:12:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7601,"name":"address","nodeType":"ElementaryTypeName","src":"11284:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7604,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":7610,"src":"11306:10:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7603,"name":"address","nodeType":"ElementaryTypeName","src":"11306:7:61","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7606,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7610,"src":"11326:14:61","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7605,"name":"uint256","nodeType":"ElementaryTypeName","src":"11326:7:61","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11274:72:61"},"returnParameters":{"id":7608,"nodeType":"ParameterList","parameters":[],"src":"11364:0:61"},"scope":7611,"src":"11245:183:61","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":7612,"src":"1427:10003:61"}],"src":"33:11398:61"},"id":61},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","exportedSymbols":{"ERC20Burnable":[7668]},"id":7669,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7613,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:62"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":7614,"nodeType":"ImportDirective","scope":7669,"sourceUnit":7612,"src":"58:21:62","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7616,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7611,"src":"325:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$7611","typeString":"contract ERC20"}},"id":7617,"nodeType":"InheritanceSpecifier","src":"325:5:62"}],"contractDependencies":[2090,7611],"contractKind":"contract","documentation":{"id":7615,"nodeType":"StructuredDocumentation","src":"81:208:62","text":" @dev Extension of {ERC20} that allows token holders to destroy both their own\n tokens and those that they have an allowance for, in a way that can be\n recognized off-chain (via event analysis)."},"fullyImplemented":false,"id":7668,"linearizedBaseContracts":[7668,7611,2090],"name":"ERC20Burnable","nodeType":"ContractDefinition","nodes":[{"id":7620,"libraryName":{"id":7618,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8573,"src":"343:8:62","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8573","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"337:27:62","typeName":{"id":7619,"name":"uint256","nodeType":"ElementaryTypeName","src":"356:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":7632,"nodeType":"Block","src":"518:42:62","statements":[{"expression":{"arguments":[{"expression":{"id":7627,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"534:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"534:10:62","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7629,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7623,"src":"546:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7626,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"528:5:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"528:25:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7631,"nodeType":"ExpressionStatement","src":"528:25:62"}]},"documentation":{"id":7621,"nodeType":"StructuredDocumentation","src":"370:98:62","text":" @dev Destroys `amount` tokens from the caller.\n See {ERC20-_burn}."},"functionSelector":"42966c68","id":7633,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":7624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7623,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7633,"src":"487:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7622,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"486:16:62"},"returnParameters":{"id":7625,"nodeType":"ParameterList","parameters":[],"src":"518:0:62"},"scope":7668,"src":"473:87:62","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":7666,"nodeType":"Block","src":"932:217:62","statements":[{"assignments":[7642],"declarations":[{"constant":false,"id":7642,"mutability":"mutable","name":"decreasedAllowance","nodeType":"VariableDeclaration","scope":7666,"src":"942:26:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7641,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7653,"initialValue":{"arguments":[{"id":7649,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7638,"src":"1006:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7650,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1014:6:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ERC20_BURN_EXCEEDS_ALLOWANCE","nodeType":"MemberAccess","referencedDeclaration":1679,"src":"1014:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":7644,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7636,"src":"981:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7645,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"990:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"990:10:62","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":7643,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7271,"src":"971:9:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":7647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8572,"src":"971:34:62","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"971:79:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"942:108:62"},{"expression":{"arguments":[{"id":7655,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7636,"src":"1070:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":7656,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1079:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1079:10:62","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":7658,"name":"decreasedAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7642,"src":"1091:18:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7654,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"1061:8:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1061:49:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7660,"nodeType":"ExpressionStatement","src":"1061:49:62"},{"expression":{"arguments":[{"id":7662,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7636,"src":"1126:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7663,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7638,"src":"1135:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7661,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"1120:5:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:22:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7665,"nodeType":"ExpressionStatement","src":"1120:22:62"}]},"documentation":{"id":7634,"nodeType":"StructuredDocumentation","src":"566:295:62","text":" @dev Destroys `amount` tokens from `account`, deducting from the caller's\n allowance.\n See {ERC20-_burn} and {ERC20-allowance}.\n Requirements:\n - the caller must have allowance for ``accounts``'s tokens of at least\n `amount`."},"functionSelector":"79cc6790","id":7667,"implemented":true,"kind":"function","modifiers":[],"name":"burnFrom","nodeType":"FunctionDefinition","parameters":{"id":7639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7636,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":7667,"src":"884:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7635,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7638,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":7667,"src":"901:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7637,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"883:33:62"},"returnParameters":{"id":7640,"nodeType":"ParameterList","parameters":[],"src":"932:0:62"},"scope":7668,"src":"866:283:62","stateMutability":"nonpayable","virtual":true,"visibility":"public"}],"scope":7669,"src":"290:861:62"}],"src":"33:1119:62"},"id":62},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","exportedSymbols":{"ERC20Permit":[7777]},"id":7778,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7670,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:63"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":7671,"nodeType":"ImportDirective","scope":7778,"sourceUnit":2127,"src":"58:93:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"./ERC20.sol","id":7672,"nodeType":"ImportDirective","scope":7778,"sourceUnit":7612,"src":"153:21:63","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol","file":"../helpers/EOASignaturesValidator.sol","id":7673,"nodeType":"ImportDirective","scope":7778,"sourceUnit":4484,"src":"175:47:63","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":7675,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7611,"src":"775:5:63","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$7611","typeString":"contract ERC20"}},"id":7676,"nodeType":"InheritanceSpecifier","src":"775:5:63"},{"baseName":{"id":7677,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2126,"src":"782:12:63","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2126","typeString":"contract IERC20Permit"}},"id":7678,"nodeType":"InheritanceSpecifier","src":"782:12:63"},{"baseName":{"id":7679,"name":"EOASignaturesValidator","nodeType":"UserDefinedTypeName","referencedDeclaration":4483,"src":"796:22:63","typeDescriptions":{"typeIdentifier":"t_contract$_EOASignaturesValidator_$4483","typeString":"contract EOASignaturesValidator"}},"id":7680,"nodeType":"InheritanceSpecifier","src":"796:22:63"}],"contractDependencies":[1898,2090,2126,4483,7120,7611],"contractKind":"contract","documentation":{"id":7674,"nodeType":"StructuredDocumentation","src":"224:517:63","text":" @dev Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].\n Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n _Available since v3.4._"},"fullyImplemented":false,"id":7777,"linearizedBaseContracts":[7777,4483,7120,1898,2126,7611,2090],"name":"ERC20Permit","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":7685,"mutability":"constant","name":"_PERMIT_TYPEHASH","nodeType":"VariableDeclaration","scope":7777,"src":"877:153:63","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"877:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":7683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"940:84:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":7682,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"921:9:63","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"921:109:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":7695,"nodeType":"Block","src":"1312:64:63","statements":[]},"documentation":{"id":7686,"nodeType":"StructuredDocumentation","src":"1037:220:63","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC20 token name."},"id":7696,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":7691,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7688,"src":"1301:4:63","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":7692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1307:3:63","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":7693,"modifierName":{"id":7690,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7120,"src":"1294:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_EIP712_$7120_$","typeString":"type(contract EIP712)"}},"nodeType":"ModifierInvocation","src":"1294:17:63"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":7689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7688,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":7696,"src":"1274:18:63","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":7687,"name":"string","nodeType":"ElementaryTypeName","src":"1274:6:63","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1273:20:63"},"returnParameters":{"id":7694,"nodeType":"ParameterList","parameters":[],"src":"1312:0:63"},"scope":7777,"src":"1262:114:63","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[2111],"body":{"id":7750,"nodeType":"Block","src":"1635:310:63","statements":[{"assignments":[7716],"declarations":[{"constant":false,"id":7716,"mutability":"mutable","name":"structHash","nodeType":"VariableDeclaration","scope":7750,"src":"1645:18:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7715,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1645:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":7730,"initialValue":{"arguments":[{"arguments":[{"id":7720,"name":"_PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7685,"src":"1700:16:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7721,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"1718:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7722,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7701,"src":"1725:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7703,"src":"1734:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":7725,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"1754:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7724,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4340,"src":"1741:12:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":7727,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"1762:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":7718,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1689:3:63","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":7719,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1689:10:63","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":7728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1689:82:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":7717,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1666:9:63","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":7729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1666:115:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1645:136:63"},{"expression":{"arguments":[{"id":7732,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"1814:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7733,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7716,"src":"1821:10:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":7735,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"1851:1:63","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":7736,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"1854:1:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":7737,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7711,"src":"1857:1:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":7734,"name":"_toArraySignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4482,"src":"1833:17:63","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint8,bytes32,bytes32) pure returns (bytes memory)"}},"id":7738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1833:26:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":7739,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7705,"src":"1861:8:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":7740,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1871:6:63","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"INVALID_SIGNATURE","nodeType":"MemberAccess","referencedDeclaration":1775,"src":"1871:24:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7731,"name":"_ensureValidSignature","nodeType":"Identifier","overloadedDeclarations":[4364,4408],"referencedDeclaration":4408,"src":"1792:21:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,bytes32,bytes memory,uint256,uint256)"}},"id":7742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1792:104:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7743,"nodeType":"ExpressionStatement","src":"1792:104:63"},{"expression":{"arguments":[{"id":7745,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7699,"src":"1916:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7746,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7701,"src":"1923:7:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7747,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7703,"src":"1932:5:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7744,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7588,"src":"1907:8:63","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":7748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1907:31:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7749,"nodeType":"ExpressionStatement","src":"1907:31:63"}]},"documentation":{"id":7697,"nodeType":"StructuredDocumentation","src":"1382:50:63","text":" @dev See {IERC20Permit-permit}."},"functionSelector":"d505accf","id":7751,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":7713,"nodeType":"OverrideSpecifier","overrides":[],"src":"1626:8:63"},"parameters":{"id":7712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7699,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7751,"src":"1462:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7698,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7701,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","scope":7751,"src":"1485:15:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7700,"name":"address","nodeType":"ElementaryTypeName","src":"1485:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":7703,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7751,"src":"1510:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7702,"name":"uint256","nodeType":"ElementaryTypeName","src":"1510:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7705,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":7751,"src":"1533:16:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1533:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":7707,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":7751,"src":"1559:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7706,"name":"uint8","nodeType":"ElementaryTypeName","src":"1559:5:63","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":7709,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":7751,"src":"1576:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7708,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1576:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":7711,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":7751,"src":"1595:9:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7710,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1595:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1452:158:63"},"returnParameters":{"id":7714,"nodeType":"ParameterList","parameters":[],"src":"1635:0:63"},"scope":7777,"src":"1437:508:63","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[2119],"body":{"id":7764,"nodeType":"Block","src":"2076:43:63","statements":[{"expression":{"arguments":[{"id":7761,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7754,"src":"2106:5:63","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":7760,"name":"getNextNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4340,"src":"2093:12:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":7762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2093:19:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7759,"id":7763,"nodeType":"Return","src":"2086:26:63"}]},"documentation":{"id":7752,"nodeType":"StructuredDocumentation","src":"1951:50:63","text":" @dev See {IERC20Permit-nonces}."},"functionSelector":"7ecebe00","id":7765,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":{"id":7756,"nodeType":"OverrideSpecifier","overrides":[],"src":"2049:8:63"},"parameters":{"id":7755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7754,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":7765,"src":"2022:13:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7753,"name":"address","nodeType":"ElementaryTypeName","src":"2022:7:63","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2021:15:63"},"returnParameters":{"id":7759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7758,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7765,"src":"2067:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7757,"name":"uint256","nodeType":"ElementaryTypeName","src":"2067:7:63","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2066:9:63"},"scope":7777,"src":"2006:113:63","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2125],"body":{"id":7775,"nodeType":"Block","src":"2312:44:63","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":7772,"name":"getDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"2329:18:63","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":7773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:20:63","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":7771,"id":7774,"nodeType":"Return","src":"2322:27:63"}]},"documentation":{"id":7766,"nodeType":"StructuredDocumentation","src":"2125:60:63","text":" @dev See {IERC20Permit-DOMAIN_SEPARATOR}."},"functionSelector":"3644e515","id":7776,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":{"id":7768,"nodeType":"OverrideSpecifier","overrides":[],"src":"2285:8:63"},"parameters":{"id":7767,"nodeType":"ParameterList","parameters":[],"src":"2268:2:63"},"returnParameters":{"id":7771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7770,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7776,"src":"2303:7:63","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":7769,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2303:7:63","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2302:9:63"},"scope":7777,"src":"2243:113:63","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":7778,"src":"742:1616:63"}],"src":"33:2326:63"},"id":63},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","exportedSymbols":{"EnumerableSet":[8230]},"id":8231,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7779,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"406:23:64"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":7780,"nodeType":"ImportDirective","scope":8231,"sourceUnit":1870,"src":"431:90:64","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":7781,"nodeType":"StructuredDocumentation","src":"523:686:64","text":" @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported."},"fullyImplemented":true,"id":8230,"linearizedBaseContracts":[8230],"name":"EnumerableSet","nodeType":"ContractDefinition","nodes":[{"canonicalName":"EnumerableSet.AddressSet","id":7789,"members":[{"constant":false,"id":7784,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":7789,"src":"1503:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":7782,"name":"address","nodeType":"ElementaryTypeName","src":"1503:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7783,"nodeType":"ArrayTypeName","src":"1503:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":7788,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":7789,"src":"1653:36:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":7787,"keyType":{"id":7785,"name":"address","nodeType":"ElementaryTypeName","src":"1661:7:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1653:27:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":7786,"name":"uint256","nodeType":"ElementaryTypeName","src":"1672:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"AddressSet","nodeType":"StructDefinition","scope":8230,"src":"1442:254:64","visibility":"public"},{"body":{"id":7829,"nodeType":"Block","src":"1927:334:64","statements":[{"condition":{"id":7803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1941:21:64","subExpression":{"arguments":[{"id":7800,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"1951:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":7801,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"1956:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_address","typeString":"address"}],"id":7799,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[7933,8157],"referencedDeclaration":7933,"src":"1942:8:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":7802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7827,"nodeType":"Block","src":"2218:37:64","statements":[{"expression":{"hexValue":"66616c7365","id":7825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2239:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7798,"id":7826,"nodeType":"Return","src":"2232:12:64"}]},"id":7828,"nodeType":"IfStatement","src":"1937:318:64","trueBody":{"id":7824,"nodeType":"Block","src":"1964:248:64","statements":[{"expression":{"arguments":[{"id":7809,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"1995:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"expression":{"id":7804,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"1978:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"1978:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"1978:16:64","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":7810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1978:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7811,"nodeType":"ExpressionStatement","src":"1978:23:64"},{"expression":{"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7812,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"2136:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7788,"src":"2136:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7816,"indexExpression":{"id":7814,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7794,"src":"2149:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2136:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":7817,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7792,"src":"2158:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"2158:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2158:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:40:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7821,"nodeType":"ExpressionStatement","src":"2136:40:64"},{"expression":{"hexValue":"74727565","id":7822,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2197:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7798,"id":7823,"nodeType":"Return","src":"2190:11:64"}]}}]},"documentation":{"id":7790,"nodeType":"StructuredDocumentation","src":"1702:144:64","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, if it was not already present."},"id":7830,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":7795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7792,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7830,"src":"1864:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7791,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"1864:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7794,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7830,"src":"1888:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7793,"name":"address","nodeType":"ElementaryTypeName","src":"1888:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1863:39:64"},"returnParameters":{"id":7798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7797,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7830,"src":"1921:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7796,"name":"bool","nodeType":"ElementaryTypeName","src":"1921:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1920:6:64"},"scope":8230,"src":"1851:410:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7914,"nodeType":"Block","src":"2508:1388:64","statements":[{"assignments":[7841],"declarations":[{"constant":false,"id":7841,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":7914,"src":"2618:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7840,"name":"uint256","nodeType":"ElementaryTypeName","src":"2618:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7846,"initialValue":{"baseExpression":{"expression":{"id":7842,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"2639:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7788,"src":"2639:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7845,"indexExpression":{"id":7844,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7835,"src":"2652:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2639:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2618:40:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7847,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7841,"src":"2673:10:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2687:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2673:15:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7912,"nodeType":"Block","src":"3853:37:64","statements":[{"expression":{"hexValue":"66616c7365","id":7910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3874:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":7839,"id":7911,"nodeType":"Return","src":"3867:12:64"}]},"id":7913,"nodeType":"IfStatement","src":"2669:1221:64","trueBody":{"id":7909,"nodeType":"Block","src":"2690:1157:64","statements":[{"assignments":[7851],"declarations":[{"constant":false,"id":7851,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":7909,"src":"3042:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7850,"name":"uint256","nodeType":"ElementaryTypeName","src":"3042:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7855,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7852,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7841,"src":"3066:10:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3079:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3066:14:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3042:38:64"},{"assignments":[7857],"declarations":[{"constant":false,"id":7857,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":7909,"src":"3094:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7856,"name":"uint256","nodeType":"ElementaryTypeName","src":"3094:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":7863,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7858,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"3114:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7859,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"3114:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3114:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":7861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3135:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3114:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3094:42:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7864,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"3236:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":7865,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7857,"src":"3253:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3236:26:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":7893,"nodeType":"IfStatement","src":"3232:389:64","trueBody":{"id":7892,"nodeType":"Block","src":"3264:357:64","statements":[{"assignments":[7868],"declarations":[{"constant":false,"id":7868,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":7892,"src":"3282:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7867,"name":"address","nodeType":"ElementaryTypeName","src":"3282:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":7873,"initialValue":{"baseExpression":{"expression":{"id":7869,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"3302:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"3302:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7872,"indexExpression":{"id":7871,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7857,"src":"3314:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3302:22:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3282:42:64"},{"expression":{"id":7880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7874,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"3424:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"3424:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7878,"indexExpression":{"id":7876,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"3436:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3424:26:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":7879,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7868,"src":"3453:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3424:38:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":7881,"nodeType":"ExpressionStatement","src":"3424:38:64"},{"expression":{"id":7890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":7882,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"3536:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7788,"src":"3536:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7886,"indexExpression":{"id":7884,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7868,"src":"3549:9:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3536:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7887,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7851,"src":"3562:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":7888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3578:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3562:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3536:43:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7891,"nodeType":"ExpressionStatement","src":"3536:43:64"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":7894,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"3699:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7897,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"3699:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"3699:15:64","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":7899,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3699:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7900,"nodeType":"ExpressionStatement","src":"3699:17:64"},{"expression":{"id":7905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"3784:26:64","subExpression":{"baseExpression":{"expression":{"id":7901,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7833,"src":"3791:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7902,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7788,"src":"3791:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7904,"indexExpression":{"id":7903,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7835,"src":"3804:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3791:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7906,"nodeType":"ExpressionStatement","src":"3784:26:64"},{"expression":{"hexValue":"74727565","id":7907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3832:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":7839,"id":7908,"nodeType":"Return","src":"3825:11:64"}]}}]},"documentation":{"id":7831,"nodeType":"StructuredDocumentation","src":"2267:157:64","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present."},"id":7915,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":7836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7833,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7915,"src":"2445:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7832,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"2445:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7835,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7915,"src":"2469:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7834,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2444:39:64"},"returnParameters":{"id":7839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7838,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7915,"src":"2502:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7837,"name":"bool","nodeType":"ElementaryTypeName","src":"2502:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2501:6:64"},"scope":8230,"src":"2429:1467:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":7932,"nodeType":"Block","src":"4063:48:64","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7925,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7918,"src":"4080:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7788,"src":"4080:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":7928,"indexExpression":{"id":7927,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7920,"src":"4093:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4080:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":7929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4103:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4080:24:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":7924,"id":7931,"nodeType":"Return","src":"4073:31:64"}]},"documentation":{"id":7916,"nodeType":"StructuredDocumentation","src":"3902:70:64","text":" @dev Returns true if the value is in the set. O(1)."},"id":7933,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":7921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7918,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7933,"src":"3995:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7917,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"3995:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7920,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":7933,"src":"4019:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7919,"name":"address","nodeType":"ElementaryTypeName","src":"4019:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3994:39:64"},"returnParameters":{"id":7924,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7923,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7933,"src":"4057:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":7922,"name":"bool","nodeType":"ElementaryTypeName","src":"4057:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4056:6:64"},"scope":8230,"src":"3977:134:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7945,"nodeType":"Block","src":"4264:42:64","statements":[{"expression":{"expression":{"expression":{"id":7941,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7936,"src":"4281:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"4281:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4281:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7940,"id":7944,"nodeType":"Return","src":"4274:25:64"}]},"documentation":{"id":7934,"nodeType":"StructuredDocumentation","src":"4117:70:64","text":" @dev Returns the number of values on the set. O(1)."},"id":7946,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":7937,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7936,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7946,"src":"4208:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7935,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"4208:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"}],"src":"4207:24:64"},"returnParameters":{"id":7940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7939,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7946,"src":"4255:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7938,"name":"uint256","nodeType":"ElementaryTypeName","src":"4255:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4254:9:64"},"scope":8230,"src":"4192:114:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7971,"nodeType":"Block","src":"4731:116:64","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":7957,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4750:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7958,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"4750:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4750:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":7960,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7951,"src":"4771:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4750:26:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":7962,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4778:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":7963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1400,"src":"4778:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7956,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"4741:8:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":7964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4741:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7965,"nodeType":"ExpressionStatement","src":"4741:58:64"},{"expression":{"arguments":[{"id":7967,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7949,"src":"4829:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},{"id":7968,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7951,"src":"4834:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7966,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[7988,8212],"referencedDeclaration":7988,"src":"4816:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$_t_uint256_$returns$_t_address_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4816:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7955,"id":7970,"nodeType":"Return","src":"4809:31:64"}]},"documentation":{"id":7947,"nodeType":"StructuredDocumentation","src":"4312:331:64","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":7972,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":7952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7949,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7972,"src":"4660:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7948,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"4660:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7951,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7972,"src":"4684:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7950,"name":"uint256","nodeType":"ElementaryTypeName","src":"4684:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4659:39:64"},"returnParameters":{"id":7955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7954,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7972,"src":"4722:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7953,"name":"address","nodeType":"ElementaryTypeName","src":"4722:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4721:9:64"},"scope":8230,"src":"4648:199:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":7987,"nodeType":"Block","src":"5305:42:64","statements":[{"expression":{"baseExpression":{"expression":{"id":7982,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7975,"src":"5322:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7983,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":7784,"src":"5322:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":7985,"indexExpression":{"id":7984,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7977,"src":"5334:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5322:18:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":7981,"id":7986,"nodeType":"Return","src":"5315:25:64"}]},"documentation":{"id":7973,"nodeType":"StructuredDocumentation","src":"4853:301:64","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":7988,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":7978,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7975,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":7988,"src":"5234:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7974,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"5234:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7977,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":7988,"src":"5258:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7976,"name":"uint256","nodeType":"ElementaryTypeName","src":"5258:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5233:39:64"},"returnParameters":{"id":7981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7980,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":7988,"src":"5296:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7979,"name":"address","nodeType":"ElementaryTypeName","src":"5296:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5295:9:64"},"scope":8230,"src":"5212:135:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8004,"nodeType":"Block","src":"5444:47:64","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":7997,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7990,"src":"5461:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet storage pointer"}},"id":7998,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":7788,"src":"5461:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8000,"indexExpression":{"id":7999,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7992,"src":"5474:5:64","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5461:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5483:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5461:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7996,"id":8003,"nodeType":"Return","src":"5454:30:64"}]},"id":8005,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":7993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7990,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8005,"src":"5373:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":7989,"name":"AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"5373:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"internal"},{"constant":false,"id":7992,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8005,"src":"5397:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":7991,"name":"address","nodeType":"ElementaryTypeName","src":"5397:7:64","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5372:39:64"},"returnParameters":{"id":7996,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7995,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8005,"src":"5435:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7994,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5434:9:64"},"scope":8230,"src":"5353:138:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"canonicalName":"EnumerableSet.Bytes32Set","id":8013,"members":[{"constant":false,"id":8008,"mutability":"mutable","name":"_values","nodeType":"VariableDeclaration","scope":8013,"src":"5558:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":8006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5558:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8007,"nodeType":"ArrayTypeName","src":"5558:9:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":8012,"mutability":"mutable","name":"_indexes","nodeType":"VariableDeclaration","scope":8013,"src":"5708:36:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"typeName":{"id":8011,"keyType":{"id":8009,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5716:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"5708:27:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"},"valueType":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"5727:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"internal"}],"name":"Bytes32Set","nodeType":"StructDefinition","scope":8230,"src":"5497:254:64","visibility":"public"},{"body":{"id":8053,"nodeType":"Block","src":"5997:334:64","statements":[{"condition":{"id":8027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6011:21:64","subExpression":{"arguments":[{"id":8024,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"6021:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":8025,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"6026:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8023,"name":"contains","nodeType":"Identifier","overloadedDeclarations":[7933,8157],"referencedDeclaration":8157,"src":"6012:8:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$8013_storage_ptr_$_t_bytes32_$returns$_t_bool_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)"}},"id":8026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6012:20:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8051,"nodeType":"Block","src":"6288:37:64","statements":[{"expression":{"hexValue":"66616c7365","id":8049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6309:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8022,"id":8050,"nodeType":"Return","src":"6302:12:64"}]},"id":8052,"nodeType":"IfStatement","src":"6007:318:64","trueBody":{"id":8048,"nodeType":"Block","src":"6034:248:64","statements":[{"expression":{"arguments":[{"id":8033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"6065:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"expression":{"id":8028,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"6048:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"6048:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","src":"6048:16:64","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":8034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6048:23:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8035,"nodeType":"ExpressionStatement","src":"6048:23:64"},{"expression":{"id":8044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8036,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"6206:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8012,"src":"6206:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8040,"indexExpression":{"id":8038,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"6219:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6206:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"expression":{"id":8041,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"6228:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8042,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"6228:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8043,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6228:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6206:40:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8045,"nodeType":"ExpressionStatement","src":"6206:40:64"},{"expression":{"hexValue":"74727565","id":8046,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6267:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8022,"id":8047,"nodeType":"Return","src":"6260:11:64"}]}}]},"documentation":{"id":8014,"nodeType":"StructuredDocumentation","src":"5757:159:64","text":" @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present."},"id":8054,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":8019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8016,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8054,"src":"5934:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8015,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"5934:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8018,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8054,"src":"5958:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5958:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5933:39:64"},"returnParameters":{"id":8022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8021,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8054,"src":"5991:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8020,"name":"bool","nodeType":"ElementaryTypeName","src":"5991:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5990:6:64"},"scope":8230,"src":"5921:410:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8138,"nodeType":"Block","src":"6571:1388:64","statements":[{"assignments":[8065],"declarations":[{"constant":false,"id":8065,"mutability":"mutable","name":"valueIndex","nodeType":"VariableDeclaration","scope":8138,"src":"6681:18:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8064,"name":"uint256","nodeType":"ElementaryTypeName","src":"6681:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8070,"initialValue":{"baseExpression":{"expression":{"id":8066,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"6702:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8012,"src":"6702:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8069,"indexExpression":{"id":8068,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"6715:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6702:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6681:40:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8071,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"6736:10:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6750:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6736:15:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":8136,"nodeType":"Block","src":"7916:37:64","statements":[{"expression":{"hexValue":"66616c7365","id":8134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7937:5:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":8063,"id":8135,"nodeType":"Return","src":"7930:12:64"}]},"id":8137,"nodeType":"IfStatement","src":"6732:1221:64","trueBody":{"id":8133,"nodeType":"Block","src":"6753:1157:64","statements":[{"assignments":[8075],"declarations":[{"constant":false,"id":8075,"mutability":"mutable","name":"toDeleteIndex","nodeType":"VariableDeclaration","scope":8133,"src":"7105:21:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8074,"name":"uint256","nodeType":"ElementaryTypeName","src":"7105:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8079,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8076,"name":"valueIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"7129:10:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7129:14:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7105:38:64"},{"assignments":[8081],"declarations":[{"constant":false,"id":8081,"mutability":"mutable","name":"lastIndex","nodeType":"VariableDeclaration","scope":8133,"src":"7157:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8080,"name":"uint256","nodeType":"ElementaryTypeName","src":"7157:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8087,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8082,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"7177:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"7177:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7177:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7198:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7177:22:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7157:42:64"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8088,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"7299:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8089,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8081,"src":"7316:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7299:26:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8117,"nodeType":"IfStatement","src":"7295:389:64","trueBody":{"id":8116,"nodeType":"Block","src":"7327:357:64","statements":[{"assignments":[8092],"declarations":[{"constant":false,"id":8092,"mutability":"mutable","name":"lastValue","nodeType":"VariableDeclaration","scope":8116,"src":"7345:17:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8091,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7345:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":8097,"initialValue":{"baseExpression":{"expression":{"id":8093,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"7365:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"7365:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8096,"indexExpression":{"id":8095,"name":"lastIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8081,"src":"7377:9:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7365:22:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7345:42:64"},{"expression":{"id":8104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8098,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"7487:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8101,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"7487:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8102,"indexExpression":{"id":8100,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"7499:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7487:26:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8103,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"7516:9:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7487:38:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8105,"nodeType":"ExpressionStatement","src":"7487:38:64"},{"expression":{"id":8114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":8106,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"7599:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8012,"src":"7599:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8110,"indexExpression":{"id":8108,"name":"lastValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8092,"src":"7612:9:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7599:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8111,"name":"toDeleteIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8075,"src":"7625:13:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":8112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7641:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7625:17:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7599:43:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8115,"nodeType":"ExpressionStatement","src":"7599:43:64"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"expression":{"id":8118,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"7762:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"7762:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pop","nodeType":"MemberAccess","src":"7762:15:64","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7762:17:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8124,"nodeType":"ExpressionStatement","src":"7762:17:64"},{"expression":{"id":8129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"7847:26:64","subExpression":{"baseExpression":{"expression":{"id":8125,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"7854:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8126,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8012,"src":"7854:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8128,"indexExpression":{"id":8127,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"7867:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7854:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8130,"nodeType":"ExpressionStatement","src":"7847:26:64"},{"expression":{"hexValue":"74727565","id":8131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7895:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8063,"id":8132,"nodeType":"Return","src":"7888:11:64"}]}}]},"documentation":{"id":8055,"nodeType":"StructuredDocumentation","src":"6337:150:64","text":" @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was present."},"id":8139,"implemented":true,"kind":"function","modifiers":[],"name":"remove","nodeType":"FunctionDefinition","parameters":{"id":8060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8057,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8139,"src":"6508:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8056,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"6508:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8059,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8139,"src":"6532:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6532:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6507:39:64"},"returnParameters":{"id":8063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8139,"src":"6565:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8061,"name":"bool","nodeType":"ElementaryTypeName","src":"6565:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6564:6:64"},"scope":8230,"src":"6492:1467:64","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8156,"nodeType":"Block","src":"8126:48:64","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8149,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8142,"src":"8143:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8012,"src":"8143:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8152,"indexExpression":{"id":8151,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8144,"src":"8156:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8143:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8166:1:64","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8143:24:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8148,"id":8155,"nodeType":"Return","src":"8136:31:64"}]},"documentation":{"id":8140,"nodeType":"StructuredDocumentation","src":"7965:70:64","text":" @dev Returns true if the value is in the set. O(1)."},"id":8157,"implemented":true,"kind":"function","modifiers":[],"name":"contains","nodeType":"FunctionDefinition","parameters":{"id":8145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8142,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8157,"src":"8058:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8141,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"8058:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8144,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8157,"src":"8082:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8143,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8082:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8057:39:64"},"returnParameters":{"id":8148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8147,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8157,"src":"8120:4:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8146,"name":"bool","nodeType":"ElementaryTypeName","src":"8120:4:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8119:6:64"},"scope":8230,"src":"8040:134:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8169,"nodeType":"Block","src":"8327:42:64","statements":[{"expression":{"expression":{"expression":{"id":8165,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8160,"src":"8344:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8166,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"8344:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8344:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8164,"id":8168,"nodeType":"Return","src":"8337:25:64"}]},"documentation":{"id":8158,"nodeType":"StructuredDocumentation","src":"8180:70:64","text":" @dev Returns the number of values on the set. O(1)."},"id":8170,"implemented":true,"kind":"function","modifiers":[],"name":"length","nodeType":"FunctionDefinition","parameters":{"id":8161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8160,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8170,"src":"8271:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8159,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"8271:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"}],"src":"8270:24:64"},"returnParameters":{"id":8164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8163,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8170,"src":"8318:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8162,"name":"uint256","nodeType":"ElementaryTypeName","src":"8318:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8317:9:64"},"scope":8230,"src":"8255:114:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8195,"nodeType":"Block","src":"8794:116:64","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":8181,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8173,"src":"8813:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8182,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"8813:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8813:18:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":8184,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"8834:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8813:26:64","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8186,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"8841:6:64","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OUT_OF_BOUNDS","nodeType":"MemberAccess","referencedDeclaration":1400,"src":"8841:20:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8180,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"8804:8:64","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8804:58:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8189,"nodeType":"ExpressionStatement","src":"8804:58:64"},{"expression":{"arguments":[{"id":8191,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8173,"src":"8892:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},{"id":8192,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8175,"src":"8897:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8190,"name":"unchecked_at","nodeType":"Identifier","overloadedDeclarations":[7988,8212],"referencedDeclaration":8212,"src":"8879:12:64","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_Bytes32Set_$8013_storage_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (struct EnumerableSet.Bytes32Set storage pointer,uint256) view returns (bytes32)"}},"id":8193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8879:24:64","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8179,"id":8194,"nodeType":"Return","src":"8872:31:64"}]},"documentation":{"id":8171,"nodeType":"StructuredDocumentation","src":"8375:331:64","text":" @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}."},"id":8196,"implemented":true,"kind":"function","modifiers":[],"name":"at","nodeType":"FunctionDefinition","parameters":{"id":8176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8173,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8196,"src":"8723:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8172,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"8723:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8175,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8196,"src":"8747:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8174,"name":"uint256","nodeType":"ElementaryTypeName","src":"8747:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8722:39:64"},"returnParameters":{"id":8179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8178,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8196,"src":"8785:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8177,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8785:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8784:9:64"},"scope":8230,"src":"8711:199:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8211,"nodeType":"Block","src":"9368:42:64","statements":[{"expression":{"baseExpression":{"expression":{"id":8206,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8199,"src":"9385:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_values","nodeType":"MemberAccess","referencedDeclaration":8008,"src":"9385:11:64","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage","typeString":"bytes32[] storage ref"}},"id":8209,"indexExpression":{"id":8208,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8201,"src":"9397:5:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9385:18:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":8205,"id":8210,"nodeType":"Return","src":"9378:25:64"}]},"documentation":{"id":8197,"nodeType":"StructuredDocumentation","src":"8916:301:64","text":" @dev Same as {at}, except this doesn't revert if `index` it outside of the set (i.e. if it is equal or larger\n than {length}). O(1).\n This function performs one less storage read than {at}, but should only be used when `index` is known to be\n within bounds."},"id":8212,"implemented":true,"kind":"function","modifiers":[],"name":"unchecked_at","nodeType":"FunctionDefinition","parameters":{"id":8202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8199,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8212,"src":"9297:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8198,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"9297:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8201,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":8212,"src":"9321:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8200,"name":"uint256","nodeType":"ElementaryTypeName","src":"9321:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9296:39:64"},"returnParameters":{"id":8205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8204,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8212,"src":"9359:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8203,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9359:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9358:9:64"},"scope":8230,"src":"9275:135:64","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8228,"nodeType":"Block","src":"9507:47:64","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":8221,"name":"set","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8214,"src":"9524:3:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set storage pointer"}},"id":8222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_indexes","nodeType":"MemberAccess","referencedDeclaration":8012,"src":"9524:12:64","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":8224,"indexExpression":{"id":8223,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8216,"src":"9537:5:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9524:19:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":8225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9546:1:64","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9524:23:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8220,"id":8227,"nodeType":"Return","src":"9517:30:64"}]},"id":8229,"implemented":true,"kind":"function","modifiers":[],"name":"rawIndexOf","nodeType":"FunctionDefinition","parameters":{"id":8217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8214,"mutability":"mutable","name":"set","nodeType":"VariableDeclaration","scope":8229,"src":"9436:22:64","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"},"typeName":{"id":8213,"name":"Bytes32Set","nodeType":"UserDefinedTypeName","referencedDeclaration":8013,"src":"9436:10:64","typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Set_$8013_storage_ptr","typeString":"struct EnumerableSet.Bytes32Set"}},"visibility":"internal"},{"constant":false,"id":8216,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8229,"src":"9460:13:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9460:7:64","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"9435:39:64"},"returnParameters":{"id":8220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8219,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8229,"src":"9498:7:64","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8218,"name":"uint256","nodeType":"ElementaryTypeName","src":"9498:7:64","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9497:9:64"},"scope":8230,"src":"9416:138:64","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":8231,"src":"1210:8346:64"}],"src":"406:9151:64"},"id":64},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","exportedSymbols":{"ReentrancyGuard":[8286]},"id":8287,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8232,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"374:23:65"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8233,"nodeType":"ImportDirective","scope":8287,"sourceUnit":1870,"src":"399:90:65","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":{"id":8234,"nodeType":"StructuredDocumentation","src":"491:750:65","text":" @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]."},"fullyImplemented":true,"id":8286,"linearizedBaseContracts":[8286],"name":"ReentrancyGuard","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":8237,"mutability":"constant","name":"_NOT_ENTERED","nodeType":"VariableDeclaration","scope":8286,"src":"2030:41:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8235,"name":"uint256","nodeType":"ElementaryTypeName","src":"2030:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":8236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2070:1:65","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":true,"id":8240,"mutability":"constant","name":"_ENTERED","nodeType":"VariableDeclaration","scope":8286,"src":"2077:37:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8238,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"32","id":8239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2113:1:65","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"visibility":"private"},{"constant":false,"id":8242,"mutability":"mutable","name":"_status","nodeType":"VariableDeclaration","scope":8286,"src":"2121:23:65","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8241,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":8249,"nodeType":"Block","src":"2165:39:65","statements":[{"expression":{"id":8247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8245,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"2175:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8246,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"2185:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2175:22:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8248,"nodeType":"ExpressionStatement","src":"2175:22:65"}]},"id":8250,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8243,"nodeType":"ParameterList","parameters":[],"src":"2162:2:65"},"returnParameters":{"id":8244,"nodeType":"ParameterList","parameters":[],"src":"2165:0:65"},"scope":8286,"src":"2151:53:65","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8260,"nodeType":"Block","src":"2603:77:65","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8253,"name":"_enterNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8277,"src":"2613:18:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2613:20:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8255,"nodeType":"ExpressionStatement","src":"2613:20:65"},{"id":8256,"nodeType":"PlaceholderStatement","src":"2643:1:65"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":8257,"name":"_exitNonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8285,"src":"2654:17:65","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":8258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2654:19:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8259,"nodeType":"ExpressionStatement","src":"2654:19:65"}]},"documentation":{"id":8251,"nodeType":"StructuredDocumentation","src":"2210:364:65","text":" @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."},"id":8261,"name":"nonReentrant","nodeType":"ModifierDefinition","parameters":{"id":8252,"nodeType":"ParameterList","parameters":[],"src":"2600:2:65"},"src":"2579:101:65","virtual":false,"visibility":"internal"},{"body":{"id":8276,"nodeType":"Block","src":"2724:233:65","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8265,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"2818:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8266,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8240,"src":"2829:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2818:19:65","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8268,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2839:6:65","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"REENTRANCY","nodeType":"MemberAccess","referencedDeclaration":1628,"src":"2839:17:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8264,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"2809:8:65","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2809:48:65","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8271,"nodeType":"ExpressionStatement","src":"2809:48:65"},{"expression":{"id":8274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8272,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"2932:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8273,"name":"_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8240,"src":"2942:8:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2932:18:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8275,"nodeType":"ExpressionStatement","src":"2932:18:65"}]},"id":8277,"implemented":true,"kind":"function","modifiers":[],"name":"_enterNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":8262,"nodeType":"ParameterList","parameters":[],"src":"2713:2:65"},"returnParameters":{"id":8263,"nodeType":"ParameterList","parameters":[],"src":"2724:0:65"},"scope":8286,"src":"2686:271:65","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8284,"nodeType":"Block","src":"3000:171:65","statements":[{"expression":{"id":8282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8280,"name":"_status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8242,"src":"3142:7:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8281,"name":"_NOT_ENTERED","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"3152:12:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3142:22:65","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8283,"nodeType":"ExpressionStatement","src":"3142:22:65"}]},"id":8285,"implemented":true,"kind":"function","modifiers":[],"name":"_exitNonReentrant","nodeType":"FunctionDefinition","parameters":{"id":8278,"nodeType":"ParameterList","parameters":[],"src":"2989:2:65"},"returnParameters":{"id":8279,"nodeType":"ParameterList","parameters":[],"src":"3000:0:65"},"scope":8286,"src":"2963:208:65","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":8287,"src":"1242:1931:65"}],"src":"374:2800:65"},"id":65},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","exportedSymbols":{"SafeCast":[8341]},"id":8342,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8288,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:66"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8289,"nodeType":"ImportDirective","scope":8342,"sourceUnit":1870,"src":"58:90:66","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8290,"nodeType":"StructuredDocumentation","src":"150:709:66","text":" @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always.\n Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing\n all math on `uint256` and `int256` and then downcasting."},"fullyImplemented":true,"id":8341,"linearizedBaseContracts":[8341],"name":"SafeCast","nodeType":"ContractDefinition","nodes":[{"body":{"id":8313,"nodeType":"Block","src":"1117:114:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8299,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"1136:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":8300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1145:3:66","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1136:12:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1152:1:66","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1136:17:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8304,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1155:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_CAST_VALUE_CANT_FIT_INT256","nodeType":"MemberAccess","referencedDeclaration":1691,"src":"1155:38:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8298,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1127:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1127:67:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8307,"nodeType":"ExpressionStatement","src":"1127:67:66"},{"expression":{"arguments":[{"id":8310,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8293,"src":"1218:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1211:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":8308,"name":"int256","nodeType":"ElementaryTypeName","src":"1211:6:66","typeDescriptions":{}}},"id":8311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1211:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":8297,"id":8312,"nodeType":"Return","src":"1204:20:66"}]},"documentation":{"id":8291,"nodeType":"StructuredDocumentation","src":"883:165:66","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":8314,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nodeType":"FunctionDefinition","parameters":{"id":8294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8293,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8314,"src":"1071:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8292,"name":"uint256","nodeType":"ElementaryTypeName","src":"1071:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1070:15:66"},"returnParameters":{"id":8297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8314,"src":"1109:6:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":8295,"name":"int256","nodeType":"ElementaryTypeName","src":"1109:6:66","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1108:8:66"},"scope":8341,"src":"1053:178:66","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8339,"nodeType":"Block","src":"1474:122:66","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"1493:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"arguments":[{"id":8326,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1507:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8325,"name":"uint64","nodeType":"ElementaryTypeName","src":"1507:6:66","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":8324,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1502:4:66","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":8327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1502:12:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":8328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"max","nodeType":"MemberAccess","src":"1502:16:66","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1493:25:66","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8330,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1520:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_CAST_VALUE_CANT_FIT_UINT64","nodeType":"MemberAccess","referencedDeclaration":1754,"src":"1520:38:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8322,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1484:8:66","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1484:75:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8333,"nodeType":"ExpressionStatement","src":"1484:75:66"},{"expression":{"arguments":[{"id":8336,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"1583:5:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1576:6:66","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":8334,"name":"uint64","nodeType":"ElementaryTypeName","src":"1576:6:66","typeDescriptions":{}}},"id":8337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1576:13:66","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":8321,"id":8338,"nodeType":"Return","src":"1569:20:66"}]},"documentation":{"id":8315,"nodeType":"StructuredDocumentation","src":"1237:168:66","text":" @dev Converts an unsigned uint256 into an unsigned uint64.\n Requirements:\n - input must be less than or equal to maxUint64."},"id":8340,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nodeType":"FunctionDefinition","parameters":{"id":8318,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8317,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8340,"src":"1428:13:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8316,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:66","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:15:66"},"returnParameters":{"id":8321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8320,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8340,"src":"1466:6:66","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":8319,"name":"uint64","nodeType":"ElementaryTypeName","src":"1466:6:66","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1465:8:66"},"scope":8341,"src":"1410:186:66","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8342,"src":"860:738:66"}],"src":"33:1566:66"},"id":66},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","exportedSymbols":{"SafeERC20":[8495]},"id":8496,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8343,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"313:23:67"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8344,"nodeType":"ImportDirective","scope":8496,"sourceUnit":1870,"src":"338:90:67","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":8345,"nodeType":"ImportDirective","scope":8496,"sourceUnit":2091,"src":"429:87:67","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8346,"nodeType":"StructuredDocumentation","src":"518:457:67","text":" @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."},"fullyImplemented":true,"id":8495,"linearizedBaseContracts":[8495],"name":"SafeERC20","nodeType":"ContractDefinition","nodes":[{"body":{"id":8404,"nodeType":"Block","src":"1102:406:67","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8355,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8352,"src":"1218:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1218:10:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":8362,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1256:4:67","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}],"id":8361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1248:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8360,"name":"address","nodeType":"ElementaryTypeName","src":"1248:7:67","typeDescriptions":{}}},"id":8363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:13:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":8366,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"1271:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8365,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1263:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8364,"name":"address","nodeType":"ElementaryTypeName","src":"1263:7:67","typeDescriptions":{}}},"id":8367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1263:11:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":8358,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"1232:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":2049,"src":"1232:15:67","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":8368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1232:43:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":8369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1232:48:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1218:62:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8388,"nodeType":"IfStatement","src":"1214:183:67","trueBody":{"id":8387,"nodeType":"Block","src":"1282:115:67","statements":[{"expression":{"arguments":[{"arguments":[{"id":8375,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"1324:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":8374,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1316:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8373,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:67","typeDescriptions":{}}},"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1316:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":8379,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"1355:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2059,"src":"1355:13:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1355:22:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":8382,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"1379:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":8383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1383:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":8377,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1332:3:67","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1332:22:67","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1332:53:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8372,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"1296:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1296:90:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8386,"nodeType":"ExpressionStatement","src":"1296:90:67"}]}},{"expression":{"arguments":[{"arguments":[{"id":8392,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"1435:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":8391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1427:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8390,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:67","typeDescriptions":{}}},"id":8393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":8396,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8348,"src":"1466:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":2059,"src":"1466:13:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1466:22:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":8399,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"1490:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8400,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8352,"src":"1494:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8394,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1443:3:67","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1443:22:67","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1443:57:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8389,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"1407:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1407:94:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8403,"nodeType":"ExpressionStatement","src":"1407:94:67"}]},"id":8405,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","parameters":{"id":8353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8348,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8405,"src":"1031:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":8347,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1031:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8350,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":8405,"src":"1053:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8349,"name":"address","nodeType":"ElementaryTypeName","src":"1053:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8352,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8405,"src":"1073:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1073:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1021:71:67"},"returnParameters":{"id":8354,"nodeType":"ParameterList","parameters":[],"src":"1102:0:67"},"scope":8495,"src":"1001:507:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8429,"nodeType":"Block","src":"1616:112:67","statements":[{"expression":{"arguments":[{"arguments":[{"id":8417,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8407,"src":"1654:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":8416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1646:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8415,"name":"address","nodeType":"ElementaryTypeName","src":"1646:7:67","typeDescriptions":{}}},"id":8418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1646:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":8421,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8407,"src":"1685:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":2039,"src":"1685:14:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":8423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1685:23:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":8424,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8409,"src":"1710:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8425,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8411,"src":"1714:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8419,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1662:3:67","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8420,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1662:22:67","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1662:58:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8414,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"1626:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1626:95:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8428,"nodeType":"ExpressionStatement","src":"1626:95:67"}]},"id":8430,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","parameters":{"id":8412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8407,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8430,"src":"1545:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":8406,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1545:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8409,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":8430,"src":"1567:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8408,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8411,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8430,"src":"1587:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1535:71:67"},"returnParameters":{"id":8413,"nodeType":"ParameterList","parameters":[],"src":"1616:0:67"},"scope":8495,"src":"1514:214:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8457,"nodeType":"Block","src":"1862:122:67","statements":[{"expression":{"arguments":[{"arguments":[{"id":8444,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8432,"src":"1900:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":8443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1892:7:67","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8442,"name":"address","nodeType":"ElementaryTypeName","src":"1892:7:67","typeDescriptions":{}}},"id":8445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1892:14:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":8448,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8432,"src":"1931:5:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":2071,"src":"1931:18:67","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":8450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"1931:27:67","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":8451,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8434,"src":"1960:4:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8452,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8436,"src":"1966:2:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8453,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8438,"src":"1970:5:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":8446,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1908:3:67","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"1908:22:67","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1908:68:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8441,"name":"_callOptionalReturn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8494,"src":"1872:19:67","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":8455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:105:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8456,"nodeType":"ExpressionStatement","src":"1872:105:67"}]},"id":8458,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","parameters":{"id":8439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8432,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8458,"src":"1769:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":8431,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1769:6:67","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8434,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","scope":8458,"src":"1791:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8433,"name":"address","nodeType":"ElementaryTypeName","src":"1791:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8436,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":8458,"src":"1813:10:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8435,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8438,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":8458,"src":"1833:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8437,"name":"uint256","nodeType":"ElementaryTypeName","src":"1833:7:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1759:93:67"},"returnParameters":{"id":8440,"nodeType":"ParameterList","parameters":[],"src":"1862:0:67"},"scope":8495,"src":"1734:250:67","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8493,"nodeType":"Block","src":"2395:843:67","statements":[{"assignments":[8467,8469],"declarations":[{"constant":false,"id":8467,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","scope":8493,"src":"2626:12:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8466,"name":"bool","nodeType":"ElementaryTypeName","src":"2626:4:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":8469,"mutability":"mutable","name":"returndata","nodeType":"VariableDeclaration","scope":8493,"src":"2640:23:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8468,"name":"bytes","nodeType":"ElementaryTypeName","src":"2640:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":8474,"initialValue":{"arguments":[{"id":8472,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"2678:4:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":8470,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8461,"src":"2667:5:67","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","src":"2667:10:67","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2667:16:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2625:58:67"},{"AST":{"nodeType":"YulBlock","src":"2848:156:67","statements":[{"body":{"nodeType":"YulBlock","src":"2880:114:67","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2913:1:67","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2916:1:67","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2919:14:67"},"nodeType":"YulFunctionCall","src":"2919:16:67"}],"functionName":{"name":"returndatacopy","nodeType":"YulIdentifier","src":"2898:14:67"},"nodeType":"YulFunctionCall","src":"2898:38:67"},"nodeType":"YulExpressionStatement","src":"2898:38:67"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2960:1:67","type":"","value":"0"},{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"2963:14:67"},"nodeType":"YulFunctionCall","src":"2963:16:67"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2953:6:67"},"nodeType":"YulFunctionCall","src":"2953:27:67"},"nodeType":"YulExpressionStatement","src":"2953:27:67"}]},"condition":{"arguments":[{"name":"success","nodeType":"YulIdentifier","src":"2868:7:67"},{"kind":"number","nodeType":"YulLiteral","src":"2877:1:67","type":"","value":"0"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2865:2:67"},"nodeType":"YulFunctionCall","src":"2865:14:67"},"nodeType":"YulIf","src":"2862:2:67"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":8467,"isOffset":false,"isSlot":false,"src":"2868:7:67","valueSize":1}],"id":8475,"nodeType":"InlineAssembly","src":"2839:165:67"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":8477,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"3143:10:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3143:17:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":8479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3164:1:67","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3143:22:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":8483,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8469,"src":"3180:10:67","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"components":[{"id":8485,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3193:4:67","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":8484,"name":"bool","nodeType":"ElementaryTypeName","src":"3193:4:67","typeDescriptions":{}}}],"id":8486,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3192:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"id":8481,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3169:3:67","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","src":"3169:10:67","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:30:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3143:56:67","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8489,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3201:6:67","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAFE_ERC20_CALL_FAILED","nodeType":"MemberAccess","referencedDeclaration":1682,"src":"3201:29:67","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8476,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3134:8:67","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:97:67","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8492,"nodeType":"ExpressionStatement","src":"3134:97:67"}]},"documentation":{"id":8459,"nodeType":"StructuredDocumentation","src":"1990:329:67","text":" @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n WARNING: `token` is assumed to be a contract: calls to EOAs will *not* revert."},"id":8494,"implemented":true,"kind":"function","modifiers":[],"name":"_callOptionalReturn","nodeType":"FunctionDefinition","parameters":{"id":8464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8461,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8494,"src":"2353:13:67","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8460,"name":"address","nodeType":"ElementaryTypeName","src":"2353:7:67","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8463,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":8494,"src":"2368:17:67","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8462,"name":"bytes","nodeType":"ElementaryTypeName","src":"2368:5:67","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2352:34:67"},"returnParameters":{"id":8465,"nodeType":"ParameterList","parameters":[],"src":"2395:0:67"},"scope":8495,"src":"2324:914:67","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":8496,"src":"976:2264:67"}],"src":"313:2928:67"},"id":67},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol","exportedSymbols":{"SafeMath":[8573]},"id":8574,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":8497,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"33:23:68"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":8498,"nodeType":"ImportDirective","scope":8574,"sourceUnit":1870,"src":"58:90:68","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":{"id":8499,"nodeType":"StructuredDocumentation","src":"150:563:68","text":" @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always."},"fullyImplemented":true,"id":8573,"linearizedBaseContracts":[8573],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":8525,"nodeType":"Block","src":"1033:100:68","statements":[{"assignments":[8510],"declarations":[{"constant":false,"id":8510,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":8525,"src":"1043:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8509,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8514,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8511,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"1055:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":8512,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8504,"src":"1059:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1055:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1043:17:68"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8516,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8510,"src":"1079:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":8517,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8502,"src":"1084:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1079:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":8519,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1087:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ADD_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1370,"src":"1087:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8515,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1070:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1070:37:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8522,"nodeType":"ExpressionStatement","src":"1070:37:68"},{"expression":{"id":8523,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8510,"src":"1125:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8508,"id":8524,"nodeType":"Return","src":"1118:8:68"}]},"documentation":{"id":8500,"nodeType":"StructuredDocumentation","src":"737:224:68","text":" @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."},"id":8526,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","parameters":{"id":8505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8502,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":8526,"src":"979:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8501,"name":"uint256","nodeType":"ElementaryTypeName","src":"979:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8504,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":8526,"src":"990:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8503,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"978:22:68"},"returnParameters":{"id":8508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8507,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8526,"src":"1024:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8506,"name":"uint256","nodeType":"ElementaryTypeName","src":"1024:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1023:9:68"},"scope":8573,"src":"966:167:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8543,"nodeType":"Block","src":"1471:54:68","statements":[{"expression":{"arguments":[{"id":8537,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8529,"src":"1492:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":8538,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8531,"src":"1495:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":8539,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"1498:6:68","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":8540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SUB_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1373,"src":"1498:19:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8536,"name":"sub","nodeType":"Identifier","overloadedDeclarations":[8544,8572],"referencedDeclaration":8572,"src":"1488:3:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1488:30:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8535,"id":8542,"nodeType":"Return","src":"1481:37:68"}]},"documentation":{"id":8527,"nodeType":"StructuredDocumentation","src":"1139:260:68","text":" @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":8544,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":8532,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8529,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":8544,"src":"1417:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8528,"name":"uint256","nodeType":"ElementaryTypeName","src":"1417:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8531,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":8544,"src":"1428:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8530,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1416:22:68"},"returnParameters":{"id":8535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8534,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8544,"src":"1462:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8533,"name":"uint256","nodeType":"ElementaryTypeName","src":"1462:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1461:9:68"},"scope":8573,"src":"1404:121:68","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8571,"nodeType":"Block","src":"1932:90:68","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8557,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8549,"src":"1951:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":8558,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8547,"src":"1956:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1951:6:68","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":8560,"name":"errorCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8551,"src":"1959:9:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8556,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"1942:8:68","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":8561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1942:27:68","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8562,"nodeType":"ExpressionStatement","src":"1942:27:68"},{"assignments":[8564],"declarations":[{"constant":false,"id":8564,"mutability":"mutable","name":"c","nodeType":"VariableDeclaration","scope":8571,"src":"1979:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1979:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8568,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8565,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8547,"src":"1991:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":8566,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8549,"src":"1995:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1991:5:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1979:17:68"},{"expression":{"id":8569,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8564,"src":"2014:1:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8555,"id":8570,"nodeType":"Return","src":"2007:8:68"}]},"documentation":{"id":8545,"nodeType":"StructuredDocumentation","src":"1531:280:68","text":" @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."},"id":8572,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","parameters":{"id":8552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8547,"mutability":"mutable","name":"a","nodeType":"VariableDeclaration","scope":8572,"src":"1838:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8546,"name":"uint256","nodeType":"ElementaryTypeName","src":"1838:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8549,"mutability":"mutable","name":"b","nodeType":"VariableDeclaration","scope":8572,"src":"1857:9:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8548,"name":"uint256","nodeType":"ElementaryTypeName","src":"1857:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":8551,"mutability":"mutable","name":"errorCode","nodeType":"VariableDeclaration","scope":8572,"src":"1876:17:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8550,"name":"uint256","nodeType":"ElementaryTypeName","src":"1876:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1828:71:68"},"returnParameters":{"id":8555,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8554,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8572,"src":"1923:7:68","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8553,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:68","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1922:9:68"},"scope":8573,"src":"1816:206:68","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8574,"src":"714:1310:68"}],"src":"33:1992:68"},"id":68},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","exportedSymbols":{"ERC20Mock":[8617]},"id":8618,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8575,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:69"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"../openzeppelin/ERC20.sol","id":8576,"nodeType":"ImportDirective","scope":8618,"sourceUnit":7612,"src":"713:35:69","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8577,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7611,"src":"772:5:69","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$7611","typeString":"contract ERC20"}},"id":8578,"nodeType":"InheritanceSpecifier","src":"772:5:69"}],"contractDependencies":[2090,7611],"contractKind":"contract","fullyImplemented":true,"id":8617,"linearizedBaseContracts":[8617,7611,2090],"name":"ERC20Mock","nodeType":"ContractDefinition","nodes":[{"body":{"id":8589,"nodeType":"Block","src":"858:2:69","statements":[]},"id":8590,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8585,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8580,"src":"844:4:69","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":8586,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8582,"src":"850:6:69","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":8587,"modifierName":{"id":8584,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7611,"src":"838:5:69","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$7611_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"838:19:69"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8580,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8590,"src":"796:18:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8579,"name":"string","nodeType":"ElementaryTypeName","src":"796:6:69","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8582,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":8590,"src":"816:20:69","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8581,"name":"string","nodeType":"ElementaryTypeName","src":"816:6:69","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"795:42:69"},"returnParameters":{"id":8588,"nodeType":"ParameterList","parameters":[],"src":"858:0:69"},"scope":8617,"src":"784:76:69","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8602,"nodeType":"Block","src":"924:41:69","statements":[{"expression":{"arguments":[{"id":8598,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8592,"src":"940:9:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8599,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8594,"src":"951:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8597,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"934:5:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"934:24:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8601,"nodeType":"ExpressionStatement","src":"934:24:69"}]},"functionSelector":"40c10f19","id":8603,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":8595,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8592,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8603,"src":"880:17:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8591,"name":"address","nodeType":"ElementaryTypeName","src":"880:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8594,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8603,"src":"899:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8593,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"879:35:69"},"returnParameters":{"id":8596,"nodeType":"ParameterList","parameters":[],"src":"924:0:69"},"scope":8617,"src":"866:99:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8615,"nodeType":"Block","src":"1026:38:69","statements":[{"expression":{"arguments":[{"id":8611,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8605,"src":"1042:6:69","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8612,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8607,"src":"1050:6:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8610,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"1036:5:69","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1036:21:69","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8614,"nodeType":"ExpressionStatement","src":"1036:21:69"}]},"functionSelector":"9dc29fac","id":8616,"implemented":true,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","parameters":{"id":8608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8605,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":8616,"src":"985:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8604,"name":"address","nodeType":"ElementaryTypeName","src":"985:7:69","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8607,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8616,"src":"1001:14:69","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8606,"name":"uint256","nodeType":"ElementaryTypeName","src":"1001:7:69","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"984:32:69"},"returnParameters":{"id":8609,"nodeType":"ParameterList","parameters":[],"src":"1026:0:69"},"scope":8617,"src":"971:93:69","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8618,"src":"750:316:69"}],"src":"688:379:69"},"id":69},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"ast":{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","exportedSymbols":{"TestToken":[8663]},"id":8664,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8619,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:70"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol","file":"../openzeppelin/ERC20Burnable.sol","id":8620,"nodeType":"ImportDirective","scope":8664,"sourceUnit":7669,"src":"713:43:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol","file":"../openzeppelin/ERC20Permit.sol","id":8621,"nodeType":"ImportDirective","scope":8664,"sourceUnit":7778,"src":"757:41:70","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"../openzeppelin/ERC20.sol","id":8622,"nodeType":"ImportDirective","scope":8664,"sourceUnit":7612,"src":"799:35:70","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8623,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7611,"src":"858:5:70","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$7611","typeString":"contract ERC20"}},"id":8624,"nodeType":"InheritanceSpecifier","src":"858:5:70"},{"baseName":{"id":8625,"name":"ERC20Burnable","nodeType":"UserDefinedTypeName","referencedDeclaration":7668,"src":"865:13:70","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Burnable_$7668","typeString":"contract ERC20Burnable"}},"id":8626,"nodeType":"InheritanceSpecifier","src":"865:13:70"},{"baseName":{"id":8627,"name":"ERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":7777,"src":"880:11:70","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Permit_$7777","typeString":"contract ERC20Permit"}},"id":8628,"nodeType":"InheritanceSpecifier","src":"880:11:70"}],"contractDependencies":[1898,2090,2126,4483,7120,7611,7668,7777],"contractKind":"contract","fullyImplemented":true,"id":8663,"linearizedBaseContracts":[8663,7777,4483,7120,1898,2126,7668,7611,2090],"name":"TestToken","nodeType":"ContractDefinition","nodes":[{"body":{"id":8648,"nodeType":"Block","src":"1036:41:70","statements":[{"expression":{"arguments":[{"id":8645,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8634,"src":"1061:8:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":8644,"name":"_setupDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7599,"src":"1046:14:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":8646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1046:24:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8647,"nodeType":"ExpressionStatement","src":"1046:24:70"}]},"id":8649,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8637,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"1004:4:70","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":8638,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8632,"src":"1010:6:70","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":8639,"modifierName":{"id":8636,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7611,"src":"998:5:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$7611_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"998:19:70"},{"arguments":[{"id":8641,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8630,"src":"1030:4:70","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":8642,"modifierName":{"id":8640,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7777,"src":"1018:11:70","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Permit_$7777_$","typeString":"type(contract ERC20Permit)"}},"nodeType":"ModifierInvocation","src":"1018:17:70"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8630,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8649,"src":"919:18:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8629,"name":"string","nodeType":"ElementaryTypeName","src":"919:6:70","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8632,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":8649,"src":"947:20:70","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8631,"name":"string","nodeType":"ElementaryTypeName","src":"947:6:70","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":8634,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":8649,"src":"977:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8633,"name":"uint8","nodeType":"ElementaryTypeName","src":"977:5:70","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"909:88:70"},"returnParameters":{"id":8643,"nodeType":"ParameterList","parameters":[],"src":"1036:0:70"},"scope":8663,"src":"898:179:70","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8661,"nodeType":"Block","src":"1141:41:70","statements":[{"expression":{"arguments":[{"id":8657,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8651,"src":"1157:9:70","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8653,"src":"1168:6:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8656,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"1151:5:70","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1151:24:70","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8660,"nodeType":"ExpressionStatement","src":"1151:24:70"}]},"functionSelector":"40c10f19","id":8662,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":8654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8651,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8662,"src":"1097:17:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8650,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:70","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8653,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8662,"src":"1116:14:70","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8652,"name":"uint256","nodeType":"ElementaryTypeName","src":"1116:7:70","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1096:35:70"},"returnParameters":{"id":8655,"nodeType":"ParameterList","parameters":[],"src":"1141:0:70"},"scope":8663,"src":"1083:99:70","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8664,"src":"836:348:70"}],"src":"688:497:70"},"id":70},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"ast":{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","exportedSymbols":{"AssetHelpers":[8793]},"id":8794,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8665,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:71"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":8666,"nodeType":"ImportDirective","scope":8794,"sourceUnit":2091,"src":"713:87:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":8667,"nodeType":"ImportDirective","scope":8794,"sourceUnit":2013,"src":"801:78:71","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol","id":8668,"nodeType":"ImportDirective","scope":8794,"sourceUnit":2905,"src":"880:65:71","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":8793,"linearizedBaseContracts":[8793],"name":"AssetHelpers","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8670,"mutability":"immutable","name":"_weth","nodeType":"VariableDeclaration","scope":8793,"src":"1036:29:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"},"typeName":{"id":8669,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2012,"src":"1036:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"visibility":"private"},{"constant":true,"id":8676,"mutability":"constant","name":"_ETH","nodeType":"VariableDeclaration","scope":8793,"src":"1367:42:71","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8671,"name":"address","nodeType":"ElementaryTypeName","src":"1367:7:71","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":{"arguments":[{"hexValue":"30","id":8674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1407:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1399:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8672,"name":"address","nodeType":"ElementaryTypeName","src":"1399:7:71","typeDescriptions":{}}},"id":8675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1399:10:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"private"},{"body":{"id":8685,"nodeType":"Block","src":"1440:29:71","statements":[{"expression":{"id":8683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8681,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8670,"src":"1450:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8682,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8678,"src":"1458:4:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"src":"1450:12:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"id":8684,"nodeType":"ExpressionStatement","src":"1450:12:71"}]},"id":8686,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8678,"mutability":"mutable","name":"weth","nodeType":"VariableDeclaration","scope":8686,"src":"1428:10:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"},"typeName":{"id":8677,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2012,"src":"1428:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1427:12:71"},"returnParameters":{"id":8680,"nodeType":"ParameterList","parameters":[],"src":"1440:0:71"},"scope":8793,"src":"1416:53:71","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8693,"nodeType":"Block","src":"1575:29:71","statements":[{"expression":{"id":8691,"name":"_weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8670,"src":"1592:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"functionReturnParameters":8690,"id":8692,"nodeType":"Return","src":"1585:12:71"}]},"id":8694,"implemented":true,"kind":"function","modifiers":[],"name":"_WETH","nodeType":"FunctionDefinition","parameters":{"id":8687,"nodeType":"ParameterList","parameters":[],"src":"1542:2:71"},"returnParameters":{"id":8690,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8689,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8694,"src":"1568:5:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"},"typeName":{"id":8688,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2012,"src":"1568:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"1567:7:71"},"scope":8793,"src":"1528:76:71","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8709,"nodeType":"Block","src":"1764:46:71","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":8704,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8697,"src":"1789:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":8703,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1781:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8702,"name":"address","nodeType":"ElementaryTypeName","src":"1781:7:71","typeDescriptions":{}}},"id":8705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1781:14:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":8706,"name":"_ETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8676,"src":"1799:4:71","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1781:22:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8701,"id":8708,"nodeType":"Return","src":"1774:29:71"}]},"documentation":{"id":8695,"nodeType":"StructuredDocumentation","src":"1610:90:71","text":" @dev Returns true if `asset` is the sentinel value that represents ETH."},"id":8710,"implemented":true,"kind":"function","modifiers":[],"name":"_isETH","nodeType":"FunctionDefinition","parameters":{"id":8698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8697,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":8710,"src":"1721:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":8696,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"1721:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"1720:14:71"},"returnParameters":{"id":8701,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8700,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8710,"src":"1758:4:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8699,"name":"bool","nodeType":"ElementaryTypeName","src":"1758:4:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1757:6:71"},"scope":8793,"src":"1705:105:71","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8728,"nodeType":"Block","src":"2055:66:71","statements":[{"expression":{"condition":{"arguments":[{"id":8719,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8713,"src":"2079:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":8718,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8710,"src":"2072:6:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":8720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2072:13:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":8724,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8713,"src":"2108:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":8723,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"2098:9:71","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_contract$_IERC20_$2090_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":8725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2098:16:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2072:42:71","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":8721,"name":"_WETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8694,"src":"2088:5:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IWETH_$2012_$","typeString":"function () view returns (contract IWETH)"}},"id":8722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2088:7:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"functionReturnParameters":8717,"id":8727,"nodeType":"Return","src":"2065:49:71"}]},"documentation":{"id":8711,"nodeType":"StructuredDocumentation","src":"1816:161:71","text":" @dev Translates `asset` into an equivalent IERC20 token address. If `asset` represents ETH, it will be translated\n to the WETH contract."},"id":8729,"implemented":true,"kind":"function","modifiers":[],"name":"_translateToIERC20","nodeType":"FunctionDefinition","parameters":{"id":8714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8713,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":8729,"src":"2010:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":8712,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2010:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"2009:14:71"},"returnParameters":{"id":8717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8716,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8729,"src":"2047:6:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":8715,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2047:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2046:8:71"},"scope":8793,"src":"1982:139:71","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8775,"nodeType":"Block","src":"2310:211:71","statements":[{"assignments":[8742],"declarations":[{"constant":false,"id":8742,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":8775,"src":"2320:22:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":8740,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2320:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8741,"nodeType":"ArrayTypeName","src":"2320:8:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":8749,"initialValue":{"arguments":[{"expression":{"id":8746,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8733,"src":"2358:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2358:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2345:12:71","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":8743,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2349:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8744,"nodeType":"ArrayTypeName","src":"2349:8:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":8748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2345:27:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2320:52:71"},{"body":{"id":8771,"nodeType":"Block","src":"2426:66:71","statements":[{"expression":{"id":8769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8761,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8742,"src":"2440:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":8763,"indexExpression":{"id":8762,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"2447:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2440:9:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":8765,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8733,"src":"2471:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8767,"indexExpression":{"id":8766,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"2478:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2471:9:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":8764,"name":"_translateToIERC20","nodeType":"Identifier","overloadedDeclarations":[8729,8776],"referencedDeclaration":8729,"src":"2452:18:71","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IAsset_$2904_$returns$_t_contract$_IERC20_$2090_$","typeString":"function (contract IAsset) view returns (contract IERC20)"}},"id":8768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2452:29:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"2440:41:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8770,"nodeType":"ExpressionStatement","src":"2440:41:71"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8754,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"2402:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":8755,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8733,"src":"2406:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":8756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2406:13:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2402:17:71","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8772,"initializationExpression":{"assignments":[8751],"declarations":[{"constant":false,"id":8751,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":8772,"src":"2387:9:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8750,"name":"uint256","nodeType":"ElementaryTypeName","src":"2387:7:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":8753,"initialValue":{"hexValue":"30","id":8752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2399:1:71","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2387:13:71"},"loopExpression":{"expression":{"id":8759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2421:3:71","subExpression":{"id":8758,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"2423:1:71","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8760,"nodeType":"ExpressionStatement","src":"2421:3:71"},"nodeType":"ForStatement","src":"2382:110:71"},{"expression":{"id":8773,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8742,"src":"2508:6:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"functionReturnParameters":8738,"id":8774,"nodeType":"Return","src":"2501:13:71"}]},"documentation":{"id":8730,"nodeType":"StructuredDocumentation","src":"2127:86:71","text":" @dev Same as `_translateToIERC20(IAsset)`, but for an entire array."},"id":8776,"implemented":true,"kind":"function","modifiers":[],"name":"_translateToIERC20","nodeType":"FunctionDefinition","parameters":{"id":8734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8733,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":8776,"src":"2246:22:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":8731,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2246:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":8732,"nodeType":"ArrayTypeName","src":"2246:8:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"2245:24:71"},"returnParameters":{"id":8738,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8737,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8776,"src":"2293:15:71","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":8735,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2293:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8736,"nodeType":"ArrayTypeName","src":"2293:8:71","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2292:17:71"},"scope":8793,"src":"2218:303:71","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":8791,"nodeType":"Block","src":"2826:46:71","statements":[{"expression":{"arguments":[{"arguments":[{"id":8787,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8779,"src":"2858:5:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":8786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2850:7:71","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8785,"name":"address","nodeType":"ElementaryTypeName","src":"2850:7:71","typeDescriptions":{}}},"id":8788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2850:14:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":8784,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2843:6:71","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":8789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2843:22:71","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"functionReturnParameters":8783,"id":8790,"nodeType":"Return","src":"2836:29:71"}]},"documentation":{"id":8777,"nodeType":"StructuredDocumentation","src":"2527:230:71","text":" @dev Interprets `asset` as an IERC20 token. This function should only be called on `asset` if `_isETH` previously\n returned false for it, that is, if `asset` is guaranteed not to be the ETH sentinel value."},"id":8792,"implemented":true,"kind":"function","modifiers":[],"name":"_asIERC20","nodeType":"FunctionDefinition","parameters":{"id":8780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8779,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":8792,"src":"2781:12:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":8778,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2781:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"}],"src":"2780:14:71"},"returnParameters":{"id":8783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8782,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8792,"src":"2818:6:71","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":8781,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2818:6:71","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2817:8:71"},"scope":8793,"src":"2762:110:71","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8794,"src":"947:1927:71"}],"src":"688:2187:71"},"id":71},"contracts/BALTokenHolder.sol":{"ast":{"absolutePath":"contracts/BALTokenHolder.sol","exportedSymbols":{"BALTokenHolder":[8898]},"id":8899,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8795,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:72"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":8796,"nodeType":"ImportDirective","scope":8899,"sourceUnit":253,"src":"713:84:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol","id":8797,"nodeType":"ImportDirective","scope":8899,"sourceUnit":2178,"src":"798:85:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":8798,"nodeType":"ImportDirective","scope":8899,"sourceUnit":3618,"src":"884:65:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":8799,"nodeType":"ImportDirective","scope":8899,"sourceUnit":4891,"src":"951:88:72","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":8800,"nodeType":"ImportDirective","scope":8899,"sourceUnit":8496,"src":"1040:79:72","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8802,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":2177,"src":"1590:15:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2177","typeString":"contract IBALTokenHolder"}},"id":8803,"nodeType":"InheritanceSpecifier","src":"1590:15:72"},{"baseName":{"id":8804,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4890,"src":"1607:23:72","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}},"id":8805,"nodeType":"InheritanceSpecifier","src":"1607:23:72"}],"contractDependencies":[1880,2177,4048,4890],"contractKind":"contract","documentation":{"id":8801,"nodeType":"StructuredDocumentation","src":"1121:441:72","text":" @dev This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It\n is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the\n final recipient of the funds to be configurable without having to alter the gauges themselves.\n There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake."},"fullyImplemented":true,"id":8898,"linearizedBaseContracts":[8898,4890,4048,2177,1880],"name":"BALTokenHolder","nodeType":"ContractDefinition","nodes":[{"id":8808,"libraryName":{"id":8806,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1643:9:72","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1637:27:72","typeName":{"id":8807,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1657:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"constant":false,"id":8810,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":8898,"src":"1670:47:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8809,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1670:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":8812,"mutability":"mutable","name":"_name","nodeType":"VariableDeclaration","scope":8898,"src":"1724:20:72","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":8811,"name":"string","nodeType":"ElementaryTypeName","src":"1724:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":8832,"nodeType":"Block","src":"1888:328:72","statements":[{"expression":{"id":8826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8824,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"2157:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8825,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8814,"src":"2174:13:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"src":"2157:30:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"id":8827,"nodeType":"ExpressionStatement","src":"2157:30:72"},{"expression":{"id":8830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8828,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8812,"src":"2197:5:72","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8829,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8818,"src":"2205:4:72","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"2197:12:72","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":8831,"nodeType":"ExpressionStatement","src":"2197:12:72"}]},"id":8833,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":8821,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8816,"src":"1881:5:72","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":8822,"modifierName":{"id":8820,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"1857:23:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4890_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1857:30:72"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8814,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":8833,"src":"1772:28:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8813,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1772:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"},{"constant":false,"id":8816,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":8833,"src":"1810:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":8815,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1810:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":8818,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8833,"src":"1832:18:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8817,"name":"string","nodeType":"ElementaryTypeName","src":"1832:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1762:94:72"},"returnParameters":{"id":8823,"nodeType":"ParameterList","parameters":[],"src":"1888:0:72"},"scope":8898,"src":"1751:465:72","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8840,"nodeType":"Block","src":"2289:38:72","statements":[{"expression":{"id":8838,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"2306:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"functionReturnParameters":8837,"id":8839,"nodeType":"Return","src":"2299:21:72"}]},"functionSelector":"c0039699","id":8841,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","parameters":{"id":8834,"nodeType":"ParameterList","parameters":[],"src":"2247:2:72"},"returnParameters":{"id":8837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8836,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8841,"src":"2273:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8835,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"2273:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"2272:16:72"},"scope":8898,"src":"2222:105:72","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2160],"body":{"id":8849,"nodeType":"Block","src":"2399:29:72","statements":[{"expression":{"id":8847,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8812,"src":"2416:5:72","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":8846,"id":8848,"nodeType":"Return","src":"2409:12:72"}]},"functionSelector":"17d7de7c","id":8850,"implemented":true,"kind":"function","modifiers":[],"name":"getName","nodeType":"FunctionDefinition","overrides":{"id":8843,"nodeType":"OverrideSpecifier","overrides":[],"src":"2366:8:72"},"parameters":{"id":8842,"nodeType":"ParameterList","parameters":[],"src":"2349:2:72"},"returnParameters":{"id":8846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8845,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8850,"src":"2384:13:72","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8844,"name":"string","nodeType":"ElementaryTypeName","src":"2384:6:72","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2383:15:72"},"scope":8898,"src":"2333:95:72","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2167],"body":{"id":8868,"nodeType":"Block","src":"2523:71:72","statements":[{"expression":{"arguments":[{"id":8864,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8852,"src":"2569:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8865,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8854,"src":"2580:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8861,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"2540:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}],"id":8860,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2533:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":8862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:22:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"2533:35:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2533:54:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8867,"nodeType":"ExpressionStatement","src":"2533:54:72"}]},"functionSelector":"c1075329","id":8869,"implemented":true,"kind":"function","modifiers":[{"id":8858,"modifierName":{"id":8857,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"2510:12:72","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2510:12:72"}],"name":"withdrawFunds","nodeType":"FunctionDefinition","overrides":{"id":8856,"nodeType":"OverrideSpecifier","overrides":[],"src":"2501:8:72"},"parameters":{"id":8855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8852,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8869,"src":"2457:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8851,"name":"address","nodeType":"ElementaryTypeName","src":"2457:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8854,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8869,"src":"2476:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8853,"name":"uint256","nodeType":"ElementaryTypeName","src":"2476:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2456:35:72"},"returnParameters":{"id":8859,"nodeType":"ParameterList","parameters":[],"src":"2523:0:72"},"scope":8898,"src":"2434:160:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2176],"body":{"id":8896,"nodeType":"Block","src":"2731:124:72","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"id":8884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":8882,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"2749:5:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":8883,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"2758:14:72","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"src":"2749:23:72","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43616e6e6f742073776565702042414c","id":8885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2774:18:72","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d6a4348f2dd8c59010fdb28b2f4c34ebf8d548c13bb41c26d8dc2e4aa1cf934","typeString":"literal_string \"Cannot sweep BAL\""},"value":"Cannot sweep BAL"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d6a4348f2dd8c59010fdb28b2f4c34ebf8d548c13bb41c26d8dc2e4aa1cf934","typeString":"literal_string \"Cannot sweep BAL\""}],"id":8881,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2741:7:72","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2741:52:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8887,"nodeType":"ExpressionStatement","src":"2741:52:72"},{"expression":{"arguments":[{"id":8892,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8873,"src":"2830:9:72","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":8893,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8875,"src":"2841:6:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":8889,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8871,"src":"2810:5:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":8888,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2803:6:72","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":8890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:13:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":8891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"2803:26:72","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":8894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:45:72","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8895,"nodeType":"ExpressionStatement","src":"2803:45:72"}]},"functionSelector":"8b6ca32c","id":8897,"implemented":true,"kind":"function","modifiers":[{"id":8879,"modifierName":{"id":8878,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"2718:12:72","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2718:12:72"}],"name":"sweepTokens","nodeType":"FunctionDefinition","overrides":{"id":8877,"nodeType":"OverrideSpecifier","overrides":[],"src":"2709:8:72"},"parameters":{"id":8876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8871,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":8897,"src":"2630:12:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":8870,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2630:6:72","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":8873,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":8897,"src":"2652:17:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8872,"name":"address","nodeType":"ElementaryTypeName","src":"2652:7:72","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":8875,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":8897,"src":"2679:14:72","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8874,"name":"uint256","nodeType":"ElementaryTypeName","src":"2679:7:72","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2620:79:72"},"returnParameters":{"id":8880,"nodeType":"ParameterList","parameters":[],"src":"2731:0:72"},"scope":8898,"src":"2600:255:72","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8899,"src":"1563:1294:72"}],"src":"688:2170:72"},"id":72},"contracts/BALTokenHolderFactory.sol":{"ast":{"absolutePath":"contracts/BALTokenHolderFactory.sol","exportedSymbols":{"BALTokenHolderFactory":[9005]},"id":9006,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":8900,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:73"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol","id":8901,"nodeType":"ImportDirective","scope":9006,"sourceUnit":253,"src":"713:84:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol","id":8902,"nodeType":"ImportDirective","scope":9006,"sourceUnit":2208,"src":"798:92:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":8903,"nodeType":"ImportDirective","scope":9006,"sourceUnit":3618,"src":"891:65:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":8904,"nodeType":"ImportDirective","scope":9006,"sourceUnit":4049,"src":"958:79:73","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/BALTokenHolder.sol","file":"./BALTokenHolder.sol","id":8905,"nodeType":"ImportDirective","scope":9006,"sourceUnit":8899,"src":"1039:30:73","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":8906,"name":"IBALTokenHolderFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":2207,"src":"1105:22:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolderFactory_$2207","typeString":"contract IBALTokenHolderFactory"}},"id":8907,"nodeType":"InheritanceSpecifier","src":"1105:22:73"}],"contractDependencies":[2207,8898],"contractKind":"contract","fullyImplemented":true,"id":9005,"linearizedBaseContracts":[9005,2207],"name":"BALTokenHolderFactory","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":8909,"mutability":"immutable","name":"_balancerToken","nodeType":"VariableDeclaration","scope":9005,"src":"1134:47:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8908,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1134:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"private"},{"constant":false,"id":8911,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":9005,"src":"1187:31:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":8910,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1187:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":8915,"mutability":"mutable","name":"_factoryCreatedHolders","nodeType":"VariableDeclaration","scope":9005,"src":"1225:55:73","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"typeName":{"id":8914,"keyType":{"id":8912,"name":"address","nodeType":"ElementaryTypeName","src":"1233:7:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1225:24:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueType":{"id":8913,"name":"bool","nodeType":"ElementaryTypeName","src":"1244:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}},"visibility":"private"},{"anonymous":false,"id":8921,"name":"BALTokenHolderCreated","nodeType":"EventDefinition","parameters":{"id":8920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8917,"indexed":false,"mutability":"mutable","name":"balTokenHolder","nodeType":"VariableDeclaration","scope":8921,"src":"1315:29:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"},"typeName":{"id":8916,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":8898,"src":"1315:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}},"visibility":"internal"},{"constant":false,"id":8919,"indexed":false,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":8921,"src":"1346:11:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8918,"name":"string","nodeType":"ElementaryTypeName","src":"1346:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1314:44:73"},"src":"1287:72:73"},{"body":{"id":8936,"nodeType":"Block","src":"1421:71:73","statements":[{"expression":{"id":8930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8928,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8909,"src":"1431:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8929,"name":"balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8923,"src":"1448:13:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"src":"1431:30:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"id":8931,"nodeType":"ExpressionStatement","src":"1431:30:73"},{"expression":{"id":8934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":8932,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8911,"src":"1471:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":8933,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8925,"src":"1480:5:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"1471:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":8935,"nodeType":"ExpressionStatement","src":"1471:14:73"}]},"id":8937,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":8926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8923,"mutability":"mutable","name":"balancerToken","nodeType":"VariableDeclaration","scope":8937,"src":"1377:28:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8922,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1377:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"},{"constant":false,"id":8925,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":8937,"src":"1407:12:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":8924,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1407:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1376:44:73"},"returnParameters":{"id":8927,"nodeType":"ParameterList","parameters":[],"src":"1421:0:73"},"scope":9005,"src":"1365:127:73","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2187],"body":{"id":8945,"nodeType":"Block","src":"1572:38:73","statements":[{"expression":{"id":8943,"name":"_balancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8909,"src":"1589:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"functionReturnParameters":8942,"id":8944,"nodeType":"Return","src":"1582:21:73"}]},"functionSelector":"c0039699","id":8946,"implemented":true,"kind":"function","modifiers":[],"name":"getBalancerToken","nodeType":"FunctionDefinition","overrides":{"id":8939,"nodeType":"OverrideSpecifier","overrides":[],"src":"1538:8:73"},"parameters":{"id":8938,"nodeType":"ParameterList","parameters":[],"src":"1523:2:73"},"returnParameters":{"id":8942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8941,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8946,"src":"1556:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},"typeName":{"id":8940,"name":"IBalancerToken","nodeType":"UserDefinedTypeName","referencedDeclaration":252,"src":"1556:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},"visibility":"internal"}],"src":"1555:16:73"},"scope":9005,"src":"1498:112:73","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2192],"body":{"id":8954,"nodeType":"Block","src":"1674:30:73","statements":[{"expression":{"id":8952,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8911,"src":"1691:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"functionReturnParameters":8951,"id":8953,"nodeType":"Return","src":"1684:13:73"}]},"functionSelector":"8d928af8","id":8955,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":8948,"nodeType":"OverrideSpecifier","overrides":[],"src":"1648:8:73"},"parameters":{"id":8947,"nodeType":"ParameterList","parameters":[],"src":"1633:2:73"},"returnParameters":{"id":8951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8950,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8955,"src":"1666:6:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":8949,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1666:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1665:8:73"},"scope":9005,"src":"1616:88:73","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2199],"body":{"id":8967,"nodeType":"Block","src":"1793:54:73","statements":[{"expression":{"baseExpression":{"id":8963,"name":"_factoryCreatedHolders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8915,"src":"1810:22:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8965,"indexExpression":{"id":8964,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8957,"src":"1833:6:73","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1810:30:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":8962,"id":8966,"nodeType":"Return","src":"1803:37:73"}]},"functionSelector":"36390717","id":8968,"implemented":true,"kind":"function","modifiers":[],"name":"isHolderFromFactory","nodeType":"FunctionDefinition","overrides":{"id":8959,"nodeType":"OverrideSpecifier","overrides":[],"src":"1769:8:73"},"parameters":{"id":8958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8957,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":8968,"src":"1739:14:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8956,"name":"address","nodeType":"ElementaryTypeName","src":"1739:7:73","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1738:16:73"},"returnParameters":{"id":8962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8961,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":8968,"src":"1787:4:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8960,"name":"bool","nodeType":"ElementaryTypeName","src":"1787:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1786:6:73"},"scope":9005,"src":"1710:137:73","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2206],"body":{"id":9003,"nodeType":"Block","src":"1933:228:73","statements":[{"assignments":[8977],"declarations":[{"constant":false,"id":8977,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":9003,"src":"1943:21:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"},"typeName":{"id":8976,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":8898,"src":"1943:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}},"visibility":"internal"}],"id":8986,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":8980,"name":"getBalancerToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8946,"src":"1986:16:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IBalancerToken_$252_$","typeString":"function () view returns (contract IBalancerToken)"}},"id":8981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1986:18:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"}},{"arguments":[],"expression":{"argumentTypes":[],"id":8982,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8955,"src":"2006:8:73","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2006:10:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},{"id":8984,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8970,"src":"2018:4:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IBalancerToken_$252","typeString":"contract IBalancerToken"},{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"1967:18:73","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IBalancerToken_$252_$_t_contract$_IVault_$3617_$_t_string_memory_ptr_$returns$_t_contract$_BALTokenHolder_$8898_$","typeString":"function (contract IBalancerToken,contract IVault,string memory) returns (contract BALTokenHolder)"},"typeName":{"id":8978,"name":"BALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":8898,"src":"1971:14:73","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}}},"id":8985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1967:56:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}},"nodeType":"VariableDeclarationStatement","src":"1943:80:73"},{"expression":{"id":8994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":8987,"name":"_factoryCreatedHolders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8915,"src":"2034:22:73","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":8992,"indexExpression":{"arguments":[{"id":8990,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"2065:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}],"id":8989,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2057:7:73","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8988,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:73","typeDescriptions":{}}},"id":8991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2057:15:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2034:39:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":8993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2076:4:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2034:46:73","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":8995,"nodeType":"ExpressionStatement","src":"2034:46:73"},{"eventCall":{"arguments":[{"id":8997,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"2117:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}},{"id":8998,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8970,"src":"2125:4:73","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8996,"name":"BALTokenHolderCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8921,"src":"2095:21:73","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_BALTokenHolder_$8898_$_t_string_memory_ptr_$returns$__$","typeString":"function (contract BALTokenHolder,string memory)"}},"id":8999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2095:35:73","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9000,"nodeType":"EmitStatement","src":"2090:40:73"},{"expression":{"id":9001,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8977,"src":"2148:6:73","typeDescriptions":{"typeIdentifier":"t_contract$_BALTokenHolder_$8898","typeString":"contract BALTokenHolder"}},"functionReturnParameters":8975,"id":9002,"nodeType":"Return","src":"2141:13:73"}]},"functionSelector":"b6a46b3b","id":9004,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","overrides":{"id":8972,"nodeType":"OverrideSpecifier","overrides":[],"src":"1898:8:73"},"parameters":{"id":8971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8970,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9004,"src":"1869:18:73","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8969,"name":"string","nodeType":"ElementaryTypeName","src":"1869:6:73","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1868:20:73"},"returnParameters":{"id":8975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8974,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9004,"src":"1916:15:73","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2177","typeString":"contract IBALTokenHolder"},"typeName":{"id":8973,"name":"IBALTokenHolder","nodeType":"UserDefinedTypeName","referencedDeclaration":2177,"src":"1916:15:73","typeDescriptions":{"typeIdentifier":"t_contract$_IBALTokenHolder_$2177","typeString":"contract IBALTokenHolder"}},"visibility":"internal"}],"src":"1915:17:73"},"scope":9005,"src":"1853:308:73","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9006,"src":"1071:1092:73"}],"src":"688:1476:73"},"id":73},"contracts/BalancerQueries.sol":{"ast":{"absolutePath":"contracts/BalancerQueries.sol","exportedSymbols":{"BalancerQueries":[9377]},"id":9378,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9007,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:74"},{"id":9008,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:74"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol","id":9009,"nodeType":"ImportDirective","scope":9378,"sourceUnit":1870,"src":"747:90:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":9010,"nodeType":"ImportDirective","scope":9378,"sourceUnit":2013,"src":"838:78:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":9011,"nodeType":"ImportDirective","scope":9378,"sourceUnit":3618,"src":"917:65:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol","id":9012,"nodeType":"ImportDirective","scope":9378,"sourceUnit":3044,"src":"983:68:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol","id":9013,"nodeType":"ImportDirective","scope":9378,"sourceUnit":2271,"src":"1053:86:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","file":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","id":9014,"nodeType":"ImportDirective","scope":9378,"sourceUnit":8794,"src":"1141:60:74","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":9015,"nodeType":"ImportDirective","scope":9378,"sourceUnit":4796,"src":"1203:77:74","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9017,"name":"IBalancerQueries","nodeType":"UserDefinedTypeName","referencedDeclaration":2270,"src":"1628:16:74","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerQueries_$2270","typeString":"contract IBalancerQueries"}},"id":9018,"nodeType":"InheritanceSpecifier","src":"1628:16:74"},{"baseName":{"id":9019,"name":"AssetHelpers","nodeType":"UserDefinedTypeName","referencedDeclaration":8793,"src":"1646:12:74","typeDescriptions":{"typeIdentifier":"t_contract$_AssetHelpers_$8793","typeString":"contract AssetHelpers"}},"id":9020,"nodeType":"InheritanceSpecifier","src":"1646:12:74"}],"contractDependencies":[2270,8793],"contractKind":"contract","documentation":{"id":9016,"nodeType":"StructuredDocumentation","src":"1282:317:74","text":" @dev This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users.\n It connects different functionalities of the protocol components to allow accessing information that would\n have required a more cumbersome setup if we wanted to provide these already built-in."},"fullyImplemented":true,"id":9377,"linearizedBaseContracts":[9377,8793,2270],"name":"BalancerQueries","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"fbfa77cf","id":9022,"mutability":"immutable","name":"vault","nodeType":"VariableDeclaration","scope":9377,"src":"1665:29:74","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":9021,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1665:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"public"},{"body":{"id":9036,"nodeType":"Block","src":"1756:31:74","statements":[{"expression":{"id":9034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9032,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"1766:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9033,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9024,"src":"1774:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"1766:14:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9035,"nodeType":"ExpressionStatement","src":"1766:14:74"}]},"id":9037,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9027,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9024,"src":"1741:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3616,"src":"1741:11:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IWETH_$2012_$","typeString":"function () view external returns (contract IWETH)"}},"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1741:13:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}}],"id":9030,"modifierName":{"id":9026,"name":"AssetHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"1728:12:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AssetHelpers_$8793_$","typeString":"type(contract AssetHelpers)"}},"nodeType":"ModifierInvocation","src":"1728:27:74"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9024,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":9037,"src":"1713:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":9023,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1713:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1712:15:74"},"returnParameters":{"id":9031,"nodeType":"ParameterList","parameters":[],"src":"1756:0:74"},"scope":9377,"src":"1701:86:74","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2221],"body":{"id":9146,"nodeType":"Block","src":"1949:1837:74","statements":[{"assignments":[9050],"declarations":[{"constant":false,"id":9050,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":9146,"src":"2312:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":9048,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2312:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":9049,"nodeType":"ArrayTypeName","src":"2312:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"id":9056,"initialValue":{"arguments":[{"hexValue":"32","id":9054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2350:1:74","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":9053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2337:12:74","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IAsset[] memory)"},"typeName":{"baseType":{"id":9051,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2341:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":9052,"nodeType":"ArrayTypeName","src":"2341:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}}},"id":9055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2337:15:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2312:40:74"},{"expression":{"id":9062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9057,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"2362:6:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":9059,"indexExpression":{"hexValue":"30","id":9058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2369:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2362:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9060,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"2374:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assetIn","nodeType":"MemberAccess","referencedDeclaration":3461,"src":"2374:18:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"src":"2362:30:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":9063,"nodeType":"ExpressionStatement","src":"2362:30:74"},{"expression":{"id":9069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9064,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"2402:6:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":9066,"indexExpression":{"hexValue":"31","id":9065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2409:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2402:9:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":9067,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"2414:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9068,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assetOut","nodeType":"MemberAccess","referencedDeclaration":3463,"src":"2414:19:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"src":"2402:31:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":9070,"nodeType":"ExpressionStatement","src":"2402:31:74"},{"assignments":[9075],"declarations":[{"constant":false,"id":9075,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":9146,"src":"2444:35:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":9073,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"2444:20:74","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":9074,"nodeType":"ArrayTypeName","src":"2444:22:74","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"}],"id":9081,"initialValue":{"arguments":[{"hexValue":"31","id":9079,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":9078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2482:26:74","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.BatchSwapStep memory[] memory)"},"typeName":{"baseType":{"id":9076,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"2486:20:74","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":9077,"nodeType":"ArrayTypeName","src":"2486:22:74","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}}},"id":9080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2482:29:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2444:67:74"},{"expression":{"id":9096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9082,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"2521:5:74","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":9084,"indexExpression":{"hexValue":"30","id":9083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2527:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2521:8:74","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":9087,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"2575:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9088,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"poolId","nodeType":"MemberAccess","referencedDeclaration":3457,"src":"2575:17:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":9089,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2620:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"31","id":9090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2650:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"expression":{"id":9091,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"2673:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3465,"src":"2673:17:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9093,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"2714:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3467,"src":"2714:19:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":9085,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"2532:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3617_$","typeString":"type(contract IVault)"}},"id":9086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"BatchSwapStep","nodeType":"MemberAccess","referencedDeclaration":3501,"src":"2532:20:74","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_BatchSwapStep_$3501_storage_ptr_$","typeString":"type(struct IVault.BatchSwapStep storage pointer)"}},"id":9095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["poolId","assetInIndex","assetOutIndex","amount","userData"],"nodeType":"FunctionCall","src":"2532:212:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"src":"2521:223:74","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":9097,"nodeType":"ExpressionStatement","src":"2521:223:74"},{"assignments":[9102],"declarations":[{"constant":false,"id":9102,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":9146,"src":"2755:27:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":9100,"name":"int256","nodeType":"ElementaryTypeName","src":"2755:6:74","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9101,"nodeType":"ArrayTypeName","src":"2755:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"id":9111,"initialValue":{"arguments":[{"expression":{"id":9105,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"2806:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9106,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":3459,"src":"2806:15:74","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},{"id":9107,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9075,"src":"2823:5:74","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":9108,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"2830:6:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"id":9109,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9041,"src":"2838:5:74","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement memory"}],"expression":{"id":9103,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"2785:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryBatchSwap","nodeType":"MemberAccess","referencedDeclaration":3540,"src":"2785:20:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_enum$_SwapKind_$3441_$_t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$_t_struct$_FundManagement_$3523_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory) external returns (int256[] memory)"}},"id":9110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2785:59:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2755:89:74"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":9112,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9039,"src":"3172:10:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":9113,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"kind","nodeType":"MemberAccess","referencedDeclaration":3459,"src":"3172:15:74","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":9114,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"3191:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3617_$","typeString":"type(contract IVault)"}},"id":9115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SwapKind","nodeType":"MemberAccess","referencedDeclaration":3441,"src":"3191:15:74","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_SwapKind_$3441_$","typeString":"type(enum IVault.SwapKind)"}},"id":9116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"GIVEN_IN","nodeType":"MemberAccess","src":"3191:24:74","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"src":"3172:43:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9144,"nodeType":"Block","src":"3549:231:74","statements":[{"expression":{"arguments":[{"baseExpression":{"id":9139,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9102,"src":"3754:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":9141,"indexExpression":{"hexValue":"30","id":9140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3766:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3754:14:74","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3746:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9137,"name":"uint256","nodeType":"ElementaryTypeName","src":"3746:7:74","typeDescriptions":{}}},"id":9142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3746:23:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9046,"id":9143,"nodeType":"Return","src":"3739:30:74"}]},"id":9145,"nodeType":"IfStatement","src":"3168:612:74","trueBody":{"id":9136,"nodeType":"Block","src":"3217:326:74","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":9123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9119,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9102,"src":"3441:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":9121,"indexExpression":{"hexValue":"31","id":9120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3453:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3441:14:74","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"30","id":9122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3459:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3441:19:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":9124,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3462:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":9125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SHOULD_NOT_HAPPEN","nodeType":"MemberAccess","referencedDeclaration":1868,"src":"3462:24:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9118,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3432:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":9126,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3432:55:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9127,"nodeType":"ExpressionStatement","src":"3432:55:74"},{"expression":{"arguments":[{"id":9133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3516:15:74","subExpression":{"baseExpression":{"id":9130,"name":"assetDeltas","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9102,"src":"3517:11:74","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":9132,"indexExpression":{"hexValue":"31","id":9131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3529:1:74","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3517:14:74","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":9129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3508:7:74","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9128,"name":"uint256","nodeType":"ElementaryTypeName","src":"3508:7:74","typeDescriptions":{}}},"id":9134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3508:24:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9046,"id":9135,"nodeType":"Return","src":"3501:31:74"}]}}]},"functionSelector":"e969f6b3","id":9147,"implemented":true,"kind":"function","modifiers":[],"name":"querySwap","nodeType":"FunctionDefinition","overrides":{"id":9043,"nodeType":"OverrideSpecifier","overrides":[],"src":"1910:8:74"},"parameters":{"id":9042,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9039,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":9147,"src":"1812:35:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":9038,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3468,"src":"1812:17:74","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":9041,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":9147,"src":"1849:34:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":9040,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"1849:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"1811:73:74"},"returnParameters":{"id":9046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9045,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9147,"src":"1936:7:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9044,"name":"uint256","nodeType":"ElementaryTypeName","src":"1936:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1935:9:74"},"scope":9377,"src":"1793:1993:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2237],"body":{"id":9172,"nodeType":"Block","src":"4029:72:74","statements":[{"expression":{"arguments":[{"id":9166,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9149,"src":"4067:4:74","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},{"id":9167,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9152,"src":"4073:5:74","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":9168,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9155,"src":"4080:6:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"id":9169,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9157,"src":"4088:5:74","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement memory"}],"expression":{"id":9164,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"4046:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryBatchSwap","nodeType":"MemberAccess","referencedDeclaration":3540,"src":"4046:20:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_enum$_SwapKind_$3441_$_t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$_t_struct$_FundManagement_$3523_memory_ptr_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory) external returns (int256[] memory)"}},"id":9170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4046:48:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"functionReturnParameters":9163,"id":9171,"nodeType":"Return","src":"4039:55:74"}]},"functionSelector":"f84d066e","id":9173,"implemented":true,"kind":"function","modifiers":[],"name":"queryBatchSwap","nodeType":"FunctionDefinition","overrides":{"id":9159,"nodeType":"OverrideSpecifier","overrides":[],"src":"3982:8:74"},"parameters":{"id":9158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9149,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":9173,"src":"3825:20:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":9148,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"3825:15:74","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":9152,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":9173,"src":"3855:35:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":9150,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"3855:20:74","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":9151,"nodeType":"ArrayTypeName","src":"3855:22:74","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":9155,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":9173,"src":"3900:22:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":9153,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"3900:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":9154,"nodeType":"ArrayTypeName","src":"3900:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":9157,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":9173,"src":"3932:34:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_memory_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":9156,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"3932:21:74","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"}],"src":"3815:157:74"},"returnParameters":{"id":9163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9162,"mutability":"mutable","name":"assetDeltas","nodeType":"VariableDeclaration","scope":9173,"src":"4000:27:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":9160,"name":"int256","nodeType":"ElementaryTypeName","src":"4000:6:74","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":9161,"nodeType":"ArrayTypeName","src":"4000:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"src":"3999:29:74"},"scope":9377,"src":"3792:309:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2253],"body":{"id":9236,"nodeType":"Block","src":"4325:518:74","statements":[{"assignments":[9191,null],"declarations":[{"constant":false,"id":9191,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":9236,"src":"4336:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9190,"name":"address","nodeType":"ElementaryTypeName","src":"4336:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":9196,"initialValue":{"arguments":[{"id":9194,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"4368:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9192,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"4354:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3303,"src":"4354:13:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":9195,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4354:21:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"4335:40:74"},{"assignments":[9201,9203],"declarations":[{"constant":false,"id":9201,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":9236,"src":"4386:25:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4386:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9200,"nodeType":"ArrayTypeName","src":"4386:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9203,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":9236,"src":"4413:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9202,"name":"uint256","nodeType":"ElementaryTypeName","src":"4413:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9209,"initialValue":{"arguments":[{"id":9205,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"4470:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":9206,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9181,"src":"4478:7:74","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":9207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3388,"src":"4478:14:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":9204,"name":"_validateAssetsAndGetBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"4440:29:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,contract IAsset[] memory) view returns (uint256[] memory,uint256)"}},"id":9208,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4440:53:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4385:108:74"},{"assignments":[9211],"declarations":[{"constant":false,"id":9211,"mutability":"mutable","name":"feesCollector","nodeType":"VariableDeclaration","scope":9236,"src":"4503:36:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":9210,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"4503:22:74","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":9215,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9212,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"4542:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3604,"src":"4542:30:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":9214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4542:32:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"4503:71:74"},{"expression":{"id":9234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9216,"name":"bptOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9185,"src":"4586:6:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9217,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9188,"src":"4594:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":9218,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4585:19:74","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9223,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9175,"src":"4646:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9224,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9177,"src":"4666:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9225,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9179,"src":"4686:9:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9226,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9201,"src":"4709:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":9227,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9203,"src":"4731:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9228,"name":"feesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9211,"src":"4760:13:74","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3127,"src":"4760:34:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4760:36:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9231,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9181,"src":"4810:7:74","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":9232,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3393,"src":"4810:16:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":9220,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9191,"src":"4617:4:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9219,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"4607:9:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$3043_$","typeString":"type(contract IBasePool)"}},"id":9221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4607:15:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$3043","typeString":"contract IBasePool"}},"id":9222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryJoin","nodeType":"MemberAccess","referencedDeclaration":3019,"src":"4607:25:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32,address,address,uint256[] memory,uint256,uint256,bytes memory) external returns (uint256,uint256[] memory)"}},"id":9233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4607:229:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"4585:251:74","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9235,"nodeType":"ExpressionStatement","src":"4585:251:74"}]},"functionSelector":"9ebbf05d","id":9237,"implemented":true,"kind":"function","modifiers":[],"name":"queryJoin","nodeType":"FunctionDefinition","overrides":{"id":9183,"nodeType":"OverrideSpecifier","overrides":[],"src":"4263:8:74"},"parameters":{"id":9182,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9175,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":9237,"src":"4135:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4135:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9177,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9237,"src":"4159:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9176,"name":"address","nodeType":"ElementaryTypeName","src":"4159:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9179,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9237,"src":"4183:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9178,"name":"address","nodeType":"ElementaryTypeName","src":"4183:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9181,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":9237,"src":"4210:37:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":9180,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3396,"src":"4210:22:74","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"}],"src":"4125:128:74"},"returnParameters":{"id":9189,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9185,"mutability":"mutable","name":"bptOut","nodeType":"VariableDeclaration","scope":9237,"src":"4281:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9184,"name":"uint256","nodeType":"ElementaryTypeName","src":"4281:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9188,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":9237,"src":"4297:26:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9186,"name":"uint256","nodeType":"ElementaryTypeName","src":"4297:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9187,"nodeType":"ArrayTypeName","src":"4297:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4280:44:74"},"scope":9377,"src":"4107:736:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2269],"body":{"id":9300,"nodeType":"Block","src":"5067:518:74","statements":[{"assignments":[9255,null],"declarations":[{"constant":false,"id":9255,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":9300,"src":"5078:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9254,"name":"address","nodeType":"ElementaryTypeName","src":"5078:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":9260,"initialValue":{"arguments":[{"id":9258,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9239,"src":"5110:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9256,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"5096:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3303,"src":"5096:13:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":9259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5096:21:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"5077:40:74"},{"assignments":[9265,9267],"declarations":[{"constant":false,"id":9265,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":9300,"src":"5128:25:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9263,"name":"uint256","nodeType":"ElementaryTypeName","src":"5128:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9264,"nodeType":"ArrayTypeName","src":"5128:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9267,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":9300,"src":"5155:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9266,"name":"uint256","nodeType":"ElementaryTypeName","src":"5155:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9273,"initialValue":{"arguments":[{"id":9269,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9239,"src":"5212:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":9270,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"5220:7:74","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":9271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3411,"src":"5220:14:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":9268,"name":"_validateAssetsAndGetBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9376,"src":"5182:29:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32,contract IAsset[] memory) view returns (uint256[] memory,uint256)"}},"id":9272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5182:53:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5127:108:74"},{"assignments":[9275],"declarations":[{"constant":false,"id":9275,"mutability":"mutable","name":"feesCollector","nodeType":"VariableDeclaration","scope":9300,"src":"5245:36:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":9274,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"5245:22:74","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":9279,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9276,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"5284:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3604,"src":"5284:30:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":9278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5284:32:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"5245:71:74"},{"expression":{"id":9298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9280,"name":"bptIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9249,"src":"5328:5:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9281,"name":"amountsOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9252,"src":"5335:10:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":9282,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5327:19:74","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9287,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9239,"src":"5388:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":9288,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9241,"src":"5408:6:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9289,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9243,"src":"5428:9:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":9290,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9265,"src":"5451:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":9291,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9267,"src":"5473:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9292,"name":"feesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9275,"src":"5502:13:74","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3127,"src":"5502:34:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5502:36:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9295,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"5552:7:74","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":9296,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3416,"src":"5552:16:74","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":9284,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9255,"src":"5359:4:74","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9283,"name":"IBasePool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"5349:9:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePool_$3043_$","typeString":"type(contract IBasePool)"}},"id":9285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:15:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePool_$3043","typeString":"contract IBasePool"}},"id":9286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"queryExit","nodeType":"MemberAccess","referencedDeclaration":3042,"src":"5349:25:74","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (bytes32,address,address,uint256[] memory,uint256,uint256,bytes memory) external returns (uint256,uint256[] memory)"}},"id":9297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:229:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(uint256,uint256[] memory)"}},"src":"5327:251:74","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9299,"nodeType":"ExpressionStatement","src":"5327:251:74"}]},"functionSelector":"c7b2c52c","id":9301,"implemented":true,"kind":"function","modifiers":[],"name":"queryExit","nodeType":"FunctionDefinition","overrides":{"id":9247,"nodeType":"OverrideSpecifier","overrides":[],"src":"5005:8:74"},"parameters":{"id":9246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9239,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":9301,"src":"4877:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9238,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4877:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9241,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":9301,"src":"4901:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9240,"name":"address","nodeType":"ElementaryTypeName","src":"4901:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9243,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":9301,"src":"4925:17:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9242,"name":"address","nodeType":"ElementaryTypeName","src":"4925:7:74","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":9245,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":9301,"src":"4952:37:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":9244,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3419,"src":"4952:22:74","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"src":"4867:128:74"},"returnParameters":{"id":9253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9249,"mutability":"mutable","name":"bptIn","nodeType":"VariableDeclaration","scope":9301,"src":"5023:13:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9248,"name":"uint256","nodeType":"ElementaryTypeName","src":"5023:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9252,"mutability":"mutable","name":"amountsOut","nodeType":"VariableDeclaration","scope":9301,"src":"5038:27:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9250,"name":"uint256","nodeType":"ElementaryTypeName","src":"5038:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9251,"nodeType":"ArrayTypeName","src":"5038:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5022:44:74"},"scope":9377,"src":"4849:736:74","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9375,"nodeType":"Block","src":"5781:482:74","statements":[{"assignments":[9317],"declarations":[{"constant":false,"id":9317,"mutability":"mutable","name":"actualTokens","nodeType":"VariableDeclaration","scope":9375,"src":"5791:28:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9315,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"5791:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":9316,"nodeType":"ArrayTypeName","src":"5791:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":9318,"nodeType":"VariableDeclarationStatement","src":"5791:28:74"},{"assignments":[9322],"declarations":[{"constant":false,"id":9322,"mutability":"mutable","name":"expectedTokens","nodeType":"VariableDeclaration","scope":9375,"src":"5829:30:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":9320,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"5829:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":9321,"nodeType":"ArrayTypeName","src":"5829:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":9326,"initialValue":{"arguments":[{"id":9324,"name":"expectedAssets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9306,"src":"5881:14:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}],"id":9323,"name":"_translateToIERC20","nodeType":"Identifier","overloadedDeclarations":[8729,8776],"referencedDeclaration":8776,"src":"5862:18:74","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (contract IAsset[] memory) view returns (contract IERC20[] memory)"}},"id":9325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5862:34:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5829:67:74"},{"expression":{"id":9335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":9327,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"5908:12:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":9328,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9310,"src":"5922:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":9329,"name":"lastChangeBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9312,"src":"5932:15:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9330,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5907:41:74","typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":9333,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9303,"src":"5971:6:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":9331,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9022,"src":"5951:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPoolTokens","nodeType":"MemberAccess","referencedDeclaration":3373,"src":"5951:19:74","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"}},"id":9334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5951:27:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(contract IERC20[] memory,uint256[] memory,uint256)"}},"src":"5907:71:74","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9336,"nodeType":"ExpressionStatement","src":"5907:71:74"},{"expression":{"arguments":[{"expression":{"id":9340,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"6024:12:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6024:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":9342,"name":"expectedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9322,"src":"6045:14:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6045:21:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9337,"name":"InputHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4795,"src":"5988:12:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_InputHelpers_$4795_$","typeString":"type(library InputHelpers)"}},"id":9339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ensureInputLengthMatch","nodeType":"MemberAccess","referencedDeclaration":4703,"src":"5988:35:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":9344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5988:79:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9345,"nodeType":"ExpressionStatement","src":"5988:79:74"},{"body":{"id":9373,"nodeType":"Block","src":"6128:129:74","statements":[{"assignments":[9358],"declarations":[{"constant":false,"id":9358,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":9373,"src":"6142:12:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":9357,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6142:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":9362,"initialValue":{"baseExpression":{"id":9359,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"6157:12:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9361,"indexExpression":{"id":9360,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9347,"src":"6170:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6157:15:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"6142:30:74"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"id":9368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9364,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9358,"src":"6195:5:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"baseExpression":{"id":9365,"name":"expectedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9322,"src":"6204:14:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9367,"indexExpression":{"id":9366,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9347,"src":"6219:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6204:17:74","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"6195:26:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":9369,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"6223:6:74","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":9370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TOKENS_MISMATCH","nodeType":"MemberAccess","referencedDeclaration":1823,"src":"6223:22:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9363,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"6186:8:74","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":9371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6186:60:74","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9372,"nodeType":"ExpressionStatement","src":"6186:60:74"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9350,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9347,"src":"6098:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9351,"name":"actualTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9317,"src":"6102:12:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":9352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6102:19:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6098:23:74","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9374,"initializationExpression":{"assignments":[9347],"declarations":[{"constant":false,"id":9347,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9374,"src":"6083:9:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9346,"name":"uint256","nodeType":"ElementaryTypeName","src":"6083:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9349,"initialValue":{"hexValue":"30","id":9348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6095:1:74","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6083:13:74"},"loopExpression":{"expression":{"id":9355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6123:3:74","subExpression":{"id":9354,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9347,"src":"6125:1:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9356,"nodeType":"ExpressionStatement","src":"6123:3:74"},"nodeType":"ForStatement","src":"6078:179:74"}]},"id":9376,"implemented":true,"kind":"function","modifiers":[],"name":"_validateAssetsAndGetBalances","nodeType":"FunctionDefinition","parameters":{"id":9307,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9303,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":9376,"src":"5630:14:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9302,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5630:7:74","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":9306,"mutability":"mutable","name":"expectedAssets","nodeType":"VariableDeclaration","scope":9376,"src":"5646:30:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":9304,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"5646:6:74","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":9305,"nodeType":"ArrayTypeName","src":"5646:8:74","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"}],"src":"5629:48:74"},"returnParameters":{"id":9313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9310,"mutability":"mutable","name":"balances","nodeType":"VariableDeclaration","scope":9376,"src":"5725:25:74","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9308,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9309,"nodeType":"ArrayTypeName","src":"5725:9:74","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":9312,"mutability":"mutable","name":"lastChangeBlock","nodeType":"VariableDeclaration","scope":9376,"src":"5752:23:74","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9311,"name":"uint256","nodeType":"ElementaryTypeName","src":"5752:7:74","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5724:52:74"},"scope":9377,"src":"5591:672:74","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":9378,"src":"1600:4665:74"}],"src":"688:5578:74"},"id":74},"contracts/BatchRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/BatchRelayerLibrary.sol","exportedSymbols":{"BatchRelayerLibrary":[9428]},"id":9429,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9379,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:75"},{"id":9380,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:75"},{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","file":"./relayer/BaseRelayerLibrary.sol","id":9381,"nodeType":"ImportDirective","scope":9429,"sourceUnit":11603,"src":"747:42:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/AaveWrapping.sol","file":"./relayer/AaveWrapping.sol","id":9382,"nodeType":"ImportDirective","scope":9429,"sourceUnit":11026,"src":"791:36:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/ERC4626Wrapping.sol","file":"./relayer/ERC4626Wrapping.sol","id":9383,"nodeType":"ImportDirective","scope":9429,"sourceUnit":11773,"src":"828:39:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/GaugeActions.sol","file":"./relayer/GaugeActions.sol","id":9384,"nodeType":"ImportDirective","scope":9429,"sourceUnit":12037,"src":"868:36:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/LidoWrapping.sol","file":"./relayer/LidoWrapping.sol","id":9385,"nodeType":"ImportDirective","scope":9429,"sourceUnit":12467,"src":"905:36:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/UnbuttonWrapping.sol","file":"./relayer/UnbuttonWrapping.sol","id":9386,"nodeType":"ImportDirective","scope":9429,"sourceUnit":12839,"src":"942:40:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/ReaperWrapping.sol","file":"./relayer/ReaperWrapping.sol","id":9387,"nodeType":"ImportDirective","scope":9429,"sourceUnit":12671,"src":"983:38:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/VaultActions.sol","file":"./relayer/VaultActions.sol","id":9388,"nodeType":"ImportDirective","scope":9429,"sourceUnit":13729,"src":"1022:36:75","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/VaultPermit.sol","file":"./relayer/VaultPermit.sol","id":9389,"nodeType":"ImportDirective","scope":9429,"sourceUnit":13811,"src":"1059:35:75","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9391,"name":"AaveWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":11025,"src":"1346:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$11025","typeString":"contract AaveWrapping"}},"id":9392,"nodeType":"InheritanceSpecifier","src":"1346:12:75"},{"baseName":{"id":9393,"name":"BaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":11602,"src":"1364:18:75","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}},"id":9394,"nodeType":"InheritanceSpecifier","src":"1364:18:75"},{"baseName":{"id":9395,"name":"ERC4626Wrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":11772,"src":"1388:15:75","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}},"id":9396,"nodeType":"InheritanceSpecifier","src":"1388:15:75"},{"baseName":{"id":9397,"name":"GaugeActions","nodeType":"UserDefinedTypeName","referencedDeclaration":12036,"src":"1409:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}},"id":9398,"nodeType":"InheritanceSpecifier","src":"1409:12:75"},{"baseName":{"id":9399,"name":"LidoWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":12466,"src":"1427:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}},"id":9400,"nodeType":"InheritanceSpecifier","src":"1427:12:75"},{"baseName":{"id":9401,"name":"UnbuttonWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":12838,"src":"1445:16:75","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$12838","typeString":"contract UnbuttonWrapping"}},"id":9402,"nodeType":"InheritanceSpecifier","src":"1445:16:75"},{"baseName":{"id":9403,"name":"ReaperWrapping","nodeType":"UserDefinedTypeName","referencedDeclaration":12670,"src":"1467:14:75","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}},"id":9404,"nodeType":"InheritanceSpecifier","src":"1467:14:75"},{"baseName":{"id":9405,"name":"VaultActions","nodeType":"UserDefinedTypeName","referencedDeclaration":13728,"src":"1487:12:75","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}},"id":9406,"nodeType":"InheritanceSpecifier","src":"1487:12:75"},{"baseName":{"id":9407,"name":"VaultPermit","nodeType":"UserDefinedTypeName","referencedDeclaration":13810,"src":"1505:11:75","typeDescriptions":{"typeIdentifier":"t_contract$_VaultPermit_$13810","typeString":"contract VaultPermit"}},"id":9408,"nodeType":"InheritanceSpecifier","src":"1505:11:75"}],"contractDependencies":[8793,11025,11602,11772,12036,12114,12466,12670,12838,13728,13810],"contractKind":"contract","documentation":{"id":9390,"nodeType":"StructuredDocumentation","src":"1096:213:75","text":" @title Batch Relayer Library\n @notice This contract is not a relayer by itself and calls into it directly will fail.\n The associated relayer can be found by calling `getEntrypoint` on this contract."},"fullyImplemented":true,"id":9428,"linearizedBaseContracts":[9428,13810,13728,12670,12838,12466,12036,11772,11602,11025,12114,8793],"name":"BatchRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":9426,"nodeType":"Block","src":"1686:64:75","statements":[]},"id":9427,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9417,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9410,"src":"1637:5:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":9418,"modifierName":{"id":9416,"name":"BaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"1618:18:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayerLibrary_$11602_$","typeString":"type(contract BaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1618:25:75"},{"arguments":[{"id":9420,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9412,"src":"1657:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"id":9421,"modifierName":{"id":9419,"name":"LidoWrapping","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12466,"src":"1644:12:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LidoWrapping_$12466_$","typeString":"type(contract LidoWrapping)"}},"nodeType":"ModifierInvocation","src":"1644:20:75"},{"arguments":[{"id":9423,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9414,"src":"1678:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}}],"id":9424,"modifierName":{"id":9422,"name":"GaugeActions","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12036,"src":"1665:12:75","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_GaugeActions_$12036_$","typeString":"type(contract GaugeActions)"}},"nodeType":"ModifierInvocation","src":"1665:20:75"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9410,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9427,"src":"1544:12:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":9409,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1544:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9412,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":9427,"src":"1566:13:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":9411,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1566:6:75","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":9414,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":9427,"src":"1589:22:75","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":9413,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1589:15:75","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"internal"}],"src":"1534:83:75"},"returnParameters":{"id":9425,"nodeType":"ParameterList","parameters":[],"src":"1686:0:75"},"scope":9428,"src":"1523:227:75","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":9429,"src":"1310:442:75"}],"src":"688:1065:75"},"id":75},"contracts/PoolRecoveryHelper.sol":{"ast":{"absolutePath":"contracts/PoolRecoveryHelper.sol","exportedSymbols":{"PoolRecoveryHelper":[9655]},"id":9656,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9430,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:76"},{"id":9431,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:76"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol","id":9432,"nodeType":"ImportDirective","scope":9656,"sourceUnit":1046,"src":"747:80:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","id":9433,"nodeType":"ImportDirective","scope":9656,"sourceUnit":1067,"src":"828:81:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol","id":9434,"nodeType":"ImportDirective","scope":9656,"sourceUnit":1090,"src":"910:77:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9435,"nodeType":"ImportDirective","scope":9656,"sourceUnit":4891,"src":"989:88:76","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":9436,"nodeType":"ImportDirective","scope":9656,"sourceUnit":8231,"src":"1078:83:76","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9438,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4890,"src":"1553:23:76","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}},"id":9439,"nodeType":"InheritanceSpecifier","src":"1553:23:76"}],"contractDependencies":[1880,4048,4890],"contractKind":"contract","documentation":{"id":9437,"nodeType":"StructuredDocumentation","src":"1163:358:76","text":" @dev This contract allows anyone to check a given Pool's rate providers and put the Pool into recovery mode\n if any are reverting on `getRate`. This allows LPs to exit promptly, and also helps off-chain mechanisms\n identify failed pools and prevent further traffic from being routed to them (since in this state swap operations\n would fail)."},"fullyImplemented":true,"id":9655,"linearizedBaseContracts":[9655,4890,4048,1880],"name":"PoolRecoveryHelper","nodeType":"ContractDefinition","nodes":[{"id":9442,"libraryName":{"id":9440,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8230,"src":"1589:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$8230","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1583:49:76","typeName":{"id":9441,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"1607:24:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":9444,"mutability":"mutable","name":"_factories","nodeType":"VariableDeclaration","scope":9655,"src":"1638:43:76","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":9443,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"1638:24:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":9478,"nodeType":"Block","src":"1780:168:76","statements":[{"body":{"id":9476,"nodeType":"Block","src":"1844:98:76","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":9469,"name":"initialFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9449,"src":"1881:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9471,"indexExpression":{"id":9470,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"1898:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1881:19:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9467,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"1866:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9468,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7830,"src":"1866:14:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1866:35:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475706c696361746520696e697469616c20666163746f7279","id":9473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1903:27:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_a0c3ddd618fd924a2699c15d7298e3c0bf85f52475bc87c9e32de342c1ea66ca","typeString":"literal_string \"Duplicate initial factory\""},"value":"Duplicate initial factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a0c3ddd618fd924a2699c15d7298e3c0bf85f52475bc87c9e32de342c1ea66ca","typeString":"literal_string \"Duplicate initial factory\""}],"id":9466,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1858:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1858:73:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9475,"nodeType":"ExpressionStatement","src":"1858:73:76"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9459,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"1810:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9460,"name":"initialFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9449,"src":"1814:16:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":9461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1814:23:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1810:27:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9477,"initializationExpression":{"assignments":[9456],"declarations":[{"constant":false,"id":9456,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9477,"src":"1795:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9455,"name":"uint256","nodeType":"ElementaryTypeName","src":"1795:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9458,"initialValue":{"hexValue":"30","id":9457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1807:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1795:13:76"},"loopExpression":{"expression":{"id":9464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1839:3:76","subExpression":{"id":9463,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"1841:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9465,"nodeType":"ExpressionStatement","src":"1839:3:76"},"nodeType":"ForStatement","src":"1790:152:76"}]},"id":9479,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9452,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9446,"src":"1773:5:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":9453,"modifierName":{"id":9451,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"1749:23:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4890_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1749:30:76"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9446,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9479,"src":"1700:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":9445,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1700:6:76","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9449,"mutability":"mutable","name":"initialFactories","nodeType":"VariableDeclaration","scope":9479,"src":"1714:33:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9447,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9448,"nodeType":"ArrayTypeName","src":"1714:9:76","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1699:49:76"},"returnParameters":{"id":9454,"nodeType":"ParameterList","parameters":[],"src":"1780:0:76"},"scope":9655,"src":"1688:260:76","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9495,"nodeType":"Block","src":"2189:70:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":9490,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9482,"src":"2222:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9488,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"2207:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7830,"src":"2207:14:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2207:23:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4475706c696361746520666163746f7279","id":9492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2232:19:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_333aaca7581959808bf36276468bbc724a0aafc678eb30711bf317f944947629","typeString":"literal_string \"Duplicate factory\""},"value":"Duplicate factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_333aaca7581959808bf36276468bbc724a0aafc678eb30711bf317f944947629","typeString":"literal_string \"Duplicate factory\""}],"id":9487,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2199:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2199:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9494,"nodeType":"ExpressionStatement","src":"2199:53:76"}]},"documentation":{"id":9480,"nodeType":"StructuredDocumentation","src":"1954:167:76","text":" @notice Adds a Pool Factory to the helper. Only Pools created from factories added via this function can be\n passed to `enableRecoveryMode()`."},"functionSelector":"dc867b79","id":9496,"implemented":true,"kind":"function","modifiers":[{"id":9485,"modifierName":{"id":9484,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"2176:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2176:12:76"}],"name":"addPoolFactory","nodeType":"FunctionDefinition","parameters":{"id":9483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9482,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9496,"src":"2150:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9481,"name":"address","nodeType":"ElementaryTypeName","src":"2150:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2149:17:76"},"returnParameters":{"id":9486,"nodeType":"ParameterList","parameters":[],"src":"2189:0:76"},"scope":9655,"src":"2126:133:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9512,"nodeType":"Block","src":"2402:76:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":9507,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9499,"src":"2438:7:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9505,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"2420:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9506,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":7915,"src":"2420:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":9508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2420:26:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f6e2d6578697374656e7420666163746f7279","id":9509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2448:22:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_262b05b7c25872fd3e072c0b96689d4dfbf1788f29bf6e1637f885ae150673d2","typeString":"literal_string \"Non-existent factory\""},"value":"Non-existent factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_262b05b7c25872fd3e072c0b96689d4dfbf1788f29bf6e1637f885ae150673d2","typeString":"literal_string \"Non-existent factory\""}],"id":9504,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2412:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2412:59:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9511,"nodeType":"ExpressionStatement","src":"2412:59:76"}]},"documentation":{"id":9497,"nodeType":"StructuredDocumentation","src":"2265:66:76","text":" @notice Removes a Pool Factory from the helper."},"functionSelector":"26e54479","id":9513,"implemented":true,"kind":"function","modifiers":[{"id":9502,"modifierName":{"id":9501,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"2389:12:76","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"2389:12:76"}],"name":"removePoolFactory","nodeType":"FunctionDefinition","parameters":{"id":9500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9499,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9513,"src":"2363:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9498,"name":"address","nodeType":"ElementaryTypeName","src":"2363:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2362:17:76"},"returnParameters":{"id":9503,"nodeType":"ParameterList","parameters":[],"src":"2402:0:76"},"scope":9655,"src":"2336:142:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9523,"nodeType":"Block","src":"2618:43:76","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9519,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"2635:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":7946,"src":"2635:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":9521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2635:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9518,"id":9522,"nodeType":"Return","src":"2628:26:76"}]},"documentation":{"id":9514,"nodeType":"StructuredDocumentation","src":"2484:70:76","text":" @notice Returns the total number of Pool Factories."},"functionSelector":"d1047434","id":9524,"implemented":true,"kind":"function","modifiers":[],"name":"getFactoryCount","nodeType":"FunctionDefinition","parameters":{"id":9515,"nodeType":"ParameterList","parameters":[],"src":"2583:2:76"},"returnParameters":{"id":9518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9517,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9524,"src":"2609:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9516,"name":"uint256","nodeType":"ElementaryTypeName","src":"2609:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2608:9:76"},"scope":9655,"src":"2559:102:76","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9539,"nodeType":"Block","src":"2886:62:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":9535,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9527,"src":"2934:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9533,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"2920:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9534,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":7972,"src":"2920:13:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":9536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2920:20:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9532,"name":"IBasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"2903:16:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePoolFactory_$1045_$","typeString":"type(contract IBasePoolFactory)"}},"id":9537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2903:38:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"}},"functionReturnParameters":9531,"id":9538,"nodeType":"Return","src":"2896:45:76"}]},"documentation":{"id":9525,"nodeType":"StructuredDocumentation","src":"2667:131:76","text":" @notice Returns the address of a Pool Factory at an index between 0 and the return value of `getFactoryCount()`."},"functionSelector":"a587bbe1","id":9540,"implemented":true,"kind":"function","modifiers":[],"name":"getFactoryAtIndex","nodeType":"FunctionDefinition","parameters":{"id":9528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9527,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":9540,"src":"2830:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2829:15:76"},"returnParameters":{"id":9531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9530,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9540,"src":"2868:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"},"typeName":{"id":9529,"name":"IBasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":1045,"src":"2868:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"}},"visibility":"internal"}],"src":"2867:18:76"},"scope":9655,"src":"2803:145:76","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":9585,"nodeType":"Block","src":"3122:329:76","statements":[{"assignments":[9549],"declarations":[{"constant":false,"id":9549,"mutability":"mutable","name":"totalFactories","nodeType":"VariableDeclaration","scope":9585,"src":"3132:22:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9548,"name":"uint256","nodeType":"ElementaryTypeName","src":"3132:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9553,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9550,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"3157:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9551,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":7946,"src":"3157:17:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":9552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3157:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3132:44:76"},{"body":{"id":9581,"nodeType":"Block","src":"3231:191:76","statements":[{"assignments":[9565],"declarations":[{"constant":false,"id":9565,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","scope":9581,"src":"3245:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"},"typeName":{"id":9564,"name":"IBasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":1045,"src":"3245:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"}},"visibility":"internal"}],"id":9572,"initialValue":{"arguments":[{"arguments":[{"id":9569,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"3313:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9567,"name":"_factories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9444,"src":"3289:10:76","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":9568,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"unchecked_at","nodeType":"MemberAccess","referencedDeclaration":7988,"src":"3289:23:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":9570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3289:26:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9566,"name":"IBasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"3272:16:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBasePoolFactory_$1045_$","typeString":"type(contract IBasePoolFactory)"}},"id":9571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3272:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"}},"nodeType":"VariableDeclarationStatement","src":"3245:71:76"},{"condition":{"arguments":[{"id":9575,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9543,"src":"3361:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":9573,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9565,"src":"3335:7:76","typeDescriptions":{"typeIdentifier":"t_contract$_IBasePoolFactory_$1045","typeString":"contract IBasePoolFactory"}},"id":9574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isPoolFromFactory","nodeType":"MemberAccess","referencedDeclaration":1034,"src":"3335:25:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":9576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3335:31:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9580,"nodeType":"IfStatement","src":"3331:81:76","trueBody":{"id":9579,"nodeType":"Block","src":"3368:44:76","statements":[{"expression":{"hexValue":"74727565","id":9577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3393:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9547,"id":9578,"nodeType":"Return","src":"3386:11:76"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9558,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"3206:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":9559,"name":"totalFactories","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9549,"src":"3210:14:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3206:18:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9582,"initializationExpression":{"assignments":[9555],"declarations":[{"constant":false,"id":9555,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9582,"src":"3191:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9554,"name":"uint256","nodeType":"ElementaryTypeName","src":"3191:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9557,"initialValue":{"hexValue":"30","id":9556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3203:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3191:13:76"},"loopExpression":{"expression":{"id":9562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3226:3:76","subExpression":{"id":9561,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9555,"src":"3228:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9563,"nodeType":"ExpressionStatement","src":"3226:3:76"},"nodeType":"ForStatement","src":"3186:236:76"},{"expression":{"hexValue":"66616c7365","id":9583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3439:5:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":9547,"id":9584,"nodeType":"Return","src":"3432:12:76"}]},"documentation":{"id":9541,"nodeType":"StructuredDocumentation","src":"2954:90:76","text":" @notice Returns true if the Pool has been created from a known factory."},"functionSelector":"3a987dfa","id":9586,"implemented":true,"kind":"function","modifiers":[],"name":"isPoolFromKnownFactory","nodeType":"FunctionDefinition","parameters":{"id":9544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9543,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":9586,"src":"3081:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9542,"name":"address","nodeType":"ElementaryTypeName","src":"3081:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3080:14:76"},"returnParameters":{"id":9547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9546,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9586,"src":"3116:4:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9545,"name":"bool","nodeType":"ElementaryTypeName","src":"3116:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3115:6:76"},"scope":9655,"src":"3049:402:76","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":9653,"nodeType":"Block","src":"4192:1220:76","statements":[{"expression":{"arguments":[{"arguments":[{"id":9594,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9589,"src":"4508:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9593,"name":"isPoolFromKnownFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9586,"src":"4485:22:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":9595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4485:28:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f7279","id":9596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4515:32:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_13e87f3ae685b578cfd5eed93ea21a329be7feef08ec3f31cede6af8b3982f02","typeString":"literal_string \"Pool is not from known factory\""},"value":"Pool is not from known factory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_13e87f3ae685b578cfd5eed93ea21a329be7feef08ec3f31cede6af8b3982f02","typeString":"literal_string \"Pool is not from known factory\""}],"id":9592,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4477:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4477:71:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9598,"nodeType":"ExpressionStatement","src":"4477:71:76"},{"assignments":[9602],"declarations":[{"constant":false,"id":9602,"mutability":"mutable","name":"rateProviders","nodeType":"VariableDeclaration","scope":9653,"src":"4649:36:76","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":9600,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"4649:13:76","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":9601,"nodeType":"ArrayTypeName","src":"4649:15:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"id":9608,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9604,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9589,"src":"4706:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9603,"name":"IRateProviderPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1066,"src":"4688:17:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProviderPool_$1066_$","typeString":"type(contract IRateProviderPool)"}},"id":9605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4688:23:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProviderPool_$1066","typeString":"contract IRateProviderPool"}},"id":9606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRateProviders","nodeType":"MemberAccess","referencedDeclaration":1065,"src":"4688:40:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr_$","typeString":"function () view external returns (contract IRateProvider[] memory)"}},"id":9607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4688:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4649:81:76"},{"body":{"id":9647,"nodeType":"Block","src":"4791:371:76","statements":[{"condition":{"commonType":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"},"id":9626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":9620,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"4809:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":9622,"indexExpression":{"id":9621,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9610,"src":"4823:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4809:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":9624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4843:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9623,"name":"IRateProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1054,"src":"4829:13:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRateProvider_$1054_$","typeString":"type(contract IRateProvider)"}},"id":9625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4829:16:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"src":"4809:36:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9646,"nodeType":"IfStatement","src":"4805:347:76","trueBody":{"id":9645,"nodeType":"Block","src":"4847:305:76","statements":[{"clauses":[{"block":{"id":9633,"nodeType":"Block","src":"4897:125:76","statements":[{"id":9632,"nodeType":"Continue","src":"4995:8:76"}]},"errorName":"","id":9634,"nodeType":"TryCatchClause","src":"4897:125:76"},{"block":{"id":9642,"nodeType":"Block","src":"5029:109:76","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":9636,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9589,"src":"5065:4:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9635,"name":"IRecoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1089,"src":"5051:13:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRecoveryMode_$1089_$","typeString":"type(contract IRecoveryMode)"}},"id":9637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5051:19:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRecoveryMode_$1089","typeString":"contract IRecoveryMode"}},"id":9638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"enableRecoveryMode","nodeType":"MemberAccess","referencedDeclaration":1078,"src":"5051:38:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":9639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5051:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9640,"nodeType":"ExpressionStatement","src":"5051:40:76"},{"functionReturnParameters":9591,"id":9641,"nodeType":"Return","src":"5113:7:76"}]},"errorName":"","id":9643,"nodeType":"TryCatchClause","src":"5023:115:76"}],"externalCall":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":9627,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"4869:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":9629,"indexExpression":{"id":9628,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9610,"src":"4883:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4869:16:76","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":9630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getRate","nodeType":"MemberAccess","referencedDeclaration":1053,"src":"4869:24:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4869:26:76","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9644,"nodeType":"TryStatement","src":"4865:273:76"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9613,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9610,"src":"4760:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":9614,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9602,"src":"4764:13:76","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"id":9615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4764:20:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4760:24:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9648,"initializationExpression":{"assignments":[9610],"declarations":[{"constant":false,"id":9610,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":9648,"src":"4745:9:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9609,"name":"uint256","nodeType":"ElementaryTypeName","src":"4745:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":9612,"initialValue":{"hexValue":"30","id":9611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4757:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4745:13:76"},"loopExpression":{"expression":{"id":9618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4786:3:76","subExpression":{"id":9617,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9610,"src":"4788:1:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9619,"nodeType":"ExpressionStatement","src":"4786:3:76"},"nodeType":"ForStatement","src":"4740:422:76"},{"expression":{"arguments":[{"hexValue":"506f6f6c277320726174652070726f76696465727320646f206e6f7420726576657274","id":9650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5367:37:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3980a55de7ecda2f3df6c4353d8eea765956ba30d3e5ad086a1a3d8455afff9","typeString":"literal_string \"Pool's rate providers do not revert\""},"value":"Pool's rate providers do not revert"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3980a55de7ecda2f3df6c4353d8eea765956ba30d3e5ad086a1a3d8455afff9","typeString":"literal_string \"Pool's rate providers do not revert\""}],"id":9649,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"5360:6:76","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":9651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5360:45:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9652,"nodeType":"ExpressionStatement","src":"5360:45:76"}]},"documentation":{"id":9587,"nodeType":"StructuredDocumentation","src":"3457:679:76","text":" @notice Enables Recovery Mode in a Pool, provided some of its rate providers are failing (i.e. `getRate()`\n reverts).\n Pools that are in Recovery Mode can be exited by LPs via the special Recovery Mode Exit, which avoids any complex\n computations and does not call into any external contracts, which makes it a very dependable way to retrieve the\n underlying tokens.\n However, while Recovery Mode is enabled the Pool pays no protocol fees. Additionally, any protocol fees\n accrued before enabling Recovery Mode will be forfeited.\n The Pool must have been created via a known Pool Factory contract."},"functionSelector":"dc3f574e","id":9654,"implemented":true,"kind":"function","modifiers":[],"name":"enableRecoveryMode","nodeType":"FunctionDefinition","parameters":{"id":9590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9589,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":9654,"src":"4169:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9588,"name":"address","nodeType":"ElementaryTypeName","src":"4169:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4168:14:76"},"returnParameters":{"id":9591,"nodeType":"ParameterList","parameters":[],"src":"4192:0:76"},"scope":9655,"src":"4141:1271:76","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9656,"src":"1522:3892:76"}],"src":"688:4727:76"},"id":76},"contracts/ProtocolFeePercentagesProvider.sol":{"ast":{"absolutePath":"contracts/ProtocolFeePercentagesProvider.sol","exportedSymbols":{"ProtocolFeePercentagesProvider":[10051]},"id":10052,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":9657,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:77"},{"id":9658,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:77"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","id":9659,"nodeType":"ImportDirective","scope":10052,"sourceUnit":3153,"src":"747:81:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol","id":9660,"nodeType":"ImportDirective","scope":10052,"sourceUnit":2390,"src":"829:101:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":9661,"nodeType":"ImportDirective","scope":10052,"sourceUnit":4891,"src":"932:88:77","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol","id":9662,"nodeType":"ImportDirective","scope":10052,"sourceUnit":8342,"src":"1021:78:77","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":9663,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2376,"src":"1144:31:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"id":9664,"nodeType":"InheritanceSpecifier","src":"1144:31:77"},{"baseName":{"id":9665,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4890,"src":"1177:23:77","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}},"id":9666,"nodeType":"InheritanceSpecifier","src":"1177:23:77"}],"contractDependencies":[1880,2376,4048,4890],"contractKind":"contract","fullyImplemented":true,"id":10051,"linearizedBaseContracts":[10051,4890,4048,1880,2376],"name":"ProtocolFeePercentagesProvider","nodeType":"ContractDefinition","nodes":[{"id":9669,"libraryName":{"id":9667,"name":"SafeCast","nodeType":"UserDefinedTypeName","referencedDeclaration":8341,"src":"1213:8:77","typeDescriptions":{"typeIdentifier":"t_contract$_SafeCast_$8341","typeString":"library SafeCast"}},"nodeType":"UsingForDirective","src":"1207:27:77","typeName":{"id":9668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1226:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":9671,"mutability":"immutable","name":"_protocolFeesCollector","nodeType":"VariableDeclaration","scope":10051,"src":"1240:63:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":9670,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"1240:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"canonicalName":"ProtocolFeePercentagesProvider.FeeTypeData","id":9680,"members":[{"constant":false,"id":9673,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9680,"src":"1339:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":9672,"name":"uint64","nodeType":"ElementaryTypeName","src":"1339:6:77","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":9675,"mutability":"mutable","name":"maximum","nodeType":"VariableDeclaration","scope":9680,"src":"1361:14:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":9674,"name":"uint64","nodeType":"ElementaryTypeName","src":"1361:6:77","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":9677,"mutability":"mutable","name":"registered","nodeType":"VariableDeclaration","scope":9680,"src":"1385:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9676,"name":"bool","nodeType":"ElementaryTypeName","src":"1385:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":9679,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9680,"src":"1410:11:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":9678,"name":"string","nodeType":"ElementaryTypeName","src":"1410:6:77","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"FeeTypeData","nodeType":"StructDefinition","scope":10051,"src":"1310:118:77","visibility":"public"},{"constant":false,"id":9684,"mutability":"mutable","name":"_feeTypeData","nodeType":"VariableDeclaration","scope":10051,"src":"1434:52:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData)"},"typeName":{"id":9683,"keyType":{"id":9681,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1434:31:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData)"},"valueType":{"id":9682,"name":"FeeTypeData","nodeType":"UserDefinedTypeName","referencedDeclaration":9680,"src":"1453:11:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage_ptr","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData"}}},"visibility":"private"},{"constant":true,"id":9687,"mutability":"constant","name":"_MAX_PROTOCOL_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":10051,"src":"1591:60:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9685,"name":"uint256","nodeType":"ElementaryTypeName","src":"1591:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653138","id":9686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:77","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1e18"},"visibility":"private"},{"constant":true,"id":9690,"mutability":"constant","name":"_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":10051,"src":"1717:66:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9688,"name":"uint256","nodeType":"ElementaryTypeName","src":"1717:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":9689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1778:5:77","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"private"},{"constant":true,"id":9693,"mutability":"constant","name":"_MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":10051,"src":"1796:71:77","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9691,"name":"uint256","nodeType":"ElementaryTypeName","src":"1796:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653136","id":9692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1863:4:77","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"value":"1e16"},"visibility":"private"},{"body":{"id":9763,"nodeType":"Block","src":"2011:1101:77","statements":[{"assignments":[9706],"declarations":[{"constant":false,"id":9706,"mutability":"mutable","name":"protocolFeeCollector","nodeType":"VariableDeclaration","scope":9763,"src":"2021:43:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":9705,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"2021:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"id":9710,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9707,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9695,"src":"2067:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":9708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3604,"src":"2067:30:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":9709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:32:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"nodeType":"VariableDeclarationStatement","src":"2021:78:77"},{"expression":{"id":9713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":9711,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"2109:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":9712,"name":"protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9706,"src":"2134:20:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"src":"2109:45:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9714,"nodeType":"ExpressionStatement","src":"2109:45:77"},{"expression":{"arguments":[{"expression":{"id":9716,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"2346:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"YIELD","nodeType":"MemberAccess","referencedDeclaration":2385,"src":"2346:21:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"5969656c64","id":9718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2369:7:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_0dc8618f4925c4319195a39ada16304f511bf885ff9f3d63bc6b0f3979e46fb6","typeString":"literal_string \"Yield\""},"value":"Yield"},{"id":9719,"name":"maxYieldValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9697,"src":"2378:13:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2393:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_0dc8618f4925c4319195a39ada16304f511bf885ff9f3d63bc6b0f3979e46fb6","typeString":"literal_string \"Yield\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9715,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"2329:16:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":9721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2329:66:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9722,"nodeType":"ExpressionStatement","src":"2329:66:77"},{"expression":{"arguments":[{"expression":{"id":9724,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"2422:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AUM","nodeType":"MemberAccess","referencedDeclaration":2388,"src":"2422:19:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"41737365747320556e646572204d616e6167656d656e74","id":9726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2443:25:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_1b3163719d909d21fddec0d3895753e79709f056f59200d2a0b8b000bff2174e","typeString":"literal_string \"Assets Under Management\""},"value":"Assets Under Management"},{"id":9727,"name":"maxAUMValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9699,"src":"2470:11:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":9728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2483:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_1b3163719d909d21fddec0d3895753e79709f056f59200d2a0b8b000bff2174e","typeString":"literal_string \"Assets Under Management\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9723,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"2405:16:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":9729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2405:80:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9730,"nodeType":"ExpressionStatement","src":"2405:80:77"},{"expression":{"id":9737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":9731,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"2856:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9734,"indexExpression":{"expression":{"id":9732,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"2869:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2379,"src":"2869:20:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2856:34:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":9677,"src":"2856:45:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2904:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2856:52:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9738,"nodeType":"ExpressionStatement","src":"2856:52:77"},{"expression":{"id":9745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":9739,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"2918:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9742,"indexExpression":{"expression":{"id":9740,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"2931:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2379,"src":"2931:20:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2918:34:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":9679,"src":"2918:39:77","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"53776170","id":9744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2960:6:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_bce316f0d9d2a3affa97de1d99bb2aac0538e2666d0d8545545ead241ef0ccab","typeString":"literal_string \"Swap\""},"value":"Swap"},"src":"2918:48:77","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9746,"nodeType":"ExpressionStatement","src":"2918:48:77"},{"expression":{"id":9753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":9747,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"2977:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9750,"indexExpression":{"expression":{"id":9748,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"2990:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2382,"src":"2990:26:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2977:40:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":9677,"src":"2977:51:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":9752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3031:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2977:58:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":9754,"nodeType":"ExpressionStatement","src":"2977:58:77"},{"expression":{"id":9761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":9755,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"3045:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9758,"indexExpression":{"expression":{"id":9756,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"3058:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2382,"src":"3058:26:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3045:40:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9759,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":9679,"src":"3045:45:77","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"466c617368204c6f616e","id":9760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3093:12:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d188f900809220270edc6e745970c5466117e6e8142df613514e4ca80ce2e34","typeString":"literal_string \"Flash Loan\""},"value":"Flash Loan"},"src":"3045:60:77","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":9762,"nodeType":"ExpressionStatement","src":"3045:60:77"}]},"id":9764,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":9702,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9695,"src":"2004:5:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":9703,"modifierName":{"id":9701,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"1980:23:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4890_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1980:30:77"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":9700,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9695,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":9764,"src":"1901:12:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":9694,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1901:6:77","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":9697,"mutability":"mutable","name":"maxYieldValue","nodeType":"VariableDeclaration","scope":9764,"src":"1923:21:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1923:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9699,"mutability":"mutable","name":"maxAUMValue","nodeType":"VariableDeclaration","scope":9764,"src":"1954:19:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9698,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1891:88:77"},"returnParameters":{"id":9704,"nodeType":"ParameterList","parameters":[],"src":"2011:0:77"},"scope":10051,"src":"1880:1232:77","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9776,"nodeType":"Block","src":"3161:85:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":9770,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9766,"src":"3194:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9769,"name":"isValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9880,"src":"3179:14:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":9771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3179:23:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e6f6e2d6578697374656e74206665652074797065","id":9772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3204:23:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc27d179ec2dbfaa6f01c2b422175e5f8113ee76d764a98b39cf9e2d0f3c9f8c","typeString":"literal_string \"Non-existent fee type\""},"value":"Non-existent fee type"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc27d179ec2dbfaa6f01c2b422175e5f8113ee76d764a98b39cf9e2d0f3c9f8c","typeString":"literal_string \"Non-existent fee type\""}],"id":9768,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3171:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3171:57:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9774,"nodeType":"ExpressionStatement","src":"3171:57:77"},{"id":9775,"nodeType":"PlaceholderStatement","src":"3238:1:77"}]},"id":9777,"name":"withValidFeeType","nodeType":"ModifierDefinition","parameters":{"id":9767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9766,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9777,"src":"3144:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9765,"name":"uint256","nodeType":"ElementaryTypeName","src":"3144:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3143:17:77"},"src":"3118:128:77","virtual":false,"visibility":"internal"},{"baseFunctions":[2325],"body":{"id":9807,"nodeType":"Block","src":"3427:159:77","statements":[{"expression":{"arguments":[{"id":9796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3445:33:77","subExpression":{"expression":{"baseExpression":{"id":9792,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"3446:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9794,"indexExpression":{"id":9793,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"3459:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3446:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":9677,"src":"3446:32:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"466565207479706520616c72656164792072656769737465726564","id":9797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3480:29:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_48c17933ff8219046e94032890837772a3eac6cd33d4cd3258cc53b6ef327ec8","typeString":"literal_string \"Fee type already registered\""},"value":"Fee type already registered"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_48c17933ff8219046e94032890837772a3eac6cd33d4cd3258cc53b6ef327ec8","typeString":"literal_string \"Fee type already registered\""}],"id":9791,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3437:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3437:73:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9799,"nodeType":"ExpressionStatement","src":"3437:73:77"},{"expression":{"arguments":[{"id":9801,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9779,"src":"3537:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9802,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9781,"src":"3546:4:77","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9803,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9783,"src":"3552:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9804,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9785,"src":"3566:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9800,"name":"_registerFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9866,"src":"3520:16:77","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256,uint256)"}},"id":9805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3520:59:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9806,"nodeType":"ExpressionStatement","src":"3520:59:77"}]},"functionSelector":"7268d6ce","id":9808,"implemented":true,"kind":"function","modifiers":[{"id":9789,"modifierName":{"id":9788,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"3414:12:77","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3414:12:77"}],"name":"registerFeeType","nodeType":"FunctionDefinition","overrides":{"id":9787,"nodeType":"OverrideSpecifier","overrides":[],"src":"3405:8:77"},"parameters":{"id":9786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9779,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9808,"src":"3286:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9778,"name":"uint256","nodeType":"ElementaryTypeName","src":"3286:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9781,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9808,"src":"3311:18:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9780,"name":"string","nodeType":"ElementaryTypeName","src":"3311:6:77","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9783,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":9808,"src":"3339:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9782,"name":"uint256","nodeType":"ElementaryTypeName","src":"3339:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9785,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":9808,"src":"3369:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9784,"name":"uint256","nodeType":"ElementaryTypeName","src":"3369:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3276:119:77"},"returnParameters":{"id":9790,"nodeType":"ParameterList","parameters":[],"src":"3427:0:77"},"scope":10051,"src":"3252:334:77","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9865,"nodeType":"Block","src":"3745:543:77","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9820,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"3764:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":9821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3779:1:77","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3764:16:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":9823,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3763:18:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9824,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"3786:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9825,"name":"_MAX_PROTOCOL_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9687,"src":"3802:28:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3786:44:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":9827,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3785:46:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3763:68:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206d6178696d756d206665652070657263656e74616765","id":9829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3833:32:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_c0dda56f4a1b09c6edec39e0021ac98a409ed3e7412aab60a8b1f75b2f5dbd26","typeString":"literal_string \"Invalid maximum fee percentage\""},"value":"Invalid maximum fee percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c0dda56f4a1b09c6edec39e0021ac98a409ed3e7412aab60a8b1f75b2f5dbd26","typeString":"literal_string \"Invalid maximum fee percentage\""}],"id":9819,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3755:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3755:111:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9831,"nodeType":"ExpressionStatement","src":"3755:111:77"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9833,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"3884:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":9834,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"3900:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3884:28:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c696420696e697469616c2070657263656e74616765","id":9836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3914:28:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_0cbcc74c4765f61088179588f76e22a4c8e43ee29da8107b250bce69e460cd8d","typeString":"literal_string \"Invalid initial percentage\""},"value":"Invalid initial percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0cbcc74c4765f61088179588f76e22a4c8e43ee29da8107b250bce69e460cd8d","typeString":"literal_string \"Invalid initial percentage\""}],"id":9832,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3876:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3876:67:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9838,"nodeType":"ExpressionStatement","src":"3876:67:77"},{"expression":{"id":9852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":9839,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"3954:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9841,"indexExpression":{"id":9840,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"3967:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3954:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"hexValue":"74727565","id":9843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4016:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":9844,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"4040:4:77","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9845,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"4067:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":8340,"src":"4067:21:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":9847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4067:23:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9848,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"4111:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":8340,"src":"4111:21:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":9850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4111:23:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":9842,"name":"FeeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9680,"src":"3978:11:77","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_FeeTypeData_$9680_storage_ptr_$","typeString":"type(struct ProtocolFeePercentagesProvider.FeeTypeData storage pointer)"}},"id":9851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["registered","name","maximum","value"],"nodeType":"FunctionCall","src":"3978:167:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_memory_ptr","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData memory"}},"src":"3954:191:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9853,"nodeType":"ExpressionStatement","src":"3954:191:77"},{"eventCall":{"arguments":[{"id":9855,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"4187:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9856,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9812,"src":"4196:4:77","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":9857,"name":"maximumValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9814,"src":"4202:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9854,"name":"ProtocolFeeTypeRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2307,"src":"4161:25:77","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,string memory,uint256)"}},"id":9858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4161:54:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9859,"nodeType":"EmitStatement","src":"4156:59:77"},{"eventCall":{"arguments":[{"id":9861,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9810,"src":"4259:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9862,"name":"initialValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9816,"src":"4268:12:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9860,"name":"ProtocolFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"4230:28:77","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4230:51:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9864,"nodeType":"EmitStatement","src":"4225:56:77"}]},"id":9866,"implemented":true,"kind":"function","modifiers":[],"name":"_registerFeeType","nodeType":"FunctionDefinition","parameters":{"id":9817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9810,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9866,"src":"3627:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9809,"name":"uint256","nodeType":"ElementaryTypeName","src":"3627:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9812,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":9866,"src":"3652:18:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9811,"name":"string","nodeType":"ElementaryTypeName","src":"3652:6:77","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":9814,"mutability":"mutable","name":"maximumValue","nodeType":"VariableDeclaration","scope":9866,"src":"3680:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9813,"name":"uint256","nodeType":"ElementaryTypeName","src":"3680:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9816,"mutability":"mutable","name":"initialValue","nodeType":"VariableDeclaration","scope":9866,"src":"3710:20:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9815,"name":"uint256","nodeType":"ElementaryTypeName","src":"3710:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3617:119:77"},"returnParameters":{"id":9818,"nodeType":"ParameterList","parameters":[],"src":"3745:0:77"},"scope":10051,"src":"3592:696:77","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[2333],"body":{"id":9879,"nodeType":"Block","src":"4371:56:77","statements":[{"expression":{"expression":{"baseExpression":{"id":9874,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"4388:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9876,"indexExpression":{"id":9875,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9868,"src":"4401:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4388:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9877,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"registered","nodeType":"MemberAccess","referencedDeclaration":9677,"src":"4388:32:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9873,"id":9878,"nodeType":"Return","src":"4381:39:77"}]},"functionSelector":"868897a0","id":9880,"implemented":true,"kind":"function","modifiers":[],"name":"isValidFeeType","nodeType":"FunctionDefinition","overrides":{"id":9870,"nodeType":"OverrideSpecifier","overrides":[],"src":"4347:8:77"},"parameters":{"id":9869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9868,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9880,"src":"4318:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9867,"name":"uint256","nodeType":"ElementaryTypeName","src":"4318:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4317:17:77"},"returnParameters":{"id":9873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9872,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9880,"src":"4365:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9871,"name":"bool","nodeType":"ElementaryTypeName","src":"4365:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4364:6:77"},"scope":10051,"src":"4294:133:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2343],"body":{"id":9899,"nodeType":"Block","src":"4605:69:77","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9893,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9884,"src":"4622:5:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":9895,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9882,"src":"4659:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9894,"name":"getFeeTypeMaximumPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10033,"src":"4631:27:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":9896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4631:36:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4622:45:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":9892,"id":9898,"nodeType":"Return","src":"4615:52:77"}]},"functionSelector":"74735e0b","id":9900,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9888,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9882,"src":"4569:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9889,"modifierName":{"id":9887,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"4552:16:77","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4552:25:77"}],"name":"isValidFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":9886,"nodeType":"OverrideSpecifier","overrides":[],"src":"4535:8:77"},"parameters":{"id":9885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9882,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9900,"src":"4467:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4467:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9884,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":9900,"src":"4484:13:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9883,"name":"uint256","nodeType":"ElementaryTypeName","src":"4484:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4466:32:77"},"returnParameters":{"id":9892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9891,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9900,"src":"4595:4:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9890,"name":"bool","nodeType":"ElementaryTypeName","src":"4595:4:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4594:6:77"},"scope":10051,"src":"4433:241:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2351],"body":{"id":9960,"nodeType":"Block","src":"4838:495:77","statements":[{"expression":{"arguments":[{"arguments":[{"id":9915,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"4881:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9916,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9904,"src":"4890:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9914,"name":"isValidFeeTypePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9900,"src":"4856:24:77","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256,uint256) view returns (bool)"}},"id":9917,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4856:43:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e76616c6964206665652070657263656e74616765","id":9918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4901:24:77","typeDescriptions":{"typeIdentifier":"t_stringliteral_f72be47e09c433cff91d0c97ed6378549a17c29bc29d6cbd73ed6a4c886f6157","typeString":"literal_string \"Invalid fee percentage\""},"value":"Invalid fee percentage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f72be47e09c433cff91d0c97ed6378549a17c29bc29d6cbd73ed6a4c886f6157","typeString":"literal_string \"Invalid fee percentage\""}],"id":9913,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4848:7:77","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4848:78:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9920,"nodeType":"ExpressionStatement","src":"4848:78:77"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9921,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"4941:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9922,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"4952:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2379,"src":"4952:20:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4941:31:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9932,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"5062:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9933,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"5073:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2382,"src":"5073:26:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5062:37:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9952,"nodeType":"Block","src":"5190:74:77","statements":[{"expression":{"id":9950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":9943,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"5204:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9945,"indexExpression":{"id":9944,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"5217:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5204:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9946,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9673,"src":"5204:27:77","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9947,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9904,"src":"5234:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toUint64","nodeType":"MemberAccess","referencedDeclaration":8340,"src":"5234:17:77","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint64_$bound_to$_t_uint256_$","typeString":"function (uint256) pure returns (uint64)"}},"id":9949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5234:19:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5204:49:77","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":9951,"nodeType":"ExpressionStatement","src":"5204:49:77"}]},"id":9953,"nodeType":"IfStatement","src":"5058:206:77","trueBody":{"id":9942,"nodeType":"Block","src":"5101:83:77","statements":[{"expression":{"arguments":[{"id":9939,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9904,"src":"5164:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9936,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"5115:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setFlashLoanFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3122,"src":"5115:48:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":9940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5115:58:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9941,"nodeType":"ExpressionStatement","src":"5115:58:77"}]}},"id":9954,"nodeType":"IfStatement","src":"4937:327:77","trueBody":{"id":9931,"nodeType":"Block","src":"4974:78:77","statements":[{"expression":{"arguments":[{"id":9928,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9904,"src":"5032:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":9925,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"4988:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3117,"src":"4988:43:77","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":9929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4988:53:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9930,"nodeType":"ExpressionStatement","src":"4988:53:77"}]}},{"eventCall":{"arguments":[{"id":9956,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"5308:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":9957,"name":"newValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9904,"src":"5317:8:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9955,"name":"ProtocolFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"5279:28:77","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":9958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5279:47:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9959,"nodeType":"EmitStatement","src":"5274:52:77"}]},"functionSelector":"4d44f0e9","id":9961,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9908,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9902,"src":"4804:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9909,"modifierName":{"id":9907,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"4787:16:77","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4787:25:77"},{"id":9911,"modifierName":{"id":9910,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4821:12:77","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4821:12:77"}],"name":"setFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":9906,"nodeType":"OverrideSpecifier","overrides":[],"src":"4770:8:77"},"parameters":{"id":9905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9902,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9961,"src":"4710:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9901,"name":"uint256","nodeType":"ElementaryTypeName","src":"4710:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":9904,"mutability":"mutable","name":"newValue","nodeType":"VariableDeclaration","scope":9961,"src":"4727:16:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4709:35:77"},"returnParameters":{"id":9912,"nodeType":"ParameterList","parameters":[],"src":"4838:0:77"},"scope":10051,"src":"4680:653:77","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2359],"body":{"id":9998,"nodeType":"Block","src":"5453:326:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9972,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9963,"src":"5467:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9973,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"5478:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2379,"src":"5478:20:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5467:31:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":9981,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9963,"src":"5587:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":9982,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"5598:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":9983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2382,"src":"5598:26:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5587:37:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":9995,"nodeType":"Block","src":"5714:59:77","statements":[{"expression":{"expression":{"baseExpression":{"id":9990,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"5735:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":9992,"indexExpression":{"id":9991,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9963,"src":"5748:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5735:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":9993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":9673,"src":"5735:27:77","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":9971,"id":9994,"nodeType":"Return","src":"5728:34:77"}]},"id":9996,"nodeType":"IfStatement","src":"5583:190:77","trueBody":{"id":9989,"nodeType":"Block","src":"5626:82:77","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9985,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"5647:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getFlashLoanFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3132,"src":"5647:48:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5647:50:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9971,"id":9988,"nodeType":"Return","src":"5640:57:77"}]}},"id":9997,"nodeType":"IfStatement","src":"5463:310:77","trueBody":{"id":9980,"nodeType":"Block","src":"5500:77:77","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":9976,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9671,"src":"5521:22:77","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":9977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getSwapFeePercentage","nodeType":"MemberAccess","referencedDeclaration":3127,"src":"5521:43:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":9978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5521:45:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":9971,"id":9979,"nodeType":"Return","src":"5514:52:77"}]}}]},"functionSelector":"1a7c3263","id":9999,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":9967,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9963,"src":"5426:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":9968,"modifierName":{"id":9966,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"5409:16:77","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5409:25:77"}],"name":"getFeeTypePercentage","nodeType":"FunctionDefinition","overrides":{"id":9965,"nodeType":"OverrideSpecifier","overrides":[],"src":"5400:8:77"},"parameters":{"id":9964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9963,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":9999,"src":"5369:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9962,"name":"uint256","nodeType":"ElementaryTypeName","src":"5369:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5368:17:77"},"returnParameters":{"id":9971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9970,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":9999,"src":"5444:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9969,"name":"uint256","nodeType":"ElementaryTypeName","src":"5444:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5443:9:77"},"scope":10051,"src":"5339:440:77","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2367],"body":{"id":10032,"nodeType":"Block","src":"5948:305:77","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10010,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"5962:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10011,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"5973:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":10012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SWAP","nodeType":"MemberAccess","referencedDeclaration":2379,"src":"5973:20:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5962:31:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10017,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"6070:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10018,"name":"ProtocolFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2389,"src":"6081:15:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ProtocolFeeType_$2389_$","typeString":"type(library ProtocolFeeType)"}},"id":10019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"FLASH_LOAN","nodeType":"MemberAccess","referencedDeclaration":2382,"src":"6081:26:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6070:37:77","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10029,"nodeType":"Block","src":"6186:61:77","statements":[{"expression":{"expression":{"baseExpression":{"id":10024,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"6207:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":10026,"indexExpression":{"id":10025,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"6220:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6207:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":10027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maximum","nodeType":"MemberAccess","referencedDeclaration":9675,"src":"6207:29:77","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":10009,"id":10028,"nodeType":"Return","src":"6200:36:77"}]},"id":10030,"nodeType":"IfStatement","src":"6066:181:77","trueBody":{"id":10023,"nodeType":"Block","src":"6109:71:77","statements":[{"expression":{"id":10021,"name":"_MAX_PROTOCOL_FLASH_LOAN_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9693,"src":"6130:39:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10009,"id":10022,"nodeType":"Return","src":"6123:46:77"}]}},"id":10031,"nodeType":"IfStatement","src":"5958:289:77","trueBody":{"id":10016,"nodeType":"Block","src":"5995:65:77","statements":[{"expression":{"id":10014,"name":"_MAX_PROTOCOL_SWAP_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9690,"src":"6016:33:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10009,"id":10015,"nodeType":"Return","src":"6009:40:77"}]}}]},"functionSelector":"5e2cae4c","id":10033,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10005,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10001,"src":"5909:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10006,"modifierName":{"id":10004,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"5892:16:77","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5892:25:77"}],"name":"getFeeTypeMaximumPercentage","nodeType":"FunctionDefinition","overrides":{"id":10003,"nodeType":"OverrideSpecifier","overrides":[],"src":"5875:8:77"},"parameters":{"id":10002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10001,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":10033,"src":"5822:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10000,"name":"uint256","nodeType":"ElementaryTypeName","src":"5822:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5821:17:77"},"returnParameters":{"id":10009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10008,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10033,"src":"5935:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10007,"name":"uint256","nodeType":"ElementaryTypeName","src":"5935:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5934:9:77"},"scope":10051,"src":"5785:468:77","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2375],"body":{"id":10049,"nodeType":"Block","src":"6373:50:77","statements":[{"expression":{"expression":{"baseExpression":{"id":10044,"name":"_feeTypeData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9684,"src":"6390:12:77","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_FeeTypeData_$9680_storage_$","typeString":"mapping(uint256 => struct ProtocolFeePercentagesProvider.FeeTypeData storage ref)"}},"id":10046,"indexExpression":{"id":10045,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"6403:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6390:21:77","typeDescriptions":{"typeIdentifier":"t_struct$_FeeTypeData_$9680_storage","typeString":"struct ProtocolFeePercentagesProvider.FeeTypeData storage ref"}},"id":10047,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":9679,"src":"6390:26:77","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":10043,"id":10048,"nodeType":"Return","src":"6383:33:77"}]},"functionSelector":"b661eda1","id":10050,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":10039,"name":"feeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10035,"src":"6340:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10040,"modifierName":{"id":10038,"name":"withValidFeeType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9777,"src":"6323:16:77","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"6323:25:77"}],"name":"getFeeTypeName","nodeType":"FunctionDefinition","overrides":{"id":10037,"nodeType":"OverrideSpecifier","overrides":[],"src":"6314:8:77"},"parameters":{"id":10036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10035,"mutability":"mutable","name":"feeType","nodeType":"VariableDeclaration","scope":10050,"src":"6283:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10034,"name":"uint256","nodeType":"ElementaryTypeName","src":"6283:7:77","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6282:17:77"},"returnParameters":{"id":10043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10042,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10050,"src":"6358:13:77","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":10041,"name":"string","nodeType":"ElementaryTypeName","src":"6358:6:77","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6357:15:77"},"scope":10051,"src":"6259:164:77","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10052,"src":"1101:5324:77"}],"src":"688:5738:77"},"id":77},"contracts/ProtocolFeeSplitter.sol":{"ast":{"absolutePath":"contracts/ProtocolFeeSplitter.sol","exportedSymbols":{"Pool":[10065],"ProtocolFeeSplitter":[10601]},"id":10602,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10053,"literals":["solidity",">=","0.7",".0","<","0.9",".0"],"nodeType":"PragmaDirective","src":"688:31:78"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol","id":10054,"nodeType":"ImportDirective","scope":10602,"sourceUnit":2510,"src":"721:90:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","id":10055,"nodeType":"ImportDirective","scope":10602,"sourceUnit":2584,"src":"812:93:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10056,"nodeType":"ImportDirective","scope":10602,"sourceUnit":3618,"src":"906:65:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol","id":10057,"nodeType":"ImportDirective","scope":10602,"sourceUnit":4049,"src":"972:79:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":10058,"nodeType":"ImportDirective","scope":10602,"sourceUnit":5294,"src":"1052:72:78","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol","id":10059,"nodeType":"ImportDirective","scope":10602,"sourceUnit":3153,"src":"1125:81:78","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":10065,"linearizedBaseContracts":[10065],"name":"Pool","nodeType":"ContractDefinition","nodes":[{"functionSelector":"893d20e8","id":10064,"implemented":false,"kind":"function","modifiers":[],"name":"getOwner","nodeType":"FunctionDefinition","parameters":{"id":10060,"nodeType":"ParameterList","parameters":[],"src":"1246:2:78"},"returnParameters":{"id":10063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10064,"src":"1272:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10061,"name":"address","nodeType":"ElementaryTypeName","src":"1272:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1271:9:78"},"scope":10065,"src":"1229:52:78","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":10602,"src":"1208:75:78"},{"abstract":false,"baseContracts":[{"baseName":{"id":10067,"name":"IProtocolFeeSplitter","nodeType":"UserDefinedTypeName","referencedDeclaration":2509,"src":"1540:20:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeeSplitter_$2509","typeString":"contract IProtocolFeeSplitter"}},"id":10068,"nodeType":"InheritanceSpecifier","src":"1540:20:78"},{"baseName":{"id":10069,"name":"Authentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4048,"src":"1562:14:78","typeDescriptions":{"typeIdentifier":"t_contract$_Authentication_$4048","typeString":"contract Authentication"}},"id":10070,"nodeType":"InheritanceSpecifier","src":"1562:14:78"}],"contractDependencies":[1880,2509,4048],"contractKind":"contract","documentation":{"id":10066,"nodeType":"StructuredDocumentation","src":"1285:222:78","text":" @dev This contract is responsible for splitting the BPT profits collected\n by ProtocolFeeCollector between the pool's owner and Balancers DAO treasury\n Nothing happens for non-BPT tokens (WETH, WBTC, etc...)"},"fullyImplemented":true,"id":10601,"linearizedBaseContracts":[10601,4048,1880,2509],"name":"ProtocolFeeSplitter","nodeType":"ContractDefinition","nodes":[{"id":10073,"libraryName":{"id":10071,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5293,"src":"1589:10:78","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5293","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1583:29:78","typeName":{"id":10072,"name":"uint256","nodeType":"ElementaryTypeName","src":"1604:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"id":10076,"mutability":"constant","name":"_MAX_REVENUE_SHARING_FEE_PERCENTAGE","nodeType":"VariableDeclaration","scope":10601,"src":"1735:68:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10074,"name":"uint256","nodeType":"ElementaryTypeName","src":"1735:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530653136","id":10075,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1798:5:78","typeDescriptions":{"typeIdentifier":"t_rational_500000000000000000_by_1","typeString":"int_const 500000000000000000"},"value":"50e16"},"visibility":"private"},{"constant":false,"id":10078,"mutability":"immutable","name":"_protocolFeesWithdrawer","nodeType":"VariableDeclaration","scope":10601,"src":"1817:65:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":10077,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2583,"src":"1817:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"private"},{"constant":false,"id":10080,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":10601,"src":"1911:31:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":10079,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1911:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":10082,"mutability":"mutable","name":"_treasury","nodeType":"VariableDeclaration","scope":10601,"src":"1978:25:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10081,"name":"address","nodeType":"ElementaryTypeName","src":"1978:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":10084,"mutability":"mutable","name":"_defaultRevenueSharingFeePercentage","nodeType":"VariableDeclaration","scope":10601,"src":"2076:51:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10083,"name":"uint256","nodeType":"ElementaryTypeName","src":"2076:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"canonicalName":"ProtocolFeeSplitter.RevenueShareSettings","id":10089,"members":[{"constant":false,"id":10086,"mutability":"mutable","name":"revenueSharePercentageOverride","nodeType":"VariableDeclaration","scope":10089,"src":"2265:37:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":10085,"name":"uint96","nodeType":"ElementaryTypeName","src":"2265:6:78","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":10088,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":10089,"src":"2312:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10087,"name":"address","nodeType":"ElementaryTypeName","src":"2312:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"RevenueShareSettings","nodeType":"StructDefinition","scope":10601,"src":"2227:111:78","visibility":"public"},{"constant":false,"id":10093,"mutability":"mutable","name":"_poolSettings","nodeType":"VariableDeclaration","scope":10601,"src":"2374:62:78","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings)"},"typeName":{"id":10092,"keyType":{"id":10090,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2382:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Mapping","src":"2374:40:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings)"},"valueType":{"id":10091,"name":"RevenueShareSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":10089,"src":"2393:20:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"}}},"visibility":"private"},{"body":{"id":10128,"nodeType":"Block","src":"2713:171:78","statements":[{"expression":{"id":10114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10112,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10078,"src":"2723:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10113,"name":"protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10095,"src":"2749:22:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"src":"2723:48:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"id":10115,"nodeType":"ExpressionStatement","src":"2723:48:78"},{"expression":{"id":10118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10116,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10082,"src":"2781:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10117,"name":"treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10097,"src":"2793:8:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2781:20:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10119,"nodeType":"ExpressionStatement","src":"2781:20:78"},{"expression":{"id":10126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10120,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10080,"src":"2811:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10121,"name":"protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10095,"src":"2820:22:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"id":10122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":2527,"src":"2820:47:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":10123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2820:49:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":10124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vault","nodeType":"MemberAccess","referencedDeclaration":3151,"src":"2820:55:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view external returns (contract IVault)"}},"id":10125,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2820:57:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"2811:66:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":10127,"nodeType":"ExpressionStatement","src":"2811:66:78"}]},"id":10129,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":10106,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2700:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_ProtocolFeeSplitter_$10601","typeString":"contract ProtocolFeeSplitter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProtocolFeeSplitter_$10601","typeString":"contract ProtocolFeeSplitter"}],"id":10105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2692:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10104,"name":"address","nodeType":"ElementaryTypeName","src":"2692:7:78","typeDescriptions":{}}},"id":10107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2692:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2684:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":10102,"name":"uint256","nodeType":"ElementaryTypeName","src":"2684:7:78","typeDescriptions":{}}},"id":10108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2684:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10101,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2676:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":10100,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2676:7:78","typeDescriptions":{}}},"id":10109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2676:31:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":10110,"modifierName":{"id":10099,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"2661:14:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$4048_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"2661:47:78"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10095,"mutability":"mutable","name":"protocolFeesWithdrawer","nodeType":"VariableDeclaration","scope":10129,"src":"2455:46:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":10094,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2583,"src":"2455:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"},{"constant":false,"id":10097,"mutability":"mutable","name":"treasury","nodeType":"VariableDeclaration","scope":10129,"src":"2503:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10096,"name":"address","nodeType":"ElementaryTypeName","src":"2503:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2454:66:78"},"returnParameters":{"id":10111,"nodeType":"ParameterList","parameters":[],"src":"2713:0:78"},"scope":10601,"src":"2443:441:78","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2434],"body":{"id":10162,"nodeType":"Block","src":"3035:288:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10140,"name":"newSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"3054:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10141,"name":"_MAX_REVENUE_SHARING_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10076,"src":"3078:35:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3054:59:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10143,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3115:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":10144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"MemberAccess","referencedDeclaration":1862,"src":"3115:39:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10139,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3045:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10145,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3045:110:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10146,"nodeType":"ExpressionStatement","src":"3045:110:78"},{"expression":{"id":10155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":10147,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"3165:13:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":10149,"indexExpression":{"id":10148,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"3179:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3165:21:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":10150,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"revenueSharePercentageOverride","nodeType":"MemberAccess","referencedDeclaration":10086,"src":"3165:52:78","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10153,"name":"newSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"3227:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3220:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":10151,"name":"uint96","nodeType":"ElementaryTypeName","src":"3220:6:78","typeDescriptions":{}}},"id":10154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3220:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"3165:83:78","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"id":10156,"nodeType":"ExpressionStatement","src":"3165:83:78"},{"eventCall":{"arguments":[{"id":10158,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10131,"src":"3287:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10159,"name":"newSwapFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10133,"src":"3295:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10157,"name":"PoolRevenueShareChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2412,"src":"3263:23:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":10160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3263:53:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10161,"nodeType":"EmitStatement","src":"3258:58:78"}]},"functionSelector":"8b25b623","id":10163,"implemented":true,"kind":"function","modifiers":[{"id":10137,"modifierName":{"id":10136,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"3018:12:78","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3018:12:78"}],"name":"setRevenueSharingFeePercentage","nodeType":"FunctionDefinition","overrides":{"id":10135,"nodeType":"OverrideSpecifier","overrides":[],"src":"3001:8:78"},"parameters":{"id":10134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10131,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10163,"src":"2930:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10130,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2930:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10133,"mutability":"mutable","name":"newSwapFeePercentage","nodeType":"VariableDeclaration","scope":10163,"src":"2946:28:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10132,"name":"uint256","nodeType":"ElementaryTypeName","src":"2946:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2929:46:78"},"returnParameters":{"id":10138,"nodeType":"ParameterList","parameters":[],"src":"3035:0:78"},"scope":10601,"src":"2890:433:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2454],"body":{"id":10187,"nodeType":"Block","src":"3430:252:78","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10172,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10165,"src":"3449:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":10173,"name":"_MAX_REVENUE_SHARING_FEE_PERCENTAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10076,"src":"3466:35:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3449:52:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10175,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3503:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":10176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SPLITTER_FEE_PERCENTAGE_TOO_HIGH","nodeType":"MemberAccess","referencedDeclaration":1862,"src":"3503:39:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10171,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3440:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3440:103:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10178,"nodeType":"ExpressionStatement","src":"3440:103:78"},{"expression":{"id":10181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10179,"name":"_defaultRevenueSharingFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10084,"src":"3553:35:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10180,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10165,"src":"3591:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3553:51:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10182,"nodeType":"ExpressionStatement","src":"3553:51:78"},{"eventCall":{"arguments":[{"id":10184,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10165,"src":"3661:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10183,"name":"DefaultRevenueSharingFeePercentageChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"3619:41:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":10185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3619:56:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10186,"nodeType":"EmitStatement","src":"3614:61:78"}]},"functionSelector":"e65fed80","id":10188,"implemented":true,"kind":"function","modifiers":[{"id":10169,"modifierName":{"id":10168,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"3417:12:78","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3417:12:78"}],"name":"setDefaultRevenueSharingFeePercentage","nodeType":"FunctionDefinition","overrides":{"id":10167,"nodeType":"OverrideSpecifier","overrides":[],"src":"3408:8:78"},"parameters":{"id":10166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10165,"mutability":"mutable","name":"feePercentage","nodeType":"VariableDeclaration","scope":10188,"src":"3376:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10164,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3375:23:78"},"returnParameters":{"id":10170,"nodeType":"ParameterList","parameters":[],"src":"3430:0:78"},"scope":10601,"src":"3329:353:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2448],"body":{"id":10204,"nodeType":"Block","src":"3761:83:78","statements":[{"expression":{"id":10198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10196,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10082,"src":"3771:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10197,"name":"newTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"3783:11:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3771:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10199,"nodeType":"ExpressionStatement","src":"3771:23:78"},{"eventCall":{"arguments":[{"id":10201,"name":"newTreasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10190,"src":"3825:11:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10200,"name":"TreasuryChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"3809:15:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":10202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3809:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10203,"nodeType":"EmitStatement","src":"3804:33:78"}]},"functionSelector":"f0f44260","id":10205,"implemented":true,"kind":"function","modifiers":[{"id":10194,"modifierName":{"id":10193,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"3748:12:78","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3748:12:78"}],"name":"setTreasury","nodeType":"FunctionDefinition","overrides":{"id":10192,"nodeType":"OverrideSpecifier","overrides":[],"src":"3739:8:78"},"parameters":{"id":10191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10190,"mutability":"mutable","name":"newTreasury","nodeType":"VariableDeclaration","scope":10205,"src":"3709:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10189,"name":"address","nodeType":"ElementaryTypeName","src":"3709:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3708:21:78"},"returnParameters":{"id":10195,"nodeType":"ParameterList","parameters":[],"src":"3761:0:78"},"scope":10601,"src":"3688:156:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2442],"body":{"id":10245,"nodeType":"Block","src":"3936:261:78","statements":[{"assignments":[10214,null],"declarations":[{"constant":false,"id":10214,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":10245,"src":"3947:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10213,"name":"address","nodeType":"ElementaryTypeName","src":"3947:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":10219,"initialValue":{"arguments":[{"id":10217,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"3980:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10215,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10080,"src":"3965:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":10216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3303,"src":"3965:14:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":10218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3965:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"3946:41:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":10221,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4006:3:78","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4006:10:78","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":10224,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10214,"src":"4025:4:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10223,"name":"Pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10065,"src":"4020:4:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Pool_$10065_$","typeString":"type(contract Pool)"}},"id":10225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4020:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_Pool_$10065","typeString":"contract Pool"}},"id":10226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOwner","nodeType":"MemberAccess","referencedDeclaration":10064,"src":"4020:19:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":10227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4020:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4006:35:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":10229,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4043:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":10230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SENDER_NOT_ALLOWED","nodeType":"MemberAccess","referencedDeclaration":1631,"src":"4043:25:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10220,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3997:8:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":10231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3997:72:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10232,"nodeType":"ExpressionStatement","src":"3997:72:78"},{"expression":{"id":10238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":10233,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"4079:13:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":10235,"indexExpression":{"id":10234,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"4093:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4079:21:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":10236,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":10088,"src":"4079:33:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10237,"name":"newBeneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10209,"src":"4115:14:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4079:50:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":10239,"nodeType":"ExpressionStatement","src":"4079:50:78"},{"eventCall":{"arguments":[{"id":10241,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10207,"src":"4167:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10242,"name":"newBeneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10209,"src":"4175:14:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10240,"name":"PoolBeneficiaryChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"4144:22:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":10243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4144:46:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10244,"nodeType":"EmitStatement","src":"4139:51:78"}]},"functionSelector":"7ab74be4","id":10246,"implemented":true,"kind":"function","modifiers":[],"name":"setPoolBeneficiary","nodeType":"FunctionDefinition","overrides":{"id":10211,"nodeType":"OverrideSpecifier","overrides":[],"src":"3927:8:78"},"parameters":{"id":10210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10207,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10246,"src":"3878:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3878:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10209,"mutability":"mutable","name":"newBeneficiary","nodeType":"VariableDeclaration","scope":10246,"src":"3894:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10208,"name":"address","nodeType":"ElementaryTypeName","src":"3894:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3877:40:78"},"returnParameters":{"id":10212,"nodeType":"ParameterList","parameters":[],"src":"3936:0:78"},"scope":10601,"src":"3850:347:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2464],"body":{"id":10305,"nodeType":"Block","src":"4318:441:78","statements":[{"assignments":[10257,null],"declarations":[{"constant":false,"id":10257,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":10305,"src":"4329:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10256,"name":"address","nodeType":"ElementaryTypeName","src":"4329:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":10262,"initialValue":{"arguments":[{"id":10260,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"4362:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10258,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10080,"src":"4347:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":10259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3303,"src":"4347:14:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":10261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4347:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"4328:41:78"},{"assignments":[10264],"declarations":[{"constant":false,"id":10264,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":10305,"src":"4379:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10263,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4379:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10268,"initialValue":{"arguments":[{"id":10266,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10257,"src":"4399:4:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10265,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"4392:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":10267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4392:12:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4379:25:78"},{"assignments":[10270],"declarations":[{"constant":false,"id":10270,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":10305,"src":"4414:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10269,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10275,"initialValue":{"expression":{"baseExpression":{"id":10271,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"4436:13:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":10273,"indexExpression":{"id":10272,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"4450:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4436:21:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":10274,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":10088,"src":"4436:33:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4414:55:78"},{"expression":{"id":10283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":10276,"name":"beneficiaryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"4481:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10277,"name":"treasuryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10254,"src":"4500:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10278,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"4480:35:78","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10280,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10264,"src":"4530:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":10281,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"4535:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10279,"name":"_getAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10549,"src":"4518:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$2090_$_t_bytes32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC20,bytes32) view returns (uint256,uint256)"}},"id":10282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4518:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"4480:62:78","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10284,"nodeType":"ExpressionStatement","src":"4480:62:78"},{"expression":{"arguments":[{"id":10286,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10264,"src":"4566:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":10287,"name":"beneficiaryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"4571:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10288,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10270,"src":"4590:11:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10285,"name":"_withdrawBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"4553:12:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_uint256_$_t_address_$returns$__$","typeString":"function (contract IERC20,uint256,address)"}},"id":10289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4553:49:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10290,"nodeType":"ExpressionStatement","src":"4553:49:78"},{"expression":{"arguments":[{"id":10292,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10264,"src":"4625:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":10293,"name":"treasuryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10254,"src":"4630:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10294,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10082,"src":"4646:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":10291,"name":"_withdrawBpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10485,"src":"4612:12:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_uint256_$_t_address_$returns$__$","typeString":"function (contract IERC20,uint256,address)"}},"id":10295,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4612:44:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10296,"nodeType":"ExpressionStatement","src":"4612:44:78"},{"eventCall":{"arguments":[{"id":10298,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10248,"src":"4686:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10299,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10270,"src":"4694:11:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10300,"name":"beneficiaryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10252,"src":"4707:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10301,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10082,"src":"4726:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10302,"name":"treasuryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10254,"src":"4737:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10297,"name":"FeesCollected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2406,"src":"4672:13:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (bytes32,address,uint256,address,uint256)"}},"id":10303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4672:80:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10304,"nodeType":"EmitStatement","src":"4667:85:78"}]},"functionSelector":"817db73b","id":10306,"implemented":true,"kind":"function","modifiers":[],"name":"collectFees","nodeType":"FunctionDefinition","overrides":{"id":10250,"nodeType":"OverrideSpecifier","overrides":[],"src":"4249:8:78"},"parameters":{"id":10249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10248,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10306,"src":"4224:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10247,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4224:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4223:16:78"},"returnParameters":{"id":10255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10252,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":10306,"src":"4267:25:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10251,"name":"uint256","nodeType":"ElementaryTypeName","src":"4267:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10254,"mutability":"mutable","name":"treasuryAmount","nodeType":"VariableDeclaration","scope":10306,"src":"4294:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10253,"name":"uint256","nodeType":"ElementaryTypeName","src":"4294:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4266:51:78"},"scope":10601,"src":"4203:556:78","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2480],"body":{"id":10334,"nodeType":"Block","src":"4920:135:78","statements":[{"assignments":[10317,null],"declarations":[{"constant":false,"id":10317,"mutability":"mutable","name":"pool","nodeType":"VariableDeclaration","scope":10334,"src":"4931:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10316,"name":"address","nodeType":"ElementaryTypeName","src":"4931:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":10322,"initialValue":{"arguments":[{"id":10320,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"4964:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":10318,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10080,"src":"4949:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":10319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPool","nodeType":"MemberAccess","referencedDeclaration":3303,"src":"4949:14:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$returns$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"function (bytes32) view external returns (address,enum IVault.PoolSpecialization)"}},"id":10321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4949:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enum$_PoolSpecialization_$3276_$","typeString":"tuple(address,enum IVault.PoolSpecialization)"}},"nodeType":"VariableDeclarationStatement","src":"4930:41:78"},{"assignments":[10324],"declarations":[{"constant":false,"id":10324,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":10334,"src":"4981:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10323,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4981:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10328,"initialValue":{"arguments":[{"id":10326,"name":"pool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10317,"src":"5001:4:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10325,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"4994:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":10327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4994:12:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4981:25:78"},{"expression":{"arguments":[{"id":10330,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10324,"src":"5036:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":10331,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10308,"src":"5041:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10329,"name":"_getAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10549,"src":"5024:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$2090_$_t_bytes32_$returns$_t_uint256_$_t_uint256_$","typeString":"function (contract IERC20,bytes32) view returns (uint256,uint256)"}},"id":10332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5024:24:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":10315,"id":10333,"nodeType":"Return","src":"5017:31:78"}]},"functionSelector":"9d8669d3","id":10335,"implemented":true,"kind":"function","modifiers":[],"name":"getAmounts","nodeType":"FunctionDefinition","overrides":{"id":10310,"nodeType":"OverrideSpecifier","overrides":[],"src":"4839:8:78"},"parameters":{"id":10309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10308,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10335,"src":"4785:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10307,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4785:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4784:16:78"},"returnParameters":{"id":10315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10312,"mutability":"mutable","name":"beneficiaryAmount","nodeType":"VariableDeclaration","scope":10335,"src":"4865:25:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10311,"name":"uint256","nodeType":"ElementaryTypeName","src":"4865:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10314,"mutability":"mutable","name":"treasuryAmount","nodeType":"VariableDeclaration","scope":10335,"src":"4892:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10313,"name":"uint256","nodeType":"ElementaryTypeName","src":"4892:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4864:51:78"},"scope":10601,"src":"4765:290:78","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2492],"body":{"id":10343,"nodeType":"Block","src":"5155:47:78","statements":[{"expression":{"id":10341,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10078,"src":"5172:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"functionReturnParameters":10340,"id":10342,"nodeType":"Return","src":"5165:30:78"}]},"functionSelector":"4f4f4bc7","id":10344,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeesWithdrawer","nodeType":"FunctionDefinition","overrides":{"id":10337,"nodeType":"OverrideSpecifier","overrides":[],"src":"5112:8:78"},"parameters":{"id":10336,"nodeType":"ParameterList","parameters":[],"src":"5095:2:78"},"returnParameters":{"id":10340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10339,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10344,"src":"5130:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":10338,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2583,"src":"5130:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"}],"src":"5129:25:78"},"scope":10601,"src":"5061:141:78","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2470],"body":{"id":10352,"nodeType":"Block","src":"5298:59:78","statements":[{"expression":{"id":10350,"name":"_defaultRevenueSharingFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10084,"src":"5315:35:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10349,"id":10351,"nodeType":"Return","src":"5308:42:78"}]},"functionSelector":"c2f7070b","id":10353,"implemented":true,"kind":"function","modifiers":[],"name":"getDefaultRevenueSharingFeePercentage","nodeType":"FunctionDefinition","overrides":{"id":10346,"nodeType":"OverrideSpecifier","overrides":[],"src":"5271:8:78"},"parameters":{"id":10345,"nodeType":"ParameterList","parameters":[],"src":"5254:2:78"},"returnParameters":{"id":10349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10348,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10353,"src":"5289:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10347,"name":"uint256","nodeType":"ElementaryTypeName","src":"5289:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5288:9:78"},"scope":10601,"src":"5208:149:78","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2498],"body":{"id":10361,"nodeType":"Block","src":"5423:30:78","statements":[{"expression":{"id":10359,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10080,"src":"5440:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"functionReturnParameters":10358,"id":10360,"nodeType":"Return","src":"5433:13:78"}]},"functionSelector":"8d928af8","id":10362,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":10355,"nodeType":"OverrideSpecifier","overrides":[],"src":"5397:8:78"},"parameters":{"id":10354,"nodeType":"ParameterList","parameters":[],"src":"5380:2:78"},"returnParameters":{"id":10358,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10357,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10362,"src":"5415:6:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":10356,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"5415:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"5414:8:78"},"scope":10601,"src":"5363:90:78","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2486],"body":{"id":10370,"nodeType":"Block","src":"5523:33:78","statements":[{"expression":{"id":10368,"name":"_treasury","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10082,"src":"5540:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":10367,"id":10369,"nodeType":"Return","src":"5533:16:78"}]},"functionSelector":"3b19e84a","id":10371,"implemented":true,"kind":"function","modifiers":[],"name":"getTreasury","nodeType":"FunctionDefinition","overrides":{"id":10364,"nodeType":"OverrideSpecifier","overrides":[],"src":"5496:8:78"},"parameters":{"id":10363,"nodeType":"ParameterList","parameters":[],"src":"5479:2:78"},"returnParameters":{"id":10367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10366,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10371,"src":"5514:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10365,"name":"address","nodeType":"ElementaryTypeName","src":"5514:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5513:9:78"},"scope":10601,"src":"5459:97:78","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2508],"body":{"id":10393,"nodeType":"Block","src":"5732:158:78","statements":[{"assignments":[10382],"declarations":[{"constant":false,"id":10382,"mutability":"mutable","name":"settings","nodeType":"VariableDeclaration","scope":10393,"src":"5742:36:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"},"typeName":{"id":10381,"name":"RevenueShareSettings","nodeType":"UserDefinedTypeName","referencedDeclaration":10089,"src":"5742:20:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings"}},"visibility":"internal"}],"id":10386,"initialValue":{"baseExpression":{"id":10383,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"5781:13:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":10385,"indexExpression":{"id":10384,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10373,"src":"5795:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5781:21:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"nodeType":"VariableDeclarationStatement","src":"5742:60:78"},{"expression":{"components":[{"expression":{"id":10387,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"5821:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":10388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"revenueSharePercentageOverride","nodeType":"MemberAccess","referencedDeclaration":10086,"src":"5821:39:78","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},{"expression":{"id":10389,"name":"settings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10382,"src":"5862:8:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_memory_ptr","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings memory"}},"id":10390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":10088,"src":"5862:20:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":10391,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5820:63:78","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint96_$_t_address_$","typeString":"tuple(uint96,address)"}},"functionReturnParameters":10380,"id":10392,"nodeType":"Return","src":"5813:70:78"}]},"functionSelector":"0dbbe67f","id":10394,"implemented":true,"kind":"function","modifiers":[],"name":"getPoolSettings","nodeType":"FunctionDefinition","overrides":{"id":10375,"nodeType":"OverrideSpecifier","overrides":[],"src":"5641:8:78"},"parameters":{"id":10374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10373,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10394,"src":"5587:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10372,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5587:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5586:16:78"},"returnParameters":{"id":10380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10377,"mutability":"mutable","name":"revenueSharePercentageOverride","nodeType":"VariableDeclaration","scope":10394,"src":"5667:38:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10376,"name":"uint256","nodeType":"ElementaryTypeName","src":"5667:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10379,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":10394,"src":"5707:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10378,"name":"address","nodeType":"ElementaryTypeName","src":"5707:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5666:61:78"},"scope":10601,"src":"5562:328:78","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[4047],"body":{"id":10415,"nodeType":"Block","src":"5990:85:78","statements":[{"expression":{"arguments":[{"id":10407,"name":"actionId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10396,"src":"6035:8:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":10408,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10398,"src":"6045:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":10411,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6062:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_ProtocolFeeSplitter_$10601","typeString":"contract ProtocolFeeSplitter"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProtocolFeeSplitter_$10601","typeString":"contract ProtocolFeeSplitter"}],"id":10410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6054:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10409,"name":"address","nodeType":"ElementaryTypeName","src":"6054:7:78","typeDescriptions":{}}},"id":10412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6054:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":10404,"name":"_getAuthorizer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10428,"src":"6007:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view returns (contract IAuthorizer)"}},"id":10405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6007:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"id":10406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"canPerform","nodeType":"MemberAccess","referencedDeclaration":2918,"src":"6007:27:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_bytes32_$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address,address) view external returns (bool)"}},"id":10413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6007:61:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10403,"id":10414,"nodeType":"Return","src":"6000:68:78"}]},"id":10416,"implemented":true,"kind":"function","modifiers":[],"name":"_canPerform","nodeType":"FunctionDefinition","overrides":{"id":10400,"nodeType":"OverrideSpecifier","overrides":[],"src":"5966:8:78"},"parameters":{"id":10399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10396,"mutability":"mutable","name":"actionId","nodeType":"VariableDeclaration","scope":10416,"src":"5917:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10395,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5917:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":10398,"mutability":"mutable","name":"account","nodeType":"VariableDeclaration","scope":10416,"src":"5935:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10397,"name":"address","nodeType":"ElementaryTypeName","src":"5935:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5916:35:78"},"returnParameters":{"id":10403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10402,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10416,"src":"5984:4:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10401,"name":"bool","nodeType":"ElementaryTypeName","src":"5984:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5983:6:78"},"scope":10601,"src":"5896:179:78","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10427,"nodeType":"Block","src":"6143:90:78","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10421,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10078,"src":"6160:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"id":10422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":2527,"src":"6160:48:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":10423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6160:50:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":10424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":3146,"src":"6160:64:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":10425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6160:66:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"functionReturnParameters":10420,"id":10426,"nodeType":"Return","src":"6153:73:78"}]},"id":10428,"implemented":true,"kind":"function","modifiers":[],"name":"_getAuthorizer","nodeType":"FunctionDefinition","parameters":{"id":10417,"nodeType":"ParameterList","parameters":[],"src":"6104:2:78"},"returnParameters":{"id":10420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10419,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10428,"src":"6130:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":10418,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"6130:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"6129:13:78"},"scope":10601,"src":"6081:152:78","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":10484,"nodeType":"Block","src":"6339:300:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10437,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10432,"src":"6353:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6363:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6353:11:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10442,"nodeType":"IfStatement","src":"6349:48:78","trueBody":{"id":10441,"nodeType":"Block","src":"6366:31:78","statements":[{"functionReturnParameters":10436,"id":10440,"nodeType":"Return","src":"6380:7:78"}]}},{"assignments":[10446],"declarations":[{"constant":false,"id":10446,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":10484,"src":"6407:22:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":10444,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6407:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10445,"nodeType":"ArrayTypeName","src":"6407:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":10452,"initialValue":{"arguments":[{"hexValue":"31","id":10450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6445:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":10449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6432:12:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":10447,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6436:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10448,"nodeType":"ArrayTypeName","src":"6436:8:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":10451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6432:15:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6407:40:78"},{"expression":{"id":10457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10453,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10446,"src":"6457:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":10455,"indexExpression":{"hexValue":"30","id":10454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6464:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6457:9:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10456,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10430,"src":"6469:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"6457:15:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10458,"nodeType":"ExpressionStatement","src":"6457:15:78"},{"assignments":[10463],"declarations":[{"constant":false,"id":10463,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":10484,"src":"6483:24:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10461,"name":"uint256","nodeType":"ElementaryTypeName","src":"6483:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10462,"nodeType":"ArrayTypeName","src":"6483:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":10469,"initialValue":{"arguments":[{"hexValue":"31","id":10467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6524:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":10466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6510:13:78","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":10464,"name":"uint256","nodeType":"ElementaryTypeName","src":"6514:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10465,"nodeType":"ArrayTypeName","src":"6514:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":10468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6510:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6483:43:78"},{"expression":{"id":10474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":10470,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10463,"src":"6536:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":10472,"indexExpression":{"hexValue":"30","id":10471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6544:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6536:10:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":10473,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10432,"src":"6549:6:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6536:19:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10475,"nodeType":"ExpressionStatement","src":"6536:19:78"},{"expression":{"arguments":[{"id":10479,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10446,"src":"6612:6:78","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":10480,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10463,"src":"6620:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":10481,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10434,"src":"6629:2:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10476,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10078,"src":"6566:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"id":10478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":2570,"src":"6566:45:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":10482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6566:66:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10483,"nodeType":"ExpressionStatement","src":"6566:66:78"}]},"id":10485,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawBpt","nodeType":"FunctionDefinition","parameters":{"id":10435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10430,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":10485,"src":"6270:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10429,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6270:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10432,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10485,"src":"6290:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10431,"name":"uint256","nodeType":"ElementaryTypeName","src":"6290:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10434,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","scope":10485,"src":"6314:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10433,"name":"address","nodeType":"ElementaryTypeName","src":"6314:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6260:70:78"},"returnParameters":{"id":10436,"nodeType":"ParameterList","parameters":[],"src":"6339:0:78"},"scope":10601,"src":"6239:400:78","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":10548,"nodeType":"Block","src":"6734:767:78","statements":[{"assignments":[10497],"declarations":[{"constant":false,"id":10497,"mutability":"mutable","name":"protocolFeesWithdrawer","nodeType":"VariableDeclaration","scope":10548,"src":"6744:46:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"},"typeName":{"id":10496,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2583,"src":"6744:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"visibility":"internal"}],"id":10499,"initialValue":{"id":10498,"name":"_protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10078,"src":"6793:23:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"nodeType":"VariableDeclarationStatement","src":"6744:72:78"},{"assignments":[10501],"declarations":[{"constant":false,"id":10501,"mutability":"mutable","name":"feeCollectorBptBalance","nodeType":"VariableDeclaration","scope":10548,"src":"6826:30:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10500,"name":"uint256","nodeType":"ElementaryTypeName","src":"6826:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10511,"initialValue":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10506,"name":"protocolFeesWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10497,"src":"6881:22:78","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"id":10507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":2527,"src":"6881:47:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":10508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6881:49:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}],"id":10505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6873:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10504,"name":"address","nodeType":"ElementaryTypeName","src":"6873:7:78","typeDescriptions":{}}},"id":10509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6873:58:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10502,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10487,"src":"6859:3:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"6859:13:78","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":10510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6859:73:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6826:106:78"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10512,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10501,"src":"6946:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6972:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6946:27:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10520,"nodeType":"IfStatement","src":"6942:71:78","trueBody":{"id":10519,"nodeType":"Block","src":"6975:38:78","statements":[{"expression":{"components":[{"hexValue":"30","id":10515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6997:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":10516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7000:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":10517,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6996:6:78","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$","typeString":"tuple(int_const 0,int_const 0)"}},"functionReturnParameters":10495,"id":10518,"nodeType":"Return","src":"6989:13:78"}]}},{"assignments":[10522],"declarations":[{"constant":false,"id":10522,"mutability":"mutable","name":"beneficiary","nodeType":"VariableDeclaration","scope":10548,"src":"7023:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10521,"name":"address","nodeType":"ElementaryTypeName","src":"7023:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":10527,"initialValue":{"expression":{"baseExpression":{"id":10523,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"7045:13:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":10525,"indexExpression":{"id":10524,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"7059:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7045:21:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":10526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"beneficiary","nodeType":"MemberAccess","referencedDeclaration":10088,"src":"7045:33:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7023:55:78"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10528,"name":"beneficiary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10522,"src":"7093:11:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":10531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7116:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":10530,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7108:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10529,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:78","typeDescriptions":{}}},"id":10532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7108:10:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7093:25:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10546,"nodeType":"Block","src":"7268:227:78","statements":[{"expression":{"arguments":[{"id":10540,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10501,"src":"7419:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":10542,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10489,"src":"7476:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":10541,"name":"_getPoolBeneficiaryFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10600,"src":"7443:32:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_uint256_$","typeString":"function (bytes32) view returns (uint256)"}},"id":10543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7443:40:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10539,"name":"_computeAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10575,"src":"7403:15:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":10544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7403:81:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":10495,"id":10545,"nodeType":"Return","src":"7396:88:78"}]},"id":10547,"nodeType":"IfStatement","src":"7089:406:78","trueBody":{"id":10538,"nodeType":"Block","src":"7120:142:78","statements":[{"expression":{"components":[{"hexValue":"30","id":10534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7225:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":10535,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10501,"src":"7228:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":10536,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7224:27:78","typeDescriptions":{"typeIdentifier":"t_tuple$_t_rational_0_by_1_$_t_uint256_$","typeString":"tuple(int_const 0,uint256)"}},"functionReturnParameters":10495,"id":10537,"nodeType":"Return","src":"7217:34:78"}]}}]},"id":10549,"implemented":true,"kind":"function","modifiers":[],"name":"_getAmounts","nodeType":"FunctionDefinition","parameters":{"id":10490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10487,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":10549,"src":"6666:10:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10486,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6666:6:78","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":10489,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10549,"src":"6678:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6678:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6665:28:78"},"returnParameters":{"id":10495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10492,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10549,"src":"6716:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10491,"name":"uint256","nodeType":"ElementaryTypeName","src":"6716:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10494,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10549,"src":"6725:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10493,"name":"uint256","nodeType":"ElementaryTypeName","src":"6725:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6715:18:78"},"scope":10601,"src":"6645:856:78","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":10574,"nodeType":"Block","src":"7682:142:78","statements":[{"expression":{"id":10565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10560,"name":"ownerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10556,"src":"7692:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10563,"name":"feePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10553,"src":"7737:13:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10561,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"7706:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5024,"src":"7706:30:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":10564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7706:45:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7692:59:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10566,"nodeType":"ExpressionStatement","src":"7692:59:78"},{"expression":{"id":10572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10567,"name":"treasuryAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10558,"src":"7761:14:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10570,"name":"ownerAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10556,"src":"7805:11:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10568,"name":"feeCollectorBptBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10551,"src":"7778:22:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":4990,"src":"7778:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":10571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7778:39:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7761:56:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10573,"nodeType":"ExpressionStatement","src":"7761:56:78"}]},"id":10575,"implemented":true,"kind":"function","modifiers":[],"name":"_computeAmounts","nodeType":"FunctionDefinition","parameters":{"id":10554,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10551,"mutability":"mutable","name":"feeCollectorBptBalance","nodeType":"VariableDeclaration","scope":10575,"src":"7532:30:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10550,"name":"uint256","nodeType":"ElementaryTypeName","src":"7532:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10553,"mutability":"mutable","name":"feePercentage","nodeType":"VariableDeclaration","scope":10575,"src":"7564:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10552,"name":"uint256","nodeType":"ElementaryTypeName","src":"7564:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7531:55:78"},"returnParameters":{"id":10559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10556,"mutability":"mutable","name":"ownerAmount","nodeType":"VariableDeclaration","scope":10575,"src":"7633:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10555,"name":"uint256","nodeType":"ElementaryTypeName","src":"7633:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10558,"mutability":"mutable","name":"treasuryAmount","nodeType":"VariableDeclaration","scope":10575,"src":"7654:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10557,"name":"uint256","nodeType":"ElementaryTypeName","src":"7654:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7632:45:78"},"scope":10601,"src":"7507:317:78","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":10599,"nodeType":"Block","src":"7919:338:78","statements":[{"assignments":[10583],"declarations":[{"constant":false,"id":10583,"mutability":"mutable","name":"poolFeeOverride","nodeType":"VariableDeclaration","scope":10599,"src":"7929:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10582,"name":"uint256","nodeType":"ElementaryTypeName","src":"7929:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10588,"initialValue":{"expression":{"baseExpression":{"id":10584,"name":"_poolSettings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10093,"src":"7955:13:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_struct$_RevenueShareSettings_$10089_storage_$","typeString":"mapping(bytes32 => struct ProtocolFeeSplitter.RevenueShareSettings storage ref)"}},"id":10586,"indexExpression":{"id":10585,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10577,"src":"7969:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7955:21:78","typeDescriptions":{"typeIdentifier":"t_struct$_RevenueShareSettings_$10089_storage","typeString":"struct ProtocolFeeSplitter.RevenueShareSettings storage ref"}},"id":10587,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"revenueSharePercentageOverride","nodeType":"MemberAccess","referencedDeclaration":10086,"src":"7955:52:78","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"nodeType":"VariableDeclarationStatement","src":"7929:78:78"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10589,"name":"poolFeeOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"8021:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":10590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8040:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8021:20:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":10597,"nodeType":"Block","src":"8204:47:78","statements":[{"expression":{"id":10595,"name":"poolFeeOverride","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10583,"src":"8225:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10581,"id":10596,"nodeType":"Return","src":"8218:22:78"}]},"id":10598,"nodeType":"IfStatement","src":"8017:234:78","trueBody":{"id":10594,"nodeType":"Block","src":"8043:155:78","statements":[{"expression":{"id":10592,"name":"_defaultRevenueSharingFeePercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10084,"src":"8152:35:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10581,"id":10593,"nodeType":"Return","src":"8145:42:78"}]}}]},"id":10600,"implemented":true,"kind":"function","modifiers":[],"name":"_getPoolBeneficiaryFeePercentage","nodeType":"FunctionDefinition","parameters":{"id":10578,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10577,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":10600,"src":"7872:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":10576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7872:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7871:16:78"},"returnParameters":{"id":10581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10580,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10600,"src":"7910:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10579,"name":"uint256","nodeType":"ElementaryTypeName","src":"7910:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7909:9:78"},"scope":10601,"src":"7830:427:78","stateMutability":"view","virtual":false,"visibility":"private"}],"scope":10602,"src":"1508:6751:78"}],"src":"688:7572:78"},"id":78},"contracts/ProtocolFeesWithdrawer.sol":{"ast":{"absolutePath":"contracts/ProtocolFeesWithdrawer.sol","exportedSymbols":{"ProtocolFeesWithdrawer":[10849]},"id":10850,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10603,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:79"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol","id":10604,"nodeType":"ImportDirective","scope":10850,"sourceUnit":2584,"src":"713:93:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10605,"nodeType":"ImportDirective","scope":10850,"sourceUnit":3618,"src":"807:65:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol","id":10606,"nodeType":"ImportDirective","scope":10850,"sourceUnit":4891,"src":"874:88:79","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol","id":10607,"nodeType":"ImportDirective","scope":10850,"sourceUnit":8231,"src":"963:83:79","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10609,"name":"IProtocolFeesWithdrawer","nodeType":"UserDefinedTypeName","referencedDeclaration":2583,"src":"1402:23:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesWithdrawer_$2583","typeString":"contract IProtocolFeesWithdrawer"}},"id":10610,"nodeType":"InheritanceSpecifier","src":"1402:23:79"},{"baseName":{"id":10611,"name":"SingletonAuthentication","nodeType":"UserDefinedTypeName","referencedDeclaration":4890,"src":"1427:23:79","typeDescriptions":{"typeIdentifier":"t_contract$_SingletonAuthentication_$4890","typeString":"contract SingletonAuthentication"}},"id":10612,"nodeType":"InheritanceSpecifier","src":"1427:23:79"}],"contractDependencies":[1880,2583,4048,4890],"contractKind":"contract","documentation":{"id":10608,"nodeType":"StructuredDocumentation","src":"1048:318:79","text":" @author Balancer Labs\n @title Protocol Fees Withdrawer\n @notice Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked.\n This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol\n Fees Collector."},"fullyImplemented":true,"id":10849,"linearizedBaseContracts":[10849,4890,4048,1880,2583],"name":"ProtocolFeesWithdrawer","nodeType":"ContractDefinition","nodes":[{"id":10615,"libraryName":{"id":10613,"name":"EnumerableSet","nodeType":"UserDefinedTypeName","referencedDeclaration":8230,"src":"1463:13:79","typeDescriptions":{"typeIdentifier":"t_contract$_EnumerableSet_$8230","typeString":"library EnumerableSet"}},"nodeType":"UsingForDirective","src":"1457:49:79","typeName":{"id":10614,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"1481:24:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"constant":false,"id":10617,"mutability":"immutable","name":"_protocolFeesCollector","nodeType":"VariableDeclaration","scope":10849,"src":"1512:63:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":10616,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"1512:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"constant":false,"id":10619,"mutability":"mutable","name":"_denylistedTokens","nodeType":"VariableDeclaration","scope":10849,"src":"1582:50:79","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet"},"typeName":{"id":10618,"name":"EnumerableSet.AddressSet","nodeType":"UserDefinedTypeName","referencedDeclaration":7789,"src":"1582:24:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}},"visibility":"private"},{"body":{"id":10659,"nodeType":"Block","src":"1733:249:79","statements":[{"expression":{"id":10634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10630,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"1743:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10631,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10621,"src":"1768:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":10632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3604,"src":"1768:30:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":10633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1768:32:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"src":"1743:57:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":10635,"nodeType":"ExpressionStatement","src":"1743:57:79"},{"assignments":[10637],"declarations":[{"constant":false,"id":10637,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":10659,"src":"1811:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10636,"name":"uint256","nodeType":"ElementaryTypeName","src":"1811:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10640,"initialValue":{"expression":{"id":10638,"name":"initialDeniedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"1834:19:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":10639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"1834:26:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1811:49:79"},{"body":{"id":10657,"nodeType":"Block","src":"1913:63:79","statements":[{"expression":{"arguments":[{"baseExpression":{"id":10652,"name":"initialDeniedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10624,"src":"1942:19:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":10654,"indexExpression":{"id":10653,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10642,"src":"1962:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1942:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10651,"name":"_denylistToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"1927:14:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$returns$__$","typeString":"function (contract IERC20)"}},"id":10655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1927:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10656,"nodeType":"ExpressionStatement","src":"1927:38:79"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10645,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10642,"src":"1890:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10646,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10637,"src":"1894:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1890:16:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10658,"initializationExpression":{"assignments":[10642],"declarations":[{"constant":false,"id":10642,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10658,"src":"1875:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1875:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10644,"initialValue":{"hexValue":"30","id":10643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1887:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1875:13:79"},"loopExpression":{"expression":{"id":10649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"1908:3:79","subExpression":{"id":10648,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10642,"src":"1910:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10650,"nodeType":"ExpressionStatement","src":"1908:3:79"},"nodeType":"ForStatement","src":"1870:106:79"}]},"id":10660,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":10627,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10621,"src":"1726:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":10628,"modifierName":{"id":10626,"name":"SingletonAuthentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4890,"src":"1702:23:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SingletonAuthentication_$4890_$","typeString":"type(contract SingletonAuthentication)"}},"nodeType":"ModifierInvocation","src":"1702:30:79"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":10625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10621,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":10660,"src":"1651:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":10620,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1651:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":10624,"mutability":"mutable","name":"initialDeniedTokens","nodeType":"VariableDeclaration","scope":10660,"src":"1665:35:79","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":10622,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1665:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10623,"nodeType":"ArrayTypeName","src":"1665:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"1650:51:79"},"returnParameters":{"id":10629,"nodeType":"ParameterList","parameters":[],"src":"1733:0:79"},"scope":10849,"src":"1639:343:79","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2527],"body":{"id":10669,"nodeType":"Block","src":"2162:46:79","statements":[{"expression":{"id":10667,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"2179:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"functionReturnParameters":10666,"id":10668,"nodeType":"Return","src":"2172:29:79"}]},"documentation":{"id":10661,"nodeType":"StructuredDocumentation","src":"1988:77:79","text":" @notice Returns the address of the Protocol Fee Collector."},"functionSelector":"d2946c2b","id":10670,"implemented":true,"kind":"function","modifiers":[],"name":"getProtocolFeesCollector","nodeType":"FunctionDefinition","overrides":{"id":10663,"nodeType":"OverrideSpecifier","overrides":[],"src":"2120:8:79"},"parameters":{"id":10662,"nodeType":"ParameterList","parameters":[],"src":"2103:2:79"},"returnParameters":{"id":10666,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10665,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10670,"src":"2138:22:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":10664,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"2138:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"internal"}],"src":"2137:24:79"},"scope":10849,"src":"2070:138:79","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2535],"body":{"id":10688,"nodeType":"Block","src":"2408:67:79","statements":[{"expression":{"id":10686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2425:43:79","subExpression":{"arguments":[{"arguments":[{"id":10683,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10673,"src":"2461:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2453:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10681,"name":"address","nodeType":"ElementaryTypeName","src":"2453:7:79","typeDescriptions":{}}},"id":10684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10679,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"2426:17:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"contains","nodeType":"MemberAccess","referencedDeclaration":7933,"src":"2426:26:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)"}},"id":10685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2426:42:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":10678,"id":10687,"nodeType":"Return","src":"2418:50:79"}]},"documentation":{"id":10671,"nodeType":"StructuredDocumentation","src":"2214:110:79","text":" @notice Returns whether the provided token may be withdrawn from the Protocol Fee Collector"},"functionSelector":"cdf0e934","id":10689,"implemented":true,"kind":"function","modifiers":[],"name":"isWithdrawableToken","nodeType":"FunctionDefinition","overrides":{"id":10675,"nodeType":"OverrideSpecifier","overrides":[],"src":"2384:8:79"},"parameters":{"id":10674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10673,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10689,"src":"2358:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10672,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2358:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"2357:14:79"},"returnParameters":{"id":10678,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10677,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10689,"src":"2402:4:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10676,"name":"bool","nodeType":"ElementaryTypeName","src":"2402:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2401:6:79"},"scope":10849,"src":"2329:146:79","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2544],"body":{"id":10727,"nodeType":"Block","src":"2752:200:79","statements":[{"assignments":[10700],"declarations":[{"constant":false,"id":10700,"mutability":"mutable","name":"tokensLength","nodeType":"VariableDeclaration","scope":10727,"src":"2762:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10699,"name":"uint256","nodeType":"ElementaryTypeName","src":"2762:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10703,"initialValue":{"expression":{"id":10701,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"2785:6:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":10702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2785:13:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2762:36:79"},{"body":{"id":10723,"nodeType":"Block","src":"2851:74:79","statements":[{"condition":{"id":10719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2869:31:79","subExpression":{"arguments":[{"baseExpression":{"id":10715,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10693,"src":"2890:6:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},"id":10717,"indexExpression":{"id":10716,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10705,"src":"2897:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2890:9:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10714,"name":"isWithdrawableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10689,"src":"2870:19:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_contract$_IERC20_$2090_$returns$_t_bool_$","typeString":"function (contract IERC20) view returns (bool)"}},"id":10718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2870:30:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10722,"nodeType":"IfStatement","src":"2865:49:79","trueBody":{"expression":{"hexValue":"66616c7365","id":10720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2909:5:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":10698,"id":10721,"nodeType":"Return","src":"2902:12:79"}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":10710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10708,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10705,"src":"2828:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":10709,"name":"tokensLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10700,"src":"2832:12:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2828:16:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10724,"initializationExpression":{"assignments":[10705],"declarations":[{"constant":false,"id":10705,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":10724,"src":"2813:9:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10704,"name":"uint256","nodeType":"ElementaryTypeName","src":"2813:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10707,"initialValue":{"hexValue":"30","id":10706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2825:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2813:13:79"},"loopExpression":{"expression":{"id":10712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2846:3:79","subExpression":{"id":10711,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10705,"src":"2848:1:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10713,"nodeType":"ExpressionStatement","src":"2846:3:79"},"nodeType":"ForStatement","src":"2808:117:79"},{"expression":{"hexValue":"74727565","id":10725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2941:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":10698,"id":10726,"nodeType":"Return","src":"2934:11:79"}]},"documentation":{"id":10690,"nodeType":"StructuredDocumentation","src":"2481:174:79","text":" @notice Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\n @dev Returns false if any token is denylisted."},"functionSelector":"a21dfaee","id":10728,"implemented":true,"kind":"function","modifiers":[],"name":"isWithdrawableTokens","nodeType":"FunctionDefinition","overrides":{"id":10695,"nodeType":"OverrideSpecifier","overrides":[],"src":"2728:8:79"},"parameters":{"id":10694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10693,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":10728,"src":"2690:24:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":10691,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2690:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10692,"nodeType":"ArrayTypeName","src":"2690:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"2689:26:79"},"returnParameters":{"id":10698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10697,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10728,"src":"2746:4:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10696,"name":"bool","nodeType":"ElementaryTypeName","src":"2746:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2745:6:79"},"scope":10849,"src":"2660:292:79","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2552],"body":{"id":10744,"nodeType":"Block","src":"3123:59:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":10740,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10731,"src":"3168:5:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10738,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"3147:17:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"at","nodeType":"MemberAccess","referencedDeclaration":7972,"src":"3147:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":10741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3147:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":10737,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"3140:6:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":10742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3140:35:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"functionReturnParameters":10736,"id":10743,"nodeType":"Return","src":"3133:42:79"}]},"documentation":{"id":10729,"nodeType":"StructuredDocumentation","src":"2958:77:79","text":" @notice Returns the denylisted token at the given `index`."},"functionSelector":"fd3a0cdd","id":10745,"implemented":true,"kind":"function","modifiers":[],"name":"getDenylistedToken","nodeType":"FunctionDefinition","overrides":{"id":10733,"nodeType":"OverrideSpecifier","overrides":[],"src":"3097:8:79"},"parameters":{"id":10732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10731,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":10745,"src":"3068:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10730,"name":"uint256","nodeType":"ElementaryTypeName","src":"3068:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3067:15:79"},"returnParameters":{"id":10736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10745,"src":"3115:6:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10734,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3115:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"3114:8:79"},"scope":10849,"src":"3040:142:79","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2558],"body":{"id":10756,"nodeType":"Block","src":"3338:50:79","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10752,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"3355:17:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":7946,"src":"3355:24:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$7789_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":10754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3355:26:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":10751,"id":10755,"nodeType":"Return","src":"3348:33:79"}]},"documentation":{"id":10746,"nodeType":"StructuredDocumentation","src":"3188:67:79","text":" @notice Returns the number of denylisted tokens."},"functionSelector":"8dd26fc6","id":10757,"implemented":true,"kind":"function","modifiers":[],"name":"getDenylistedTokensLength","nodeType":"FunctionDefinition","overrides":{"id":10748,"nodeType":"OverrideSpecifier","overrides":[],"src":"3311:8:79"},"parameters":{"id":10747,"nodeType":"ParameterList","parameters":[],"src":"3294:2:79"},"returnParameters":{"id":10751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10750,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":10757,"src":"3329:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10749,"name":"uint256","nodeType":"ElementaryTypeName","src":"3329:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3328:9:79"},"scope":10849,"src":"3260:128:79","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2570],"body":{"id":10787,"nodeType":"Block","src":"3920:278:79","statements":[{"expression":{"arguments":[{"arguments":[{"id":10774,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10761,"src":"3959:6:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}],"id":10773,"name":"isWithdrawableTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10728,"src":"3938:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr_$returns$_t_bool_$","typeString":"function (contract IERC20[] calldata) view returns (bool)"}},"id":10775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3938:28:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656e","id":10776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3968:41:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_19b1c525db6270d24ffce14b0de2fdb6c258ca6e7e56d11a41e5d2c40ce420fb","typeString":"literal_string \"Attempting to withdraw denylisted token\""},"value":"Attempting to withdraw denylisted token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_19b1c525db6270d24ffce14b0de2fdb6c258ca6e7e56d11a41e5d2c40ce420fb","typeString":"literal_string \"Attempting to withdraw denylisted token\""}],"id":10772,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3930:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3930:80:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10778,"nodeType":"ExpressionStatement","src":"3930:80:79"},{"expression":{"arguments":[{"id":10782,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10761,"src":"4164:6:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"}},{"id":10783,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10764,"src":"4172:7:79","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":10784,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10766,"src":"4181:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10779,"name":"_protocolFeesCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10617,"src":"4119:22:79","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":10781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":3112,"src":"4119:44:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":10785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4119:72:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10786,"nodeType":"ExpressionStatement","src":"4119:72:79"}]},"documentation":{"id":10758,"nodeType":"StructuredDocumentation","src":"3394:356:79","text":" @notice Withdraws fees from the Protocol Fee Collector.\n @dev Reverts if attempting to withdraw a denylisted token.\n @param tokens - an array of token addresses to withdraw.\n @param amounts - an array of the amounts of each token to withdraw.\n @param recipient - the address to which to send the withdrawn tokens."},"functionSelector":"6daefab6","id":10788,"implemented":true,"kind":"function","modifiers":[{"id":10770,"modifierName":{"id":10769,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"3907:12:79","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3907:12:79"}],"name":"withdrawCollectedFees","nodeType":"FunctionDefinition","overrides":{"id":10768,"nodeType":"OverrideSpecifier","overrides":[],"src":"3898:8:79"},"parameters":{"id":10767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10761,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":10788,"src":"3795:24:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_calldata_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":10759,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3795:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10760,"nodeType":"ArrayTypeName","src":"3795:8:79","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":10764,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":10788,"src":"3829:26:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":10762,"name":"uint256","nodeType":"ElementaryTypeName","src":"3829:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10763,"nodeType":"ArrayTypeName","src":"3829:9:79","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":10766,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10788,"src":"3865:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10765,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3785:103:79"},"returnParameters":{"id":10771,"nodeType":"ParameterList","parameters":[],"src":"3920:0:79"},"scope":10849,"src":"3755:443:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2576],"body":{"id":10801,"nodeType":"Block","src":"4389:38:79","statements":[{"expression":{"arguments":[{"id":10798,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10791,"src":"4414:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10797,"name":"_denylistToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10848,"src":"4399:14:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$returns$__$","typeString":"function (contract IERC20)"}},"id":10799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4399:21:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10800,"nodeType":"ExpressionStatement","src":"4399:21:79"}]},"documentation":{"id":10789,"nodeType":"StructuredDocumentation","src":"4204:112:79","text":" @notice Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"194d810f","id":10802,"implemented":true,"kind":"function","modifiers":[{"id":10795,"modifierName":{"id":10794,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4376:12:79","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4376:12:79"}],"name":"denylistToken","nodeType":"FunctionDefinition","overrides":{"id":10793,"nodeType":"OverrideSpecifier","overrides":[],"src":"4367:8:79"},"parameters":{"id":10792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10791,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10802,"src":"4344:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10790,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4344:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4343:14:79"},"returnParameters":{"id":10796,"nodeType":"ParameterList","parameters":[],"src":"4389:0:79"},"scope":10849,"src":"4321:106:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2582],"body":{"id":10826,"nodeType":"Block","src":"4617:131:79","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":10816,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"4668:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4660:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10814,"name":"address","nodeType":"ElementaryTypeName","src":"4660:7:79","typeDescriptions":{}}},"id":10817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4660:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10812,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"4635:17:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"remove","nodeType":"MemberAccess","referencedDeclaration":7915,"src":"4635:24:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":10818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4635:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e206973206e6f742064656e796c6973746564","id":10819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4677:25:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_33e021e2a64a5b84721e35d2c04a6aea44077b5ba7c92f440dddcaeae1690de2","typeString":"literal_string \"Token is not denylisted\""},"value":"Token is not denylisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33e021e2a64a5b84721e35d2c04a6aea44077b5ba7c92f440dddcaeae1690de2","typeString":"literal_string \"Token is not denylisted\""}],"id":10811,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4627:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4627:76:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10821,"nodeType":"ExpressionStatement","src":"4627:76:79"},{"eventCall":{"arguments":[{"id":10823,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10805,"src":"4735:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10822,"name":"TokenAllowlisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"4718:16:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$2090_$returns$__$","typeString":"function (contract IERC20)"}},"id":10824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4718:23:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10825,"nodeType":"EmitStatement","src":"4713:28:79"}]},"documentation":{"id":10803,"nodeType":"StructuredDocumentation","src":"4433:110:79","text":" @notice Marks the provided token as eligible for withdrawal from the Protocol Fee Collector"},"functionSelector":"de0b27c9","id":10827,"implemented":true,"kind":"function","modifiers":[{"id":10809,"modifierName":{"id":10808,"name":"authenticate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3999,"src":"4604:12:79","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"4604:12:79"}],"name":"allowlistToken","nodeType":"FunctionDefinition","overrides":{"id":10807,"nodeType":"OverrideSpecifier","overrides":[],"src":"4595:8:79"},"parameters":{"id":10806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10805,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10827,"src":"4572:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10804,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4572:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4571:14:79"},"returnParameters":{"id":10810,"nodeType":"ParameterList","parameters":[],"src":"4617:0:79"},"scope":10849,"src":"4548:200:79","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":10847,"nodeType":"Block","src":"4828:128:79","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":10837,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10829,"src":"4876:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10836,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4868:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10835,"name":"address","nodeType":"ElementaryTypeName","src":"4868:7:79","typeDescriptions":{}}},"id":10838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4868:14:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":10833,"name":"_denylistedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10619,"src":"4846:17:79","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$7789_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":10834,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":7830,"src":"4846:21:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$7789_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_AddressSet_$7789_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":10839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4846:37:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"546f6b656e20616c72656164792064656e796c6973746564","id":10840,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4885:26:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_912f68a3924e05a4aac2ce11062174dbaf62232998a296a28b3e93bcea2176c5","typeString":"literal_string \"Token already denylisted\""},"value":"Token already denylisted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_912f68a3924e05a4aac2ce11062174dbaf62232998a296a28b3e93bcea2176c5","typeString":"literal_string \"Token already denylisted\""}],"id":10832,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4838:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4838:74:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10842,"nodeType":"ExpressionStatement","src":"4838:74:79"},{"eventCall":{"arguments":[{"id":10844,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10829,"src":"4943:5:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":10843,"name":"TokenDenylisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2521,"src":"4927:15:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_contract$_IERC20_$2090_$returns$__$","typeString":"function (contract IERC20)"}},"id":10845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4927:22:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10846,"nodeType":"EmitStatement","src":"4922:27:79"}]},"id":10848,"implemented":true,"kind":"function","modifiers":[],"name":"_denylistToken","nodeType":"FunctionDefinition","parameters":{"id":10830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10829,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":10848,"src":"4805:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10828,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4805:6:79","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"4804:14:79"},"returnParameters":{"id":10831,"nodeType":"ParameterList","parameters":[],"src":"4828:0:79"},"scope":10849,"src":"4781:175:79","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":10850,"src":"1367:3591:79"}],"src":"688:4271:79"},"id":79},"contracts/relayer/AaveWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/AaveWrapping.sol","exportedSymbols":{"AaveWrapping":[11025]},"id":11026,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":10851,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:80"},{"id":10852,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:80"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","id":10853,"nodeType":"ImportDirective","scope":11026,"sourceUnit":2831,"src":"747:85:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":10854,"nodeType":"ImportDirective","scope":11026,"sourceUnit":3618,"src":"833:65:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":10855,"nodeType":"ImportDirective","scope":11026,"sourceUnit":7030,"src":"900:77:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":10856,"nodeType":"ImportDirective","scope":11026,"sourceUnit":8496,"src":"978:79:80","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":10857,"nodeType":"ImportDirective","scope":11026,"sourceUnit":12115,"src":"1059:35:80","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":10859,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1343:19:80","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":10860,"nodeType":"InheritanceSpecifier","src":"1343:19:80"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":10858,"nodeType":"StructuredDocumentation","src":"1096:212:80","text":" @title AaveWrapping\n @notice Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":11025,"linearizedBaseContracts":[11025,12114,8793],"name":"AaveWrapping","nodeType":"ContractDefinition","nodes":[{"id":10863,"libraryName":{"id":10861,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1375:7:80","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1369:34:80","typeName":{"id":10862,"name":"address","nodeType":"ElementaryTypeName","src":"1387:15:80","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":10866,"libraryName":{"id":10864,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1414:9:80","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1408:27:80","typeName":{"id":10865,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1428:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"body":{"id":10955,"nodeType":"Block","src":"1668:1037:80","statements":[{"condition":{"arguments":[{"id":10882,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"1702:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10881,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"1682:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1682:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10891,"nodeType":"IfStatement","src":"1678:100:80","trueBody":{"id":10890,"nodeType":"Block","src":"1711:67:80","statements":[{"expression":{"id":10888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10884,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"1725:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10886,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"1760:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10885,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"1734:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1734:33:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1725:42:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10889,"nodeType":"ExpressionStatement","src":"1725:42:80"}]}},{"assignments":[10893],"declarations":[{"constant":false,"id":10893,"mutability":"mutable","name":"dynamicToken","nodeType":"VariableDeclaration","scope":10955,"src":"1960:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":10892,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1960:6:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":10902,"initialValue":{"condition":{"id":10894,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10876,"src":"1982:14:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10898,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10868,"src":"2021:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"id":10899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ATOKEN","nodeType":"MemberAccess","referencedDeclaration":2819,"src":"2021:18:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IERC20_$2090_$","typeString":"function () external returns (contract IERC20)"}},"id":10900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2021:20:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1982:59:80","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":10895,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10868,"src":"1999:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"id":10896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ASSET","nodeType":"MemberAccess","referencedDeclaration":2824,"src":"1999:17:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IERC20_$2090_$","typeString":"function () external returns (contract IERC20)"}},"id":10897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:19:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1960:81:80"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10903,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"2231:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10906,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2249:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$11025","typeString":"contract AaveWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveWrapping_$11025","typeString":"contract AaveWrapping"}],"id":10905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2241:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10904,"name":"address","nodeType":"ElementaryTypeName","src":"2241:7:80","typeDescriptions":{}}},"id":10907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2241:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2231:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10924,"nodeType":"IfStatement","src":"2227:157:80","trueBody":{"id":10923,"nodeType":"Block","src":"2256:128:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10910,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"2278:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10911,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2288:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2288:10:80","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2278:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2300:18:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10909,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2270:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2270:49:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10916,"nodeType":"ExpressionStatement","src":"2270:49:80"},{"expression":{"arguments":[{"id":10918,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10870,"src":"2344:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10919,"name":"dynamicToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10893,"src":"2352:12:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":10920,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"2366:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10917,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"2333:10:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":10921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2333:40:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10922,"nodeType":"ExpressionStatement","src":"2333:40:80"}]}},{"expression":{"arguments":[{"arguments":[{"id":10930,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10868,"src":"2427:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}],"id":10929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2419:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10928,"name":"address","nodeType":"ElementaryTypeName","src":"2419:7:80","typeDescriptions":{}}},"id":10931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2419:20:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10932,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"2441:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":10925,"name":"dynamicToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10893,"src":"2394:12:80","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":10927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"2394:24:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":10933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2394:54:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10934,"nodeType":"ExpressionStatement","src":"2394:54:80"},{"assignments":[10936],"declarations":[{"constant":false,"id":10936,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":10955,"src":"2497:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10935,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":10944,"initialValue":{"arguments":[{"id":10939,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10872,"src":"2534:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10940,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10874,"src":"2545:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":10941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2553:1:80","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":10942,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10876,"src":"2556:14:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":10937,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10868,"src":"2514:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"id":10938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":2610,"src":"2514:19:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint16,bool) external returns (uint256)"}},"id":10943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2514:57:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2497:74:80"},{"condition":{"arguments":[{"id":10946,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10878,"src":"2606:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10945,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2586:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2586:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10954,"nodeType":"IfStatement","src":"2582:117:80","trueBody":{"id":10953,"nodeType":"Block","src":"2624:75:80","statements":[{"expression":{"arguments":[{"id":10949,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10878,"src":"2664:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":10950,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10936,"src":"2681:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10948,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"2638:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":10951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2638:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10952,"nodeType":"ExpressionStatement","src":"2638:50:80"}]}}]},"functionSelector":"433b0865","id":10956,"implemented":true,"kind":"function","modifiers":[],"name":"wrapAaveDynamicToken","nodeType":"FunctionDefinition","parameters":{"id":10879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10868,"mutability":"mutable","name":"staticToken","nodeType":"VariableDeclaration","scope":10956,"src":"1480:27:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"},"typeName":{"id":10867,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2830,"src":"1480:15:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"visibility":"internal"},{"constant":false,"id":10870,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":10956,"src":"1517:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10869,"name":"address","nodeType":"ElementaryTypeName","src":"1517:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10872,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":10956,"src":"1541:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10871,"name":"address","nodeType":"ElementaryTypeName","src":"1541:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10874,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":10956,"src":"1568:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10873,"name":"uint256","nodeType":"ElementaryTypeName","src":"1568:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10876,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":10956,"src":"1592:19:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10875,"name":"bool","nodeType":"ElementaryTypeName","src":"1592:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10878,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":10956,"src":"1621:23:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10877,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1470:180:80"},"returnParameters":{"id":10880,"nodeType":"ParameterList","parameters":[],"src":"1668:0:80"},"scope":11025,"src":"1441:1264:80","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11023,"nodeType":"Block","src":"2937:778:80","statements":[{"condition":{"arguments":[{"id":10972,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10964,"src":"2971:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10971,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2951:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":10973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2951:27:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":10981,"nodeType":"IfStatement","src":"2947:100:80","trueBody":{"id":10980,"nodeType":"Block","src":"2980:67:80","statements":[{"expression":{"id":10978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":10974,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10964,"src":"2994:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":10976,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10964,"src":"3029:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10975,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"3003:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":10977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3003:33:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2994:42:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":10979,"nodeType":"ExpressionStatement","src":"2994:42:80"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10982,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10960,"src":"3238:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":10985,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3256:4:80","typeDescriptions":{"typeIdentifier":"t_contract$_AaveWrapping_$11025","typeString":"contract AaveWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AaveWrapping_$11025","typeString":"contract AaveWrapping"}],"id":10984,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3248:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":10983,"name":"address","nodeType":"ElementaryTypeName","src":"3248:7:80","typeDescriptions":{}}},"id":10986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3248:13:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3238:23:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11003,"nodeType":"IfStatement","src":"3234:156:80","trueBody":{"id":11002,"nodeType":"Block","src":"3263:127:80","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":10992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":10989,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10960,"src":"3285:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":10990,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3295:3:80","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":10991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3295:10:80","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3285:20:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":10993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3307:18:80","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":10988,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3277:7:80","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":10994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3277:49:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":10995,"nodeType":"ExpressionStatement","src":"3277:49:80"},{"expression":{"arguments":[{"id":10997,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10960,"src":"3351:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":10998,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10958,"src":"3359:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},{"id":10999,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10964,"src":"3372:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":10996,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3340:10:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3340:39:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11001,"nodeType":"ExpressionStatement","src":"3340:39:80"}]}},{"assignments":[null,11005],"declarations":[null,{"constant":false,"id":11005,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":11023,"src":"3510:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11004,"name":"uint256","nodeType":"ElementaryTypeName","src":"3510:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11012,"initialValue":{"arguments":[{"id":11008,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10962,"src":"3549:9:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11009,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10964,"src":"3560:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11010,"name":"toUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10966,"src":"3568:12:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11006,"name":"staticToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10958,"src":"3528:11:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"id":11007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":2624,"src":"3528:20:80","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,bool) external returns (uint256,uint256)"}},"id":11011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3528:53:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3507:74:80"},{"condition":{"arguments":[{"id":11014,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"3616:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11013,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3596:19:80","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3596:36:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11022,"nodeType":"IfStatement","src":"3592:117:80","trueBody":{"id":11021,"nodeType":"Block","src":"3634:75:80","statements":[{"expression":{"arguments":[{"id":11017,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":10968,"src":"3674:15:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11018,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11005,"src":"3691:6:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11016,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3648:25:80","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3648:50:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11020,"nodeType":"ExpressionStatement","src":"3648:50:80"}]}}]},"functionSelector":"7ab6e03c","id":11024,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapAaveStaticToken","nodeType":"FunctionDefinition","parameters":{"id":10969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":10958,"mutability":"mutable","name":"staticToken","nodeType":"VariableDeclaration","scope":11024,"src":"2751:27:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"},"typeName":{"id":10957,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2830,"src":"2751:15:80","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"visibility":"internal"},{"constant":false,"id":10960,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11024,"src":"2788:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10959,"name":"address","nodeType":"ElementaryTypeName","src":"2788:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10962,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11024,"src":"2812:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":10961,"name":"address","nodeType":"ElementaryTypeName","src":"2812:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":10964,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11024,"src":"2839:14:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10963,"name":"uint256","nodeType":"ElementaryTypeName","src":"2839:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":10966,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":11024,"src":"2863:17:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":10965,"name":"bool","nodeType":"ElementaryTypeName","src":"2863:4:80","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":10968,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11024,"src":"2890:23:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":10967,"name":"uint256","nodeType":"ElementaryTypeName","src":"2890:7:80","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2741:178:80"},"returnParameters":{"id":10970,"nodeType":"ParameterList","parameters":[],"src":"2937:0:80"},"scope":11025,"src":"2711:1004:80","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11026,"src":"1309:2408:80"}],"src":"688:3030:80"},"id":80},"contracts/relayer/BalancerRelayer.sol":{"ast":{"absolutePath":"contracts/relayer/BalancerRelayer.sol","exportedSymbols":{"BalancerRelayer":[11172]},"id":11173,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11027,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:81"},{"id":11028,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:81"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","id":11029,"nodeType":"ImportDirective","scope":11173,"sourceUnit":2296,"src":"747:86:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol","id":11030,"nodeType":"ImportDirective","scope":11173,"sourceUnit":8287,"src":"835:85:81","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":11031,"nodeType":"ImportDirective","scope":11173,"sourceUnit":7030,"src":"921:77:81","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11033,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":2295,"src":"2422:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"}},"id":11034,"nodeType":"InheritanceSpecifier","src":"2422:16:81"},{"baseName":{"id":11035,"name":"ReentrancyGuard","nodeType":"UserDefinedTypeName","referencedDeclaration":8286,"src":"2440:15:81","typeDescriptions":{"typeIdentifier":"t_contract$_ReentrancyGuard_$8286","typeString":"contract ReentrancyGuard"}},"id":11036,"nodeType":"InheritanceSpecifier","src":"2440:15:81"}],"contractDependencies":[2295,8286],"contractKind":"contract","documentation":{"id":11032,"nodeType":"StructuredDocumentation","src":"1000:1393:81","text":" @title Balancer Relayer\n @notice Allows safe multicall execution of a relayer's functions\n @dev\n Relayers are composed of two contracts:\n - This contract, which acts as a single point of entry into the system through a multicall function.\n - A library contract, which defines the allowed behaviour of the relayer.\n The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions.\n We can then run combinations of the library contract's functions in the context of the relayer entrypoint,\n without having to expose all these functions on the entrypoint contract itself. The multicall function is\n then a single point of entry for all actions, so we can easily prevent reentrancy.\n This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter\n the relayer through another function (which must allow reentrancy for multicall logic), and that would\n potentially allow them to manipulate global state, resulting in loss of funds in some cases:\n e.g., sweeping any leftover ETH that should have been refunded to the user.\n NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the\n Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly\n into the library contract."},"fullyImplemented":true,"id":11172,"linearizedBaseContracts":[11172,8286,2295],"name":"BalancerRelayer","nodeType":"ContractDefinition","nodes":[{"id":11039,"libraryName":{"id":11037,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"2468:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2462:34:81","typeName":{"id":11038,"name":"address","nodeType":"ElementaryTypeName","src":"2480:15:81","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":11042,"libraryName":{"id":11040,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"2507:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"2501:26:81","typeName":{"id":11041,"name":"address","nodeType":"ElementaryTypeName","src":"2519:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"constant":false,"id":11044,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":11172,"src":"2533:31:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":11043,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"2533:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":11046,"mutability":"immutable","name":"_library","nodeType":"VariableDeclaration","scope":11172,"src":"2570:34:81","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11045,"name":"address","nodeType":"ElementaryTypeName","src":"2570:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"body":{"id":11062,"nodeType":"Block","src":"2899:66:81","statements":[{"expression":{"id":11056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11054,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11044,"src":"2909:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11055,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11049,"src":"2918:5:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"2909:14:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":11057,"nodeType":"ExpressionStatement","src":"2909:14:81"},{"expression":{"id":11060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11058,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11046,"src":"2933:8:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11059,"name":"libraryAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11051,"src":"2944:14:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2933:25:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11061,"nodeType":"ExpressionStatement","src":"2933:25:81"}]},"documentation":{"id":11047,"nodeType":"StructuredDocumentation","src":"2611:233:81","text":" @dev This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract\n derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library."},"id":11063,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11049,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":11063,"src":"2861:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":11048,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"2861:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":11051,"mutability":"mutable","name":"libraryAddress","nodeType":"VariableDeclaration","scope":11063,"src":"2875:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11050,"name":"address","nodeType":"ElementaryTypeName","src":"2875:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2860:38:81"},"returnParameters":{"id":11053,"nodeType":"ParameterList","parameters":[],"src":"2899:0:81"},"scope":11172,"src":"2849:116:81","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":11078,"nodeType":"Block","src":"2998:520:81","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":11067,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3460:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3460:10:81","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11071,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11044,"src":"3482:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":11070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3474:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11069,"name":"address","nodeType":"ElementaryTypeName","src":"3474:7:81","typeDescriptions":{}}},"id":11072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3474:15:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3460:29:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":11074,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3491:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":11075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ETH_TRANSFER","nodeType":"MemberAccess","referencedDeclaration":1817,"src":"3491:19:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11066,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"3451:8:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":11076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3451:60:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11077,"nodeType":"ExpressionStatement","src":"3451:60:81"}]},"id":11079,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11064,"nodeType":"ParameterList","parameters":[],"src":"2978:2:81"},"returnParameters":{"id":11065,"nodeType":"ParameterList","parameters":[],"src":"2998:0:81"},"scope":11172,"src":"2971:547:81","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2285],"body":{"id":11087,"nodeType":"Block","src":"3584:30:81","statements":[{"expression":{"id":11085,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11044,"src":"3601:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"functionReturnParameters":11084,"id":11086,"nodeType":"Return","src":"3594:13:81"}]},"functionSelector":"8d928af8","id":11088,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":11081,"nodeType":"OverrideSpecifier","overrides":[],"src":"3558:8:81"},"parameters":{"id":11080,"nodeType":"ParameterList","parameters":[],"src":"3541:2:81"},"returnParameters":{"id":11084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11083,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11088,"src":"3576:6:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":11082,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"3576:6:81","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3575:8:81"},"scope":11172,"src":"3524:90:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2280],"body":{"id":11096,"nodeType":"Block","src":"3683:32:81","statements":[{"expression":{"id":11094,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11046,"src":"3700:8:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":11093,"id":11095,"nodeType":"Return","src":"3693:15:81"}]},"functionSelector":"7678922e","id":11097,"implemented":true,"kind":"function","modifiers":[],"name":"getLibrary","nodeType":"FunctionDefinition","overrides":{"id":11090,"nodeType":"OverrideSpecifier","overrides":[],"src":"3656:8:81"},"parameters":{"id":11089,"nodeType":"ParameterList","parameters":[],"src":"3639:2:81"},"returnParameters":{"id":11093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11092,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11097,"src":"3674:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11091,"name":"address","nodeType":"ElementaryTypeName","src":"3674:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3673:9:81"},"scope":11172,"src":"3620:95:81","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2294],"body":{"id":11145,"nodeType":"Block","src":"3835:201:81","statements":[{"expression":{"id":11116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11109,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11107,"src":"3845:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":11113,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11100,"src":"3867:4:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":11114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3867:11:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11112,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3855:11:81","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory[] memory)"},"typeName":{"baseType":{"id":11110,"name":"bytes","nodeType":"ElementaryTypeName","src":"3859:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":11111,"nodeType":"ArrayTypeName","src":"3859:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}}},"id":11115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3855:24:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"src":"3845:34:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":11117,"nodeType":"ExpressionStatement","src":"3845:34:81"},{"body":{"id":11140,"nodeType":"Block","src":"3931:76:81","statements":[{"expression":{"id":11138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11129,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11107,"src":"3945:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes memory[] memory"}},"id":11131,"indexExpression":{"id":11130,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3953:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3945:10:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"baseExpression":{"id":11134,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11100,"src":"3988:4:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":11136,"indexExpression":{"id":11135,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3993:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3988:7:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":11132,"name":"_library","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11046,"src":"3958:8:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":6998,"src":"3958:29:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":11137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3958:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"3945:51:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11139,"nodeType":"ExpressionStatement","src":"3945:51:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11122,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3909:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11123,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11100,"src":"3913:4:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":11124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3913:11:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3909:15:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11141,"initializationExpression":{"assignments":[11119],"declarations":[{"constant":false,"id":11119,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11141,"src":"3894:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11118,"name":"uint256","nodeType":"ElementaryTypeName","src":"3894:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11121,"initialValue":{"hexValue":"30","id":11120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3906:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3894:13:81"},"loopExpression":{"expression":{"id":11127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3926:3:81","subExpression":{"id":11126,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11119,"src":"3926:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11128,"nodeType":"ExpressionStatement","src":"3926:3:81"},"nodeType":"ForStatement","src":"3889:118:81"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11142,"name":"_refundETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11171,"src":"4017:10:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":11143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4017:12:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11144,"nodeType":"ExpressionStatement","src":"4017:12:81"}]},"functionSelector":"ac9650d8","id":11146,"implemented":true,"kind":"function","modifiers":[{"id":11104,"modifierName":{"id":11103,"name":"nonReentrant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8261,"src":"3789:12:81","typeDescriptions":{"typeIdentifier":"t_modifier$__$","typeString":"modifier ()"}},"nodeType":"ModifierInvocation","src":"3789:12:81"}],"name":"multicall","nodeType":"FunctionDefinition","overrides":{"id":11102,"nodeType":"OverrideSpecifier","overrides":[],"src":"3780:8:81"},"parameters":{"id":11101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11100,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11146,"src":"3740:21:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":11098,"name":"bytes","nodeType":"ElementaryTypeName","src":"3740:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":11099,"nodeType":"ArrayTypeName","src":"3740:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3739:23:81"},"returnParameters":{"id":11108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11107,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":11146,"src":"3811:22:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_memory_ptr_$dyn_memory_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":11105,"name":"bytes","nodeType":"ElementaryTypeName","src":"3811:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":11106,"nodeType":"ArrayTypeName","src":"3811:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"3810:24:81"},"scope":11172,"src":"3721:315:81","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11170,"nodeType":"Block","src":"4072:151:81","statements":[{"assignments":[11150],"declarations":[{"constant":false,"id":11150,"mutability":"mutable","name":"remainingEth","nodeType":"VariableDeclaration","scope":11170,"src":"4082:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11149,"name":"uint256","nodeType":"ElementaryTypeName","src":"4082:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11156,"initialValue":{"expression":{"arguments":[{"id":11153,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4113:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$11172","typeString":"contract BalancerRelayer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BalancerRelayer_$11172","typeString":"contract BalancerRelayer"}],"id":11152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4105:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11151,"name":"address","nodeType":"ElementaryTypeName","src":"4105:7:81","typeDescriptions":{}}},"id":11154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4105:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"4105:21:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4082:44:81"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11157,"name":"remainingEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"4140:12:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":11158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4155:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4140:16:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11169,"nodeType":"IfStatement","src":"4136:81:81","trueBody":{"id":11168,"nodeType":"Block","src":"4158:59:81","statements":[{"expression":{"arguments":[{"id":11165,"name":"remainingEth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11150,"src":"4193:12:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":11160,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4172:3:81","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4172:10:81","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":11164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":6919,"src":"4172:20:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":11166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:34:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11167,"nodeType":"ExpressionStatement","src":"4172:34:81"}]}}]},"id":11171,"implemented":true,"kind":"function","modifiers":[],"name":"_refundETH","nodeType":"FunctionDefinition","parameters":{"id":11147,"nodeType":"ParameterList","parameters":[],"src":"4061:2:81"},"returnParameters":{"id":11148,"nodeType":"ParameterList","parameters":[],"src":"4072:0:81"},"scope":11172,"src":"4042:181:81","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":11173,"src":"2394:1831:81"}],"src":"688:3538:81"},"id":81},"contracts/relayer/BaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","exportedSymbols":{"BaseRelayerLibrary":[11602]},"id":11603,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11174,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:82"},{"id":11175,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:82"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol","id":11176,"nodeType":"ImportDirective","scope":11603,"sourceUnit":2296,"src":"747:86:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11177,"nodeType":"ImportDirective","scope":11603,"sourceUnit":3618,"src":"834:65:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":11178,"nodeType":"ImportDirective","scope":11603,"sourceUnit":8496,"src":"900:79:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":11179,"nodeType":"ImportDirective","scope":11603,"sourceUnit":12115,"src":"981:35:82","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/BalancerRelayer.sol","file":"./BalancerRelayer.sol","id":11180,"nodeType":"ImportDirective","scope":11603,"sourceUnit":11173,"src":"1017:31:82","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":11182,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1896:19:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":11183,"nodeType":"InheritanceSpecifier","src":"1896:19:82"}],"contractDependencies":[8793,11172,12114],"contractKind":"contract","documentation":{"id":11181,"nodeType":"StructuredDocumentation","src":"1050:814:82","text":" @title Base Relayer Library\n @notice Core functionality of a relayer. Allow users to use a signature to approve this contract\n to take further actions on their behalf.\n @dev\n Relayers are composed of two contracts:\n - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function\n - A library contract such as this one, which defines the allowed behaviour of the relayer\n NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault\n will reject calls from outside the entrypoint context.\n This contract should neither be allowlisted as a relayer, nor called directly by the user.\n No guarantees can be made about fund safety when calling this contract in an improper manner."},"fullyImplemented":true,"id":11602,"linearizedBaseContracts":[11602,12114,8793],"name":"BaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"id":11186,"libraryName":{"id":11184,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1928:7:82","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1922:26:82","typeName":{"id":11185,"name":"address","nodeType":"ElementaryTypeName","src":"1940:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":11189,"libraryName":{"id":11187,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1959:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1953:27:82","typeName":{"id":11188,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1973:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"constant":false,"id":11191,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":11602,"src":"1986:31:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":11190,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1986:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":11193,"mutability":"immutable","name":"_entrypoint","nodeType":"VariableDeclaration","scope":11602,"src":"2023:46:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"},"typeName":{"id":11192,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":2295,"src":"2023:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"}},"visibility":"private"},{"body":{"id":11218,"nodeType":"Block","src":"2136:96:82","statements":[{"expression":{"id":11205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11203,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"2146:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11204,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11195,"src":"2155:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"2146:14:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":11206,"nodeType":"ExpressionStatement","src":"2146:14:82"},{"expression":{"id":11216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11207,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11193,"src":"2170:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11210,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11195,"src":"2204:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},{"arguments":[{"id":11213,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2219:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}],"id":11212,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2211:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11211,"name":"address","nodeType":"ElementaryTypeName","src":"2211:7:82","typeDescriptions":{}}},"id":11214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2211:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},{"typeIdentifier":"t_address","typeString":"address"}],"id":11209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"2184:19:82","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_contract$_IVault_$3617_$_t_address_$returns$_t_contract$_BalancerRelayer_$11172_$","typeString":"function (contract IVault,address) returns (contract BalancerRelayer)"},"typeName":{"id":11208,"name":"BalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":11172,"src":"2188:15:82","typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$11172","typeString":"contract BalancerRelayer"}}},"id":11215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2184:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_BalancerRelayer_$11172","typeString":"contract BalancerRelayer"}},"src":"2170:55:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"}},"id":11217,"nodeType":"ExpressionStatement","src":"2170:55:82"}]},"id":11219,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11198,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11195,"src":"2122:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":11199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"WETH","nodeType":"MemberAccess","referencedDeclaration":3616,"src":"2122:10:82","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IWETH_$2012_$","typeString":"function () view external returns (contract IWETH)"}},"id":11200,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2122:12:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}}],"id":11201,"modifierName":{"id":11197,"name":"IBaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12114,"src":"2102:19:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IBaseRelayerLibrary_$12114_$","typeString":"type(contract IBaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"2102:33:82"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11195,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":11219,"src":"2088:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":11194,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"2088:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2087:14:82"},"returnParameters":{"id":11202,"nodeType":"ParameterList","parameters":[],"src":"2136:0:82"},"scope":11602,"src":"2076:156:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[12058],"body":{"id":11227,"nodeType":"Block","src":"2296:30:82","statements":[{"expression":{"id":11225,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"2313:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"functionReturnParameters":11224,"id":11226,"nodeType":"Return","src":"2306:13:82"}]},"functionSelector":"8d928af8","id":11228,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","overrides":{"id":11221,"nodeType":"OverrideSpecifier","overrides":[],"src":"2270:8:82"},"parameters":{"id":11220,"nodeType":"ParameterList","parameters":[],"src":"2255:2:82"},"returnParameters":{"id":11224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11223,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11228,"src":"2288:6:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":11222,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"2288:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"2287:8:82"},"scope":11602,"src":"2238:88:82","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11235,"nodeType":"Block","src":"2396:35:82","statements":[{"expression":{"id":11233,"name":"_entrypoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11193,"src":"2413:11:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"}},"functionReturnParameters":11232,"id":11234,"nodeType":"Return","src":"2406:18:82"}]},"functionSelector":"7fd0e5d5","id":11236,"implemented":true,"kind":"function","modifiers":[],"name":"getEntrypoint","nodeType":"FunctionDefinition","parameters":{"id":11229,"nodeType":"ParameterList","parameters":[],"src":"2354:2:82"},"returnParameters":{"id":11232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11231,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11236,"src":"2378:16:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"},"typeName":{"id":11230,"name":"IBalancerRelayer","nodeType":"UserDefinedTypeName","referencedDeclaration":2295,"src":"2378:16:82","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerRelayer_$2295","typeString":"contract IBalancerRelayer"}},"visibility":"internal"}],"src":"2377:18:82"},"scope":11602,"src":"2332:99:82","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":11284,"nodeType":"Block","src":"2682:329:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":11255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11247,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11239,"src":"2700:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":11250,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2719:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}],"id":11249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2711:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11248,"name":"address","nodeType":"ElementaryTypeName","src":"2711:7:82","typeDescriptions":{}}},"id":11251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2711:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2700:24:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":11254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"2728:9:82","subExpression":{"id":11253,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"2729:8:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2700:37:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"52656c617965722063616e206f6e6c7920617070726f766520697473656c66","id":11256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2739:33:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_6a269b127bbbb8d8feb92de028769dfc0cdb5d672ea3074589e3c1804666d377","typeString":"literal_string \"Relayer can only approve itself\""},"value":"Relayer can only approve itself"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6a269b127bbbb8d8feb92de028769dfc0cdb5d672ea3074589e3c1804666d377","typeString":"literal_string \"Relayer can only approve itself\""}],"id":11246,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2692:7:82","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2692:81:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11258,"nodeType":"ExpressionStatement","src":"2692:81:82"},{"assignments":[11260],"declarations":[{"constant":false,"id":11260,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","scope":11284,"src":"2783:17:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":11259,"name":"bytes","nodeType":"ElementaryTypeName","src":"2783:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":11275,"initialValue":{"arguments":[{"arguments":[{"expression":{"expression":{"id":11265,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"2856:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":11266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setRelayerApproval","nodeType":"MemberAccess","referencedDeclaration":3208,"src":"2856:25:82","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool) external"}},"id":11267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"2856:34:82","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"expression":{"id":11268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2892:3:82","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2892:10:82","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":11270,"name":"relayer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11239,"src":"2904:7:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11271,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11241,"src":"2913:8:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":11263,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2833:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"2833:22:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":11272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2833:89:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":11273,"name":"authorisation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11243,"src":"2936:13:82","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":11261,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2803:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"2803:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2803:156:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2783:176:82"},{"expression":{"arguments":[{"id":11281,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11260,"src":"2999:4:82","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":11278,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11191,"src":"2978:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":11277,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2970:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11276,"name":"address","nodeType":"ElementaryTypeName","src":"2970:7:82","typeDescriptions":{}}},"id":11279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2970:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"functionCall","nodeType":"MemberAccess","referencedDeclaration":6944,"src":"2970:28:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":11282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2970:34:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":11283,"nodeType":"ExpressionStatement","src":"2970:34:82"}]},"documentation":{"id":11237,"nodeType":"StructuredDocumentation","src":"2437:103:82","text":" @notice Sets whether a particular relayer is authorised to act on behalf of the user"},"functionSelector":"80db15bd","id":11285,"implemented":true,"kind":"function","modifiers":[],"name":"setRelayerApproval","nodeType":"FunctionDefinition","parameters":{"id":11244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11239,"mutability":"mutable","name":"relayer","nodeType":"VariableDeclaration","scope":11285,"src":"2582:15:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11238,"name":"address","nodeType":"ElementaryTypeName","src":"2582:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11241,"mutability":"mutable","name":"approved","nodeType":"VariableDeclaration","scope":11285,"src":"2607:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11240,"name":"bool","nodeType":"ElementaryTypeName","src":"2607:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11243,"mutability":"mutable","name":"authorisation","nodeType":"VariableDeclaration","scope":11285,"src":"2630:28:82","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":11242,"name":"bytes","nodeType":"ElementaryTypeName","src":"2630:5:82","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2572:92:82"},"returnParameters":{"id":11245,"nodeType":"ParameterList","parameters":[],"src":"2682:0:82"},"scope":11602,"src":"2545:466:82","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[12065],"body":{"id":11316,"nodeType":"Block","src":"3257:209:82","statements":[{"condition":{"arguments":[{"id":11295,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"3291:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11294,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[11479],"referencedDeclaration":11479,"src":"3271:19:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3271:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11304,"nodeType":"IfStatement","src":"3267:100:82","trueBody":{"id":11303,"nodeType":"Block","src":"3300:67:82","statements":[{"expression":{"id":11301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11297,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"3314:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11299,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"3349:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11298,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[11538],"referencedDeclaration":11538,"src":"3323:25:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3323:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3314:42:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11302,"nodeType":"ExpressionStatement","src":"3314:42:82"}]}},{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":11310,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[11228],"referencedDeclaration":11228,"src":"3439:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":11311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3439:10:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":11309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3431:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11308,"name":"address","nodeType":"ElementaryTypeName","src":"3431:7:82","typeDescriptions":{}}},"id":11312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3431:19:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11313,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11290,"src":"3452:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11305,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11288,"src":"3413:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"3413:17:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":11314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3413:46:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11315,"nodeType":"ExpressionStatement","src":"3413:46:82"}]},"documentation":{"id":11286,"nodeType":"StructuredDocumentation","src":"3017:167:82","text":" @notice Approves the Vault to use tokens held in the relayer\n @dev This is needed to avoid having to send intermediate tokens back to the user"},"functionSelector":"b6d24737","id":11317,"implemented":true,"kind":"function","modifiers":[],"name":"approveVault","nodeType":"FunctionDefinition","overrides":{"id":11292,"nodeType":"OverrideSpecifier","overrides":[],"src":"3248:8:82"},"parameters":{"id":11291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11288,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11317,"src":"3211:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":11287,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3211:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11290,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11317,"src":"3225:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11289,"name":"uint256","nodeType":"ElementaryTypeName","src":"3225:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3210:30:82"},"returnParameters":{"id":11293,"nodeType":"ParameterList","parameters":[],"src":"3257:0:82"},"scope":11602,"src":"3189:277:82","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[12072],"body":{"id":11333,"nodeType":"Block","src":"3734:60:82","statements":[{"expression":{"id":11331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[null,{"id":11326,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11324,"src":"3747:5:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11327,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3744:9:82","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11329,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11320,"src":"3783:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11328,"name":"_peekChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11556,"src":"3756:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$","typeString":"function (uint256) view returns (bytes32,uint256)"}},"id":11330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3756:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"src":"3744:43:82","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11332,"nodeType":"ExpressionStatement","src":"3744:43:82"}]},"documentation":{"id":11318,"nodeType":"StructuredDocumentation","src":"3472:164:82","text":" @notice Returns the amount referenced by chained reference `ref`.\n @dev It does not alter the reference (even if it's marked as temporary)."},"functionSelector":"f3cab685","id":11334,"implemented":true,"kind":"function","modifiers":[],"name":"peekChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":11322,"nodeType":"OverrideSpecifier","overrides":[],"src":"3701:8:82"},"parameters":{"id":11321,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11320,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":11334,"src":"3676:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11319,"name":"uint256","nodeType":"ElementaryTypeName","src":"3676:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3675:13:82"},"returnParameters":{"id":11325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11324,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11334,"src":"3719:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11323,"name":"uint256","nodeType":"ElementaryTypeName","src":"3719:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3718:15:82"},"scope":11602,"src":"3641:153:82","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[12081],"body":{"id":11388,"nodeType":"Block","src":"3914:246:82","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11344,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11340,"src":"3928:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":11345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3938:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3928:11:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11348,"nodeType":"IfStatement","src":"3924:24:82","trueBody":{"functionReturnParameters":11343,"id":11347,"nodeType":"Return","src":"3941:7:82"}},{"assignments":[11352],"declarations":[{"constant":false,"id":11352,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":11388,"src":"3957:22:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":11350,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3957:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11351,"nodeType":"ArrayTypeName","src":"3957:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":11358,"initialValue":{"arguments":[{"hexValue":"31","id":11356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3995:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3982:12:82","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":11353,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3986:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11354,"nodeType":"ArrayTypeName","src":"3986:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":11357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3982:15:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3957:40:82"},{"expression":{"id":11363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11359,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11352,"src":"4007:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11361,"indexExpression":{"hexValue":"30","id":11360,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4014:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4007:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11362,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11338,"src":"4019:5:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"4007:17:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11364,"nodeType":"ExpressionStatement","src":"4007:17:82"},{"assignments":[11369],"declarations":[{"constant":false,"id":11369,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":11388,"src":"4034:24:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11367,"name":"uint256","nodeType":"ElementaryTypeName","src":"4034:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11368,"nodeType":"ArrayTypeName","src":"4034:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":11375,"initialValue":{"arguments":[{"hexValue":"31","id":11373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4075:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":11372,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4061:13:82","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":11370,"name":"uint256","nodeType":"ElementaryTypeName","src":"4065:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11371,"nodeType":"ArrayTypeName","src":"4065:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":11374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4061:16:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4034:43:82"},{"expression":{"id":11380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11376,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"4087:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11378,"indexExpression":{"hexValue":"30","id":11377,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4095:1:82","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4087:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11379,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11340,"src":"4100:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4087:19:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11381,"nodeType":"ExpressionStatement","src":"4087:19:82"},{"expression":{"arguments":[{"id":11383,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11336,"src":"4129:6:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11384,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11352,"src":"4137:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":11385,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11369,"src":"4145:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":11382,"name":"_pullTokens","nodeType":"Identifier","overloadedDeclarations":[11462],"referencedDeclaration":11462,"src":"4117:11:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (address,contract IERC20[] memory,uint256[] memory)"}},"id":11386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4117:36:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11387,"nodeType":"ExpressionStatement","src":"4117:36:82"}]},"id":11389,"implemented":true,"kind":"function","modifiers":[],"name":"_pullToken","nodeType":"FunctionDefinition","overrides":{"id":11342,"nodeType":"OverrideSpecifier","overrides":[],"src":"3905:8:82"},"parameters":{"id":11341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11336,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11389,"src":"3829:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11335,"name":"address","nodeType":"ElementaryTypeName","src":"3829:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11338,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":11389,"src":"3853:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":11337,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3853:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":11340,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11389,"src":"3875:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11339,"name":"uint256","nodeType":"ElementaryTypeName","src":"3875:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3819:76:82"},"returnParameters":{"id":11343,"nodeType":"ParameterList","parameters":[],"src":"3914:0:82"},"scope":11602,"src":"3800:360:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[12092],"body":{"id":11461,"nodeType":"Block","src":"4301:493:82","statements":[{"assignments":[11405],"declarations":[{"constant":false,"id":11405,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":11461,"src":"4311:33:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":11403,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3247,"src":"4311:20:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":11404,"nodeType":"ArrayTypeName","src":"4311:22:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"}],"id":11412,"initialValue":{"arguments":[{"expression":{"id":11409,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"4374:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4374:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11408,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4347:26:82","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (struct IVault.UserBalanceOp memory[] memory)"},"typeName":{"baseType":{"id":11406,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3247,"src":"4351:20:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":11407,"nodeType":"ArrayTypeName","src":"4351:22:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}}},"id":11411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4347:41:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4311:77:82"},{"body":{"id":11453,"nodeType":"Block","src":"4438:306:82","statements":[{"expression":{"id":11451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":11423,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11405,"src":"4452:3:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}},"id":11425,"indexExpression":{"id":11424,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"4456:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4452:6:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"arguments":[{"baseExpression":{"id":11431,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"4522:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11433,"indexExpression":{"id":11432,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"4529:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4522:9:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":11430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4514:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11429,"name":"address","nodeType":"ElementaryTypeName","src":"4514:7:82","typeDescriptions":{}}},"id":11434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4514:18:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11428,"name":"IAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"4507:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAsset_$2904_$","typeString":"type(contract IAsset)"}},"id":11435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4507:26:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},{"baseExpression":{"id":11436,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11397,"src":"4559:7:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":11438,"indexExpression":{"id":11437,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"4567:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4559:10:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11439,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11391,"src":"4595:6:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":11444,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4646:4:82","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}],"id":11443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4638:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11442,"name":"address","nodeType":"ElementaryTypeName","src":"4638:7:82","typeDescriptions":{}}},"id":11445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4638:13:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4630:8:82","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":11440,"name":"address","nodeType":"ElementaryTypeName","src":"4630:8:82","stateMutability":"payable","typeDescriptions":{}}},"id":11446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4630:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"expression":{"id":11447,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"4676:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3617_$","typeString":"type(contract IVault)"}},"id":11448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOpKind","nodeType":"MemberAccess","referencedDeclaration":3252,"src":"4676:24:82","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_UserBalanceOpKind_$3252_$","typeString":"type(enum IVault.UserBalanceOpKind)"}},"id":11449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TRANSFER_EXTERNAL","nodeType":"MemberAccess","src":"4676:42:82","typeDescriptions":{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3252","typeString":"enum IVault.UserBalanceOpKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_enum$_UserBalanceOpKind_$3252","typeString":"enum IVault.UserBalanceOpKind"}],"expression":{"id":11426,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"4461:6:82","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3617_$","typeString":"type(contract IVault)"}},"id":11427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UserBalanceOp","nodeType":"MemberAccess","referencedDeclaration":3247,"src":"4461:20:82","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_UserBalanceOp_$3247_storage_ptr_$","typeString":"type(struct IVault.UserBalanceOp storage pointer)"}},"id":11450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["asset","amount","sender","recipient","kind"],"nodeType":"FunctionCall","src":"4461:272:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"src":"4452:281:82","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_memory_ptr","typeString":"struct IVault.UserBalanceOp memory"}},"id":11452,"nodeType":"ExpressionStatement","src":"4452:281:82"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11416,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"4414:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":11417,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11394,"src":"4418:6:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":11418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4418:13:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4414:17:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11454,"initializationExpression":{"assignments":[11414],"declarations":[{"constant":false,"id":11414,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":11454,"src":"4403:9:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11413,"name":"uint256","nodeType":"ElementaryTypeName","src":"4403:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11415,"nodeType":"VariableDeclarationStatement","src":"4403:9:82"},"loopExpression":{"expression":{"id":11421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4433:3:82","subExpression":{"id":11420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11414,"src":"4433:1:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11422,"nodeType":"ExpressionStatement","src":"4433:3:82"},"nodeType":"ForStatement","src":"4398:346:82"},{"expression":{"arguments":[{"id":11458,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11405,"src":"4783:3:82","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.UserBalanceOp memory[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":11455,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[11228],"referencedDeclaration":11228,"src":"4754:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":11456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4754:10:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":11457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":3236,"src":"4754:28:82","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":11459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4754:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11460,"nodeType":"ExpressionStatement","src":"4754:33:82"}]},"id":11462,"implemented":true,"kind":"function","modifiers":[],"name":"_pullTokens","nodeType":"FunctionDefinition","overrides":{"id":11399,"nodeType":"OverrideSpecifier","overrides":[],"src":"4292:8:82"},"parameters":{"id":11398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11391,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11462,"src":"4196:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11390,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11394,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":11462,"src":"4220:22:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":11392,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4220:6:82","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11393,"nodeType":"ArrayTypeName","src":"4220:8:82","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":11397,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":11462,"src":"4252:24:82","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":11395,"name":"uint256","nodeType":"ElementaryTypeName","src":"4252:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11396,"nodeType":"ArrayTypeName","src":"4252:9:82","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"4186:96:82"},"returnParameters":{"id":11400,"nodeType":"ParameterList","parameters":[],"src":"4301:0:82"},"scope":11602,"src":"4166:628:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[12099],"body":{"id":11478,"nodeType":"Block","src":"4995:275:82","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11471,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11465,"src":"5105:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866666630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":11472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5114:66:82","typeDescriptions":{"typeIdentifier":"t_rational_115763819684279741274297652248676021157016744923290554136127638308692447723520_by_1","typeString":"int_const 1157...(70 digits omitted)...3520"},"value":"0xfff0000000000000000000000000000000000000000000000000000000000000"},"src":"5105:75:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11474,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5104:77:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"307862613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":11475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5197:66:82","typeDescriptions":{"typeIdentifier":"t_rational_84158459389524002386711626555386694745894712975979482213248346579970065170432_by_1","typeString":"int_const 8415...(69 digits omitted)...0432"},"value":"0xba10000000000000000000000000000000000000000000000000000000000000"},"src":"5104:159:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11470,"id":11477,"nodeType":"Return","src":"5085:178:82"}]},"documentation":{"id":11463,"nodeType":"StructuredDocumentation","src":"4800:107:82","text":" @dev Returns true if `amount` is not actually an amount, but rather a chained reference."},"id":11479,"implemented":true,"kind":"function","modifiers":[],"name":"_isChainedReference","nodeType":"FunctionDefinition","overrides":{"id":11467,"nodeType":"OverrideSpecifier","overrides":[],"src":"4971:8:82"},"parameters":{"id":11466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11465,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11479,"src":"4941:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11464,"name":"uint256","nodeType":"ElementaryTypeName","src":"4941:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4940:16:82"},"returnParameters":{"id":11470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11469,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11479,"src":"4989:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11468,"name":"bool","nodeType":"ElementaryTypeName","src":"4989:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4988:6:82"},"scope":11602,"src":"4912:358:82","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":11494,"nodeType":"Block","src":"5470:422:82","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11487,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11482,"src":"5727:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866666666303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":11488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5736:66:82","typeDescriptions":{"typeIdentifier":"t_rational_115790322390251417039241401711187164934754157181743688420499462401711837020160_by_1","typeString":"int_const 1157...(70 digits omitted)...0160"},"value":"0xffff000000000000000000000000000000000000000000000000000000000000"},"src":"5727:75:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5726:77:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"307862613130303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":11491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5819:66:82","typeDescriptions":{"typeIdentifier":"t_rational_84158459389524002386711626555386694745894712975979482213248346579970065170432_by_1","typeString":"int_const 8415...(69 digits omitted)...0432"},"value":"0xba10000000000000000000000000000000000000000000000000000000000000"},"src":"5726:159:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":11486,"id":11493,"nodeType":"Return","src":"5707:178:82"}]},"documentation":{"id":11480,"nodeType":"StructuredDocumentation","src":"5276:106:82","text":" @dev Returns true if `ref` is temporary reference, i.e. to be deleted after reading it."},"id":11495,"implemented":true,"kind":"function","modifiers":[],"name":"_isTemporaryChainedReference","nodeType":"FunctionDefinition","parameters":{"id":11483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11482,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11495,"src":"5425:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11481,"name":"uint256","nodeType":"ElementaryTypeName","src":"5425:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5424:16:82"},"returnParameters":{"id":11486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11485,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11495,"src":"5464:4:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11484,"name":"bool","nodeType":"ElementaryTypeName","src":"5464:4:82","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5463:6:82"},"scope":11602,"src":"5387:505:82","stateMutability":"pure","virtual":false,"visibility":"internal"},{"baseFunctions":[12106],"body":{"id":11511,"nodeType":"Block","src":"6075:311:82","statements":[{"assignments":[11505],"declarations":[{"constant":false,"id":11505,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":11511,"src":"6085:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11504,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6085:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":11509,"initialValue":{"arguments":[{"id":11507,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11498,"src":"6116:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11506,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11587,"src":"6100:15:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":11508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6100:20:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"6085:35:82"},{"AST":{"nodeType":"YulBlock","src":"6337:43:82","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"6358:4:82"},{"name":"value","nodeType":"YulIdentifier","src":"6364:5:82"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"6351:6:82"},"nodeType":"YulFunctionCall","src":"6351:19:82"},"nodeType":"YulExpressionStatement","src":"6351:19:82"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11505,"isOffset":false,"isSlot":false,"src":"6358:4:82","valueSize":1},{"declaration":11500,"isOffset":false,"isSlot":false,"src":"6364:5:82","valueSize":1}],"id":11510,"nodeType":"InlineAssembly","src":"6328:52:82"}]},"documentation":{"id":11496,"nodeType":"StructuredDocumentation","src":"5898:91:82","text":" @dev Stores `value` as the amount referenced by chained reference `ref`."},"id":11512,"implemented":true,"kind":"function","modifiers":[],"name":"_setChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":11502,"nodeType":"OverrideSpecifier","overrides":[],"src":"6066:8:82"},"parameters":{"id":11501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11498,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":11512,"src":"6029:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11497,"name":"uint256","nodeType":"ElementaryTypeName","src":"6029:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11500,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11512,"src":"6042:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11499,"name":"uint256","nodeType":"ElementaryTypeName","src":"6042:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6028:28:82"},"returnParameters":{"id":11503,"nodeType":"ParameterList","parameters":[],"src":"6075:0:82"},"scope":11602,"src":"5994:392:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[12113],"body":{"id":11537,"nodeType":"Block","src":"6826:291:82","statements":[{"assignments":[11522,11524],"declarations":[{"constant":false,"id":11522,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":11537,"src":"6837:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6837:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11524,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11537,"src":"6851:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11523,"name":"uint256","nodeType":"ElementaryTypeName","src":"6851:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11528,"initialValue":{"arguments":[{"id":11526,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11515,"src":"6895:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11525,"name":"_peekChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11556,"src":"6868:26:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$_t_uint256_$","typeString":"function (uint256) view returns (bytes32,uint256)"}},"id":11527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6868:31:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bytes32_$_t_uint256_$","typeString":"tuple(bytes32,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6836:63:82"},{"condition":{"arguments":[{"id":11530,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11515,"src":"6943:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11529,"name":"_isTemporaryChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11495,"src":"6914:28:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6914:33:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11534,"nodeType":"IfStatement","src":"6910:179:82","trueBody":{"id":11533,"nodeType":"Block","src":"6949:140:82","statements":[{"AST":{"nodeType":"YulBlock","src":"7032:47:82","statements":[{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7057:4:82"},{"kind":"number","nodeType":"YulLiteral","src":"7063:1:82","type":"","value":"0"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"7050:6:82"},"nodeType":"YulFunctionCall","src":"7050:15:82"},"nodeType":"YulExpressionStatement","src":"7050:15:82"}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11522,"isOffset":false,"isSlot":false,"src":"7057:4:82","valueSize":1}],"id":11532,"nodeType":"InlineAssembly","src":"7023:56:82"}]}},{"expression":{"id":11535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11524,"src":"7105:5:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11520,"id":11536,"nodeType":"Return","src":"7098:12:82"}]},"documentation":{"id":11513,"nodeType":"StructuredDocumentation","src":"6392:345:82","text":" @dev Returns the amount referenced by chained reference `ref`.\n If the reference is temporary, it will be cleared after reading it, so they can each only be read once.\n If the reference is not temporary (i.e. read-only), it will not be cleared after reading it\n (see `_isTemporaryChainedReference` function)."},"id":11538,"implemented":true,"kind":"function","modifiers":[],"name":"_getChainedReferenceValue","nodeType":"FunctionDefinition","overrides":{"id":11517,"nodeType":"OverrideSpecifier","overrides":[],"src":"6799:8:82"},"parameters":{"id":11516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11515,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":11538,"src":"6777:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11514,"name":"uint256","nodeType":"ElementaryTypeName","src":"6777:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6776:13:82"},"returnParameters":{"id":11520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11519,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11538,"src":"6817:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11518,"name":"uint256","nodeType":"ElementaryTypeName","src":"6817:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6816:9:82"},"scope":11602,"src":"6742:375:82","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11555,"nodeType":"Block","src":"7411:304:82","statements":[{"expression":{"id":11552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11548,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11544,"src":"7421:4:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11550,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11541,"src":"7444:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11549,"name":"_getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11587,"src":"7428:15:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":11551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7428:20:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7421:27:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":11553,"nodeType":"ExpressionStatement","src":"7421:27:82"},{"AST":{"nodeType":"YulBlock","src":"7665:44:82","statements":[{"nodeType":"YulAssignment","src":"7679:20:82","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"7694:4:82"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"7688:5:82"},"nodeType":"YulFunctionCall","src":"7688:11:82"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7679:5:82"}]}]},"evmVersion":"istanbul","externalReferences":[{"declaration":11544,"isOffset":false,"isSlot":false,"src":"7694:4:82","valueSize":1},{"declaration":11546,"isOffset":false,"isSlot":false,"src":"7679:5:82","valueSize":1}],"id":11554,"nodeType":"InlineAssembly","src":"7656:53:82"}]},"documentation":{"id":11539,"nodeType":"StructuredDocumentation","src":"7123:183:82","text":" @dev Returns the storage slot for reference `ref` as well as the amount referenced by it.\n It does not alter the reference (even if it's marked as temporary)."},"id":11556,"implemented":true,"kind":"function","modifiers":[],"name":"_peekChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":11542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11541,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":11556,"src":"7347:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11540,"name":"uint256","nodeType":"ElementaryTypeName","src":"7347:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7346:13:82"},"returnParameters":{"id":11547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11544,"mutability":"mutable","name":"slot","nodeType":"VariableDeclaration","scope":11556,"src":"7382:12:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11543,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7382:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11546,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":11556,"src":"7396:13:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11545,"name":"uint256","nodeType":"ElementaryTypeName","src":"7396:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7381:29:82"},"scope":11602,"src":"7311:404:82","stateMutability":"view","virtual":false,"visibility":"private"},{"constant":false,"id":11561,"mutability":"immutable","name":"_TEMP_STORAGE_SUFFIX","nodeType":"VariableDeclaration","scope":11602,"src":"7773:91:82","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7773:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"62616c616e6365722e626173652d72656c617965722d6c696272617279","id":11559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7832:31:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb509","typeString":"literal_string \"balancer.base-relayer-library\""},"value":"balancer.base-relayer-library"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb509","typeString":"literal_string \"balancer.base-relayer-library\""}],"id":11558,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7822:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7822:42:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":11586,"nodeType":"Block","src":"7940:526:82","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":11576,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11563,"src":"8425:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11575,"name":"_removeReferencePrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11601,"src":"8402:22:82","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":11577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8402:27:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11578,"name":"_TEMP_STORAGE_SUFFIX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11561,"src":"8431:20:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11573,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8385:3:82","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":11574,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"8385:16:82","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":11579,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8385:67:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":11572,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8375:9:82","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":11580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8375:78:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":11571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8367:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":11570,"name":"uint256","nodeType":"ElementaryTypeName","src":"8367:7:82","typeDescriptions":{}}},"id":11581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8367:87:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":11582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8457:1:82","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8367:91:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11569,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8359:7:82","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":11568,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8359:7:82","typeDescriptions":{}}},"id":11584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8359:100:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":11567,"id":11585,"nodeType":"Return","src":"8352:107:82"}]},"id":11587,"implemented":true,"kind":"function","modifiers":[],"name":"_getStorageSlot","nodeType":"FunctionDefinition","parameters":{"id":11564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11563,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":11587,"src":"7896:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7896:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7895:13:82"},"returnParameters":{"id":11567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11566,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11587,"src":"7931:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11565,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7931:7:82","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7930:9:82"},"scope":11602,"src":"7871:595:82","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":11600,"nodeType":"Block","src":"8733:98:82","statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":11597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11595,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11590,"src":"8751:3:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307830303030666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":11596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8757:66:82","typeDescriptions":{"typeIdentifier":"t_rational_1766847064778384329583297500742918515827483896875618958121606201292619775_by_1","typeString":"int_const 1766...(65 digits omitted)...9775"},"value":"0x0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"},"src":"8751:72:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":11598,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8750:74:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":11594,"id":11599,"nodeType":"Return","src":"8743:81:82"}]},"documentation":{"id":11588,"nodeType":"StructuredDocumentation","src":"8472:180:82","text":" @dev Returns a reference without its prefix.\n Use this function to calculate the storage slot so that it's the same for temporary and read-only references."},"id":11601,"implemented":true,"kind":"function","modifiers":[],"name":"_removeReferencePrefix","nodeType":"FunctionDefinition","parameters":{"id":11591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11590,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":11601,"src":"8689:11:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11589,"name":"uint256","nodeType":"ElementaryTypeName","src":"8689:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8688:13:82"},"returnParameters":{"id":11594,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11593,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":11601,"src":"8724:7:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11592,"name":"uint256","nodeType":"ElementaryTypeName","src":"8724:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8723:9:82"},"scope":11602,"src":"8657:174:82","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":11603,"src":"1865:6968:82"}],"src":"688:8146:82"},"id":82},"contracts/relayer/ERC4626Wrapping.sol":{"ast":{"absolutePath":"contracts/relayer/ERC4626Wrapping.sol","exportedSymbols":{"ERC4626Wrapping":[11772]},"id":11773,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11604,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:83"},{"id":11605,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:83"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol","id":11606,"nodeType":"ImportDirective","scope":11773,"sourceUnit":1998,"src":"747:81:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11607,"nodeType":"ImportDirective","scope":11773,"sourceUnit":3618,"src":"829:65:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":11608,"nodeType":"ImportDirective","scope":11773,"sourceUnit":7030,"src":"896:77:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":11609,"nodeType":"ImportDirective","scope":11773,"sourceUnit":8496,"src":"974:79:83","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":11610,"nodeType":"ImportDirective","scope":11773,"sourceUnit":12115,"src":"1055:35:83","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11612,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1312:19:83","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":11613,"nodeType":"InheritanceSpecifier","src":"1312:19:83"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":11611,"nodeType":"StructuredDocumentation","src":"1092:182:83","text":" @title ERC4626Wrapping\n @notice Allows users to wrap and unwrap ERC4626 tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":11772,"linearizedBaseContracts":[11772,12114,8793],"name":"ERC4626Wrapping","nodeType":"ContractDefinition","nodes":[{"id":11616,"libraryName":{"id":11614,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1344:7:83","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1338:34:83","typeName":{"id":11615,"name":"address","nodeType":"ElementaryTypeName","src":"1356:15:83","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":11619,"libraryName":{"id":11617,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1383:9:83","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1377:27:83","typeName":{"id":11618,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1397:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"body":{"id":11701,"nodeType":"Block","src":"1593:772:83","statements":[{"condition":{"arguments":[{"id":11633,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11627,"src":"1627:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11632,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"1607:19:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1607:27:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11642,"nodeType":"IfStatement","src":"1603:100:83","trueBody":{"id":11641,"nodeType":"Block","src":"1636:67:83","statements":[{"expression":{"id":11639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11635,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11627,"src":"1650:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11637,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11627,"src":"1685:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11636,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"1659:25:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1659:33:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1650:42:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11640,"nodeType":"ExpressionStatement","src":"1650:42:83"}]}},{"assignments":[11644],"declarations":[{"constant":false,"id":11644,"mutability":"mutable","name":"underlying","nodeType":"VariableDeclaration","scope":11701,"src":"1713:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":11643,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1713:6:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11650,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11646,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11621,"src":"1740:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}},"id":11647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"asset","nodeType":"MemberAccess","referencedDeclaration":1974,"src":"1740:18:83","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":11648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1740:20:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":11645,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1733:6:83","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":11649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1733:28:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1713:48:83"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11651,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11623,"src":"1951:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11654,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1969:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}],"id":11653,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1961:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11652,"name":"address","nodeType":"ElementaryTypeName","src":"1961:7:83","typeDescriptions":{}}},"id":11655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1961:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1951:23:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11672,"nodeType":"IfStatement","src":"1947:155:83","trueBody":{"id":11671,"nodeType":"Block","src":"1976:126:83","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11658,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11623,"src":"1998:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11659,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2008:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2008:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1998:20:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2020:18:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1990:7:83","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1990:49:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11664,"nodeType":"ExpressionStatement","src":"1990:49:83"},{"expression":{"arguments":[{"id":11666,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11623,"src":"2064:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11667,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"2072:10:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":11668,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11627,"src":"2084:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11665,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"2053:10:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2053:38:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11670,"nodeType":"ExpressionStatement","src":"2053:38:83"}]}},{"expression":{"arguments":[{"arguments":[{"id":11678,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11621,"src":"2143:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}],"id":11677,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2135:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11676,"name":"address","nodeType":"ElementaryTypeName","src":"2135:7:83","typeDescriptions":{}}},"id":11679,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:21:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11680,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11627,"src":"2158:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11673,"name":"underlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11644,"src":"2112:10:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"2112:22:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":11681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2112:53:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11682,"nodeType":"ExpressionStatement","src":"2112:53:83"},{"assignments":[11684],"declarations":[{"constant":false,"id":11684,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":11701,"src":"2175:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11683,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11690,"initialValue":{"arguments":[{"id":11687,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11627,"src":"2213:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11688,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11625,"src":"2221:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11685,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11621,"src":"2192:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}},"id":11686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":1956,"src":"2192:20:83","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) external returns (uint256)"}},"id":11689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2192:39:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2175:56:83"},{"condition":{"arguments":[{"id":11692,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11629,"src":"2266:15:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11691,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2246:19:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2246:36:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11700,"nodeType":"IfStatement","src":"2242:117:83","trueBody":{"id":11699,"nodeType":"Block","src":"2284:75:83","statements":[{"expression":{"arguments":[{"id":11695,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11629,"src":"2324:15:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11696,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11684,"src":"2341:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11694,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"2298:25:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2298:50:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11698,"nodeType":"ExpressionStatement","src":"2298:50:83"}]}}]},"functionSelector":"6d307ea8","id":11702,"implemented":true,"kind":"function","modifiers":[],"name":"wrapERC4626","nodeType":"FunctionDefinition","parameters":{"id":11630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11621,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":11702,"src":"1440:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"},"typeName":{"id":11620,"name":"IERC4626","nodeType":"UserDefinedTypeName","referencedDeclaration":1997,"src":"1440:8:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":11623,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11702,"src":"1471:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11622,"name":"address","nodeType":"ElementaryTypeName","src":"1471:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11625,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11702,"src":"1495:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11624,"name":"address","nodeType":"ElementaryTypeName","src":"1495:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11627,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11702,"src":"1522:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11626,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11629,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11702,"src":"1546:23:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11628,"name":"uint256","nodeType":"ElementaryTypeName","src":"1546:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1430:145:83"},"returnParameters":{"id":11631,"nodeType":"ParameterList","parameters":[],"src":"1593:0:83"},"scope":11772,"src":"1410:955:83","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11770,"nodeType":"Block","src":"2556:668:83","statements":[{"condition":{"arguments":[{"id":11716,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11710,"src":"2590:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11715,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2570:19:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2570:27:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11725,"nodeType":"IfStatement","src":"2566:100:83","trueBody":{"id":11724,"nodeType":"Block","src":"2599:67:83","statements":[{"expression":{"id":11722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11718,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11710,"src":"2613:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11720,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11710,"src":"2648:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11719,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"2622:25:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2622:33:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2613:42:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11723,"nodeType":"ExpressionStatement","src":"2613:42:83"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11726,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11706,"src":"2857:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11729,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2875:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}],"id":11728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2867:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11727,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:83","typeDescriptions":{}}},"id":11730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2867:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2857:23:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11747,"nodeType":"IfStatement","src":"2853:157:83","trueBody":{"id":11746,"nodeType":"Block","src":"2882:128:83","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11733,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11706,"src":"2904:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11734,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2914:3:83","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2914:10:83","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2904:20:83","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11737,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2926:18:83","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11732,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2896:7:83","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2896:49:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11739,"nodeType":"ExpressionStatement","src":"2896:49:83"},{"expression":{"arguments":[{"id":11741,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11706,"src":"2970:6:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11742,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11704,"src":"2978:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}},{"id":11743,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11710,"src":"2992:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11740,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"2959:10:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2959:40:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11745,"nodeType":"ExpressionStatement","src":"2959:40:83"}]}},{"assignments":[11749],"declarations":[{"constant":false,"id":11749,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":11770,"src":"3020:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11748,"name":"uint256","nodeType":"ElementaryTypeName","src":"3020:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11759,"initialValue":{"arguments":[{"id":11752,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11710,"src":"3057:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11753,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11708,"src":"3065:9:83","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":11756,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3084:4:83","typeDescriptions":{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC4626Wrapping_$11772","typeString":"contract ERC4626Wrapping"}],"id":11755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3076:7:83","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11754,"name":"address","nodeType":"ElementaryTypeName","src":"3076:7:83","typeDescriptions":{}}},"id":11757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3076:13:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11750,"name":"wrappedToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11704,"src":"3037:12:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}},"id":11751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"redeem","nodeType":"MemberAccess","referencedDeclaration":1968,"src":"3037:19:83","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) external returns (uint256)"}},"id":11758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3037:53:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3020:70:83"},{"condition":{"arguments":[{"id":11761,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11712,"src":"3125:15:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11760,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3105:19:83","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3105:36:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11769,"nodeType":"IfStatement","src":"3101:117:83","trueBody":{"id":11768,"nodeType":"Block","src":"3143:75:83","statements":[{"expression":{"arguments":[{"id":11764,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11712,"src":"3183:15:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11765,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11749,"src":"3200:6:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11763,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3157:25:83","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3157:50:83","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11767,"nodeType":"ExpressionStatement","src":"3157:50:83"}]}}]},"functionSelector":"efe69108","id":11771,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapERC4626","nodeType":"FunctionDefinition","parameters":{"id":11713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11704,"mutability":"mutable","name":"wrappedToken","nodeType":"VariableDeclaration","scope":11771,"src":"2403:21:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"},"typeName":{"id":11703,"name":"IERC4626","nodeType":"UserDefinedTypeName","referencedDeclaration":1997,"src":"2403:8:83","typeDescriptions":{"typeIdentifier":"t_contract$_IERC4626_$1997","typeString":"contract IERC4626"}},"visibility":"internal"},{"constant":false,"id":11706,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11771,"src":"2434:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11705,"name":"address","nodeType":"ElementaryTypeName","src":"2434:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11708,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11771,"src":"2458:17:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11707,"name":"address","nodeType":"ElementaryTypeName","src":"2458:7:83","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11710,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11771,"src":"2485:14:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11709,"name":"uint256","nodeType":"ElementaryTypeName","src":"2485:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11712,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11771,"src":"2509:23:83","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11711,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:83","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2393:145:83"},"returnParameters":{"id":11714,"nodeType":"ParameterList","parameters":[],"src":"2556:0:83"},"scope":11772,"src":"2371:853:83","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":11773,"src":"1275:1951:83"}],"src":"688:2539:83"},"id":83},"contracts/relayer/GaugeActions.sol":{"ast":{"absolutePath":"contracts/relayer/GaugeActions.sol","exportedSymbols":{"GaugeActions":[12036]},"id":12037,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":11774,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:84"},{"id":11775,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:84"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol","id":11776,"nodeType":"ImportDirective","scope":12037,"sourceUnit":176,"src":"747:85:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","file":"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol","id":11777,"nodeType":"ImportDirective","scope":12037,"sourceUnit":551,"src":"833:92:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":11778,"nodeType":"ImportDirective","scope":12037,"sourceUnit":3618,"src":"926:65:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":11779,"nodeType":"ImportDirective","scope":12037,"sourceUnit":7030,"src":"993:77:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":11780,"nodeType":"ImportDirective","scope":12037,"sourceUnit":8496,"src":"1071:79:84","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":11781,"nodeType":"ImportDirective","scope":12037,"sourceUnit":12115,"src":"1152:35:84","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":11783,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1345:19:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":11784,"nodeType":"InheritanceSpecifier","src":"1345:19:84"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":11782,"nodeType":"StructuredDocumentation","src":"1189:121:84","text":" @title GaugeActions\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":12036,"linearizedBaseContracts":[12036,12114,8793],"name":"GaugeActions","nodeType":"ContractDefinition","nodes":[{"id":11787,"libraryName":{"id":11785,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1377:7:84","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1371:34:84","typeName":{"id":11786,"name":"address","nodeType":"ElementaryTypeName","src":"1389:15:84","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":11790,"libraryName":{"id":11788,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1416:9:84","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1410:27:84","typeName":{"id":11789,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1430:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"constant":false,"id":11792,"mutability":"immutable","name":"_balancerMinter","nodeType":"VariableDeclaration","scope":12036,"src":"1443:49:84","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":11791,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1443:15:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"private"},{"body":{"id":11802,"nodeType":"Block","src":"1687:49:84","statements":[{"expression":{"id":11800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11798,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11792,"src":"1697:15:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":11799,"name":"balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11795,"src":"1715:14:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"src":"1697:32:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"id":11801,"nodeType":"ExpressionStatement","src":"1697:32:84"}]},"documentation":{"id":11793,"nodeType":"StructuredDocumentation","src":"1499:139:84","text":" @dev The zero address may be passed as balancerMinter to safely disable features\n which only exist on mainnet"},"id":11803,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":11796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11795,"mutability":"mutable","name":"balancerMinter","nodeType":"VariableDeclaration","scope":11803,"src":"1655:30:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":11794,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1655:15:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"internal"}],"src":"1654:32:84"},"returnParameters":{"id":11797,"nodeType":"ParameterList","parameters":[],"src":"1687:0:84"},"scope":12036,"src":"1643:93:84","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":11870,"nodeType":"Block","src":"1900:682:84","statements":[{"condition":{"arguments":[{"id":11815,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"1934:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11814,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"1914:19:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1914:27:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11824,"nodeType":"IfStatement","src":"1910:100:84","trueBody":{"id":11823,"nodeType":"Block","src":"1943:67:84","statements":[{"expression":{"id":11821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11817,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"1957:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11819,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"1992:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11818,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"1966:25:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1966:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1957:42:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11822,"nodeType":"ExpressionStatement","src":"1957:42:84"}]}},{"assignments":[11826],"declarations":[{"constant":false,"id":11826,"mutability":"mutable","name":"bptToken","nodeType":"VariableDeclaration","scope":11870,"src":"2103:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":11825,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2103:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11830,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11827,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"2121:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"id":11828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":537,"src":"2121:14:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2090_$","typeString":"function () view external returns (contract IERC20)"}},"id":11829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2121:16:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2103:34:84"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11831,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"2330:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11834,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2348:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}],"id":11833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2340:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11832,"name":"address","nodeType":"ElementaryTypeName","src":"2340:7:84","typeDescriptions":{}}},"id":11835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2340:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2330:23:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11852,"nodeType":"IfStatement","src":"2326:153:84","trueBody":{"id":11851,"nodeType":"Block","src":"2355:124:84","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11838,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"2377:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11839,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2387:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2387:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2377:20:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2399:18:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11837,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2369:7:84","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2369:49:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11844,"nodeType":"ExpressionStatement","src":"2369:49:84"},{"expression":{"arguments":[{"id":11846,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11807,"src":"2443:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11847,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11826,"src":"2451:8:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":11848,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"2461:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11845,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"2432:10:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2432:36:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11850,"nodeType":"ExpressionStatement","src":"2432:36:84"}]}},{"expression":{"arguments":[{"arguments":[{"id":11858,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"2518:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}],"id":11857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2510:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11856,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:84","typeDescriptions":{}}},"id":11859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2510:14:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11860,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"2526:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11853,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11826,"src":"2489:8:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"2489:20:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":11861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2489:44:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11862,"nodeType":"ExpressionStatement","src":"2489:44:84"},{"expression":{"arguments":[{"id":11866,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11811,"src":"2557:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11867,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11809,"src":"2565:9:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":11863,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11805,"src":"2543:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"id":11865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":544,"src":"2543:13:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address) external"}},"id":11868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2543:32:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11869,"nodeType":"ExpressionStatement","src":"2543:32:84"}]},"functionSelector":"7bc008f5","id":11871,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeDeposit","nodeType":"FunctionDefinition","parameters":{"id":11812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11805,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11871,"src":"1773:28:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":11804,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":550,"src":"1773:22:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":11807,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11871,"src":"1811:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11806,"name":"address","nodeType":"ElementaryTypeName","src":"1811:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11809,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11871,"src":"1835:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11808,"name":"address","nodeType":"ElementaryTypeName","src":"1835:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11811,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11871,"src":"1862:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11810,"name":"uint256","nodeType":"ElementaryTypeName","src":"1862:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1763:119:84"},"returnParameters":{"id":11813,"nodeType":"ParameterList","parameters":[],"src":"1900:0:84"},"scope":12036,"src":"1742:840:84","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11944,"nodeType":"Block","src":"2747:942:84","statements":[{"condition":{"arguments":[{"id":11883,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11879,"src":"2781:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11882,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2761:19:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2761:27:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11892,"nodeType":"IfStatement","src":"2757:100:84","trueBody":{"id":11891,"nodeType":"Block","src":"2790:67:84","statements":[{"expression":{"id":11889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":11885,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11879,"src":"2804:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":11887,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11879,"src":"2839:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11886,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"2813:25:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":11888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2813:33:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2804:42:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":11890,"nodeType":"ExpressionStatement","src":"2804:42:84"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11893,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"3048:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11896,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3066:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}],"id":11895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3058:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11894,"name":"address","nodeType":"ElementaryTypeName","src":"3058:7:84","typeDescriptions":{}}},"id":11897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3058:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3048:23:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11916,"nodeType":"IfStatement","src":"3044:158:84","trueBody":{"id":11915,"nodeType":"Block","src":"3073:129:84","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11900,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"3095:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":11901,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3105:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3105:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3095:20:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":11904,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3117:18:84","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":11899,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3087:7:84","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":11905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3087:49:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11906,"nodeType":"ExpressionStatement","src":"3087:49:84"},{"expression":{"arguments":[{"id":11908,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11875,"src":"3161:6:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":11910,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11873,"src":"3176:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}],"id":11909,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"3169:6:84","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":11911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":11912,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11879,"src":"3184:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11907,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3150:10:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":11913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3150:41:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11914,"nodeType":"ExpressionStatement","src":"3150:41:84"}]}},{"expression":{"arguments":[{"id":11920,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11879,"src":"3334:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11917,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11873,"src":"3319:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"id":11919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":549,"src":"3319:14:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":11921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3319:22:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11922,"nodeType":"ExpressionStatement","src":"3319:22:84"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":11928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":11923,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11877,"src":"3541:9:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":11926,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3562:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}],"id":11925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3554:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11924,"name":"address","nodeType":"ElementaryTypeName","src":"3554:7:84","typeDescriptions":{}}},"id":11927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3554:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3541:26:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11943,"nodeType":"IfStatement","src":"3537:146:84","trueBody":{"id":11942,"nodeType":"Block","src":"3569:114:84","statements":[{"assignments":[11930],"declarations":[{"constant":false,"id":11930,"mutability":"mutable","name":"bptToken","nodeType":"VariableDeclaration","scope":11942,"src":"3583:15:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":11929,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3583:6:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":11934,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":11931,"name":"gauge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11873,"src":"3601:5:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"id":11932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lp_token","nodeType":"MemberAccess","referencedDeclaration":537,"src":"3601:14:84","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IERC20_$2090_$","typeString":"function () view external returns (contract IERC20)"}},"id":11933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3601:16:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"3583:34:84"},{"expression":{"arguments":[{"id":11938,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11877,"src":"3654:9:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11939,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11879,"src":"3665:6:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":11935,"name":"bptToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11930,"src":"3632:8:84","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":11937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"3632:21:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":11940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3632:40:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11941,"nodeType":"ExpressionStatement","src":"3632:40:84"}]}}]},"functionSelector":"65ca4804","id":11945,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeWithdraw","nodeType":"FunctionDefinition","parameters":{"id":11880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11873,"mutability":"mutable","name":"gauge","nodeType":"VariableDeclaration","scope":11945,"src":"2620:28:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"},"typeName":{"id":11872,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":550,"src":"2620:22:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"visibility":"internal"},{"constant":false,"id":11875,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":11945,"src":"2658:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11874,"name":"address","nodeType":"ElementaryTypeName","src":"2658:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11877,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":11945,"src":"2682:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11876,"name":"address","nodeType":"ElementaryTypeName","src":"2682:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11879,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":11945,"src":"2709:14:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11878,"name":"uint256","nodeType":"ElementaryTypeName","src":"2709:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2610:119:84"},"returnParameters":{"id":11881,"nodeType":"ParameterList","parameters":[],"src":"2747:0:84"},"scope":12036,"src":"2588:1101:84","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":11972,"nodeType":"Block","src":"3783:214:84","statements":[{"assignments":[11954],"declarations":[{"constant":false,"id":11954,"mutability":"mutable","name":"balMinted","nodeType":"VariableDeclaration","scope":11972,"src":"3793:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11953,"name":"uint256","nodeType":"ElementaryTypeName","src":"3793:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":11961,"initialValue":{"arguments":[{"id":11957,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11948,"src":"3841:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"expression":{"id":11958,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3849:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":11959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3849:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":11955,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11792,"src":"3813:15:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"id":11956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mintManyFor","nodeType":"MemberAccess","referencedDeclaration":96,"src":"3813:27:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$_t_uint256_$","typeString":"function (address[] memory,address) external returns (uint256)"}},"id":11960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3813:47:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3793:67:84"},{"condition":{"arguments":[{"id":11963,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"3895:15:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11962,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3875:19:84","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":11964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3875:36:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":11971,"nodeType":"IfStatement","src":"3871:120:84","trueBody":{"id":11970,"nodeType":"Block","src":"3913:78:84","statements":[{"expression":{"arguments":[{"id":11966,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11950,"src":"3953:15:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11967,"name":"balMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11954,"src":"3970:9:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":11965,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3927:25:84","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":11968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3927:53:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":11969,"nodeType":"ExpressionStatement","src":"3927:53:84"}]}}]},"functionSelector":"3f85d390","id":11973,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeMint","nodeType":"FunctionDefinition","parameters":{"id":11951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11948,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":11973,"src":"3714:25:84","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":11946,"name":"address","nodeType":"ElementaryTypeName","src":"3714:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":11947,"nodeType":"ArrayTypeName","src":"3714:9:84","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":11950,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":11973,"src":"3741:23:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11949,"name":"uint256","nodeType":"ElementaryTypeName","src":"3741:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3713:52:84"},"returnParameters":{"id":11952,"nodeType":"ParameterList","parameters":[],"src":"3783:0:84"},"scope":12036,"src":"3695:302:84","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12003,"nodeType":"Block","src":"4184:113:84","statements":[{"expression":{"arguments":[{"arguments":[{"id":11993,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4249:4:84","typeDescriptions":{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_GaugeActions_$12036","typeString":"contract GaugeActions"}],"id":11992,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4241:7:84","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":11991,"name":"address","nodeType":"ElementaryTypeName","src":"4241:7:84","typeDescriptions":{}}},"id":11994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4241:13:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11995,"name":"approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11975,"src":"4256:8:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":11996,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11977,"src":"4266:4:84","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":11997,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11979,"src":"4272:8:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":11998,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11981,"src":"4282:1:84","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":11999,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11983,"src":"4285:1:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":12000,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11985,"src":"4288:1:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":11988,"name":"_balancerMinter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11792,"src":"4194:15:84","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"id":11990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"setMinterApprovalWithSignature","nodeType":"MemberAccess","referencedDeclaration":142,"src":"4194:46:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bool_$_t_address_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,bool,address,uint256,uint8,bytes32,bytes32) external"}},"id":12001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4194:96:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12002,"nodeType":"ExpressionStatement","src":"4194:96:84"}]},"functionSelector":"8c57198b","id":12004,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeSetMinterApproval","nodeType":"FunctionDefinition","parameters":{"id":11986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":11975,"mutability":"mutable","name":"approval","nodeType":"VariableDeclaration","scope":12004,"src":"4044:13:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":11974,"name":"bool","nodeType":"ElementaryTypeName","src":"4044:4:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":11977,"mutability":"mutable","name":"user","nodeType":"VariableDeclaration","scope":12004,"src":"4067:12:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":11976,"name":"address","nodeType":"ElementaryTypeName","src":"4067:7:84","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":11979,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":12004,"src":"4089:16:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":11978,"name":"uint256","nodeType":"ElementaryTypeName","src":"4089:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":11981,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":12004,"src":"4115:7:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11980,"name":"uint8","nodeType":"ElementaryTypeName","src":"4115:5:84","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":11983,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":12004,"src":"4132:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11982,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4132:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":11985,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":12004,"src":"4151:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":11984,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4151:7:84","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4034:132:84"},"returnParameters":{"id":11987,"nodeType":"ParameterList","parameters":[],"src":"4184:0:84"},"scope":12036,"src":"4003:294:84","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12034,"nodeType":"Block","src":"4389:155:84","statements":[{"assignments":[12011],"declarations":[{"constant":false,"id":12011,"mutability":"mutable","name":"numGauges","nodeType":"VariableDeclaration","scope":12034,"src":"4399:17:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12010,"name":"uint256","nodeType":"ElementaryTypeName","src":"4399:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12014,"initialValue":{"expression":{"id":12012,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12007,"src":"4419:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$550_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":12013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4419:13:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4399:33:84"},{"body":{"id":12032,"nodeType":"Block","src":"4478:60:84","statements":[{"expression":{"arguments":[{"expression":{"id":12028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4516:3:84","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4516:10:84","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"baseExpression":{"id":12024,"name":"gauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12007,"src":"4492:6:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$550_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[] calldata"}},"id":12026,"indexExpression":{"id":12025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"4499:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4492:9:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"id":12027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"claim_rewards","nodeType":"MemberAccess","referencedDeclaration":473,"src":"4492:23:84","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$__$","typeString":"function (address) external"}},"id":12030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4492:35:84","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12031,"nodeType":"ExpressionStatement","src":"4492:35:84"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12018,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"4458:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":12019,"name":"numGauges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12011,"src":"4462:9:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4458:13:84","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12033,"initializationExpression":{"assignments":[12016],"declarations":[{"constant":false,"id":12016,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":12033,"src":"4447:9:84","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12015,"name":"uint256","nodeType":"ElementaryTypeName","src":"4447:7:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12017,"nodeType":"VariableDeclarationStatement","src":"4447:9:84"},"loopExpression":{"expression":{"id":12022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"4473:3:84","subExpression":{"id":12021,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12016,"src":"4475:1:84","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12023,"nodeType":"ExpressionStatement","src":"4473:3:84"},"nodeType":"ForStatement","src":"4442:96:84"}]},"functionSelector":"0e248fea","id":12035,"implemented":true,"kind":"function","modifiers":[],"name":"gaugeClaimRewards","nodeType":"FunctionDefinition","parameters":{"id":12008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12007,"mutability":"mutable","name":"gauges","nodeType":"VariableDeclaration","scope":12035,"src":"4330:40:84","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$550_$dyn_calldata_ptr","typeString":"contract IStakingLiquidityGauge[]"},"typeName":{"baseType":{"id":12005,"name":"IStakingLiquidityGauge","nodeType":"UserDefinedTypeName","referencedDeclaration":550,"src":"4330:22:84","typeDescriptions":{"typeIdentifier":"t_contract$_IStakingLiquidityGauge_$550","typeString":"contract IStakingLiquidityGauge"}},"id":12006,"nodeType":"ArrayTypeName","src":"4330:24:84","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IStakingLiquidityGauge_$550_$dyn_storage_ptr","typeString":"contract IStakingLiquidityGauge[]"}},"visibility":"internal"}],"src":"4329:42:84"},"returnParameters":{"id":12009,"nodeType":"ParameterList","parameters":[],"src":"4389:0:84"},"scope":12036,"src":"4303:241:84","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":12037,"src":"1311:3235:84"}],"src":"688:3859:84"},"id":84},"contracts/relayer/IBaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","exportedSymbols":{"IBaseRelayerLibrary":[12114]},"id":12115,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12038,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:85"},{"id":12039,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:85"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":12040,"nodeType":"ImportDirective","scope":12115,"sourceUnit":3618,"src":"747:65:85","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","file":"@balancer-labs/v2-vault/contracts/AssetHelpers.sol","id":12041,"nodeType":"ImportDirective","scope":12115,"sourceUnit":8794,"src":"814:60:85","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":12043,"name":"AssetHelpers","nodeType":"UserDefinedTypeName","referencedDeclaration":8793,"src":"955:12:85","typeDescriptions":{"typeIdentifier":"t_contract$_AssetHelpers_$8793","typeString":"contract AssetHelpers"}},"id":12044,"nodeType":"InheritanceSpecifier","src":"955:12:85"}],"contractDependencies":[8793],"contractKind":"contract","documentation":{"id":12042,"nodeType":"StructuredDocumentation","src":"876:37:85","text":" @title IBaseRelayerLibrary"},"fullyImplemented":false,"id":12114,"linearizedBaseContracts":[12114,8793],"name":"IBaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"body":{"id":12052,"nodeType":"Block","src":"1017:64:85","statements":[]},"id":12053,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":12049,"name":"weth","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12046,"src":"1011:4:85","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}}],"id":12050,"modifierName":{"id":12048,"name":"AssetHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8793,"src":"998:12:85","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AssetHelpers_$8793_$","typeString":"type(contract AssetHelpers)"}},"nodeType":"ModifierInvocation","src":"998:18:85"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12046,"mutability":"mutable","name":"weth","nodeType":"VariableDeclaration","scope":12053,"src":"986:10:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"},"typeName":{"id":12045,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2012,"src":"986:5:85","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"visibility":"internal"}],"src":"985:12:85"},"returnParameters":{"id":12051,"nodeType":"ParameterList","parameters":[],"src":"1017:0:85"},"scope":12114,"src":"974:107:85","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"functionSelector":"8d928af8","id":12058,"implemented":false,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":12054,"nodeType":"ParameterList","parameters":[],"src":"1104:2:85"},"returnParameters":{"id":12057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12056,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12058,"src":"1136:6:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":12055,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1136:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1135:8:85"},"scope":12114,"src":"1087:57:85","stateMutability":"view","virtual":true,"visibility":"public"},{"functionSelector":"b6d24737","id":12065,"implemented":false,"kind":"function","modifiers":[],"name":"approveVault","nodeType":"FunctionDefinition","parameters":{"id":12063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12060,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12065,"src":"1172:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":12059,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1172:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12062,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12065,"src":"1186:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12061,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1171:30:85"},"returnParameters":{"id":12064,"nodeType":"ParameterList","parameters":[],"src":"1216:0:85"},"scope":12114,"src":"1150:67:85","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"functionSelector":"f3cab685","id":12072,"implemented":false,"kind":"function","modifiers":[],"name":"peekChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12067,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12072,"src":"1258:11:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12066,"name":"uint256","nodeType":"ElementaryTypeName","src":"1258:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1257:13:85"},"returnParameters":{"id":12071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12070,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12072,"src":"1300:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12069,"name":"uint256","nodeType":"ElementaryTypeName","src":"1300:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1299:9:85"},"scope":12114,"src":"1223:86:85","stateMutability":"view","virtual":true,"visibility":"public"},{"id":12081,"implemented":false,"kind":"function","modifiers":[],"name":"_pullToken","nodeType":"FunctionDefinition","parameters":{"id":12079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12074,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12081,"src":"1344:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12073,"name":"address","nodeType":"ElementaryTypeName","src":"1344:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12076,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":12081,"src":"1368:12:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":12075,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1368:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":12078,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12081,"src":"1390:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12077,"name":"uint256","nodeType":"ElementaryTypeName","src":"1390:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1334:76:85"},"returnParameters":{"id":12080,"nodeType":"ParameterList","parameters":[],"src":"1427:0:85"},"scope":12114,"src":"1315:113:85","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":12092,"implemented":false,"kind":"function","modifiers":[],"name":"_pullTokens","nodeType":"FunctionDefinition","parameters":{"id":12090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12083,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12092,"src":"1464:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12082,"name":"address","nodeType":"ElementaryTypeName","src":"1464:7:85","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12086,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":12092,"src":"1488:22:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":12084,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1488:6:85","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12085,"nodeType":"ArrayTypeName","src":"1488:8:85","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":12089,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":12092,"src":"1520:24:85","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":12087,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12088,"nodeType":"ArrayTypeName","src":"1520:9:85","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"1454:96:85"},"returnParameters":{"id":12091,"nodeType":"ParameterList","parameters":[],"src":"1567:0:85"},"scope":12114,"src":"1434:134:85","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":12099,"implemented":false,"kind":"function","modifiers":[],"name":"_isChainedReference","nodeType":"FunctionDefinition","parameters":{"id":12095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12094,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12099,"src":"1603:14:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1603:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1602:16:85"},"returnParameters":{"id":12098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12097,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12099,"src":"1650:4:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":12096,"name":"bool","nodeType":"ElementaryTypeName","src":"1650:4:85","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1649:6:85"},"scope":12114,"src":"1574:82:85","stateMutability":"pure","virtual":true,"visibility":"internal"},{"id":12106,"implemented":false,"kind":"function","modifiers":[],"name":"_setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12101,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12106,"src":"1697:11:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12100,"name":"uint256","nodeType":"ElementaryTypeName","src":"1697:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12103,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12106,"src":"1710:13:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12102,"name":"uint256","nodeType":"ElementaryTypeName","src":"1710:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1696:28:85"},"returnParameters":{"id":12105,"nodeType":"ParameterList","parameters":[],"src":"1741:0:85"},"scope":12114,"src":"1662:80:85","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":12113,"implemented":false,"kind":"function","modifiers":[],"name":"_getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":12109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12108,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":12113,"src":"1783:11:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12107,"name":"uint256","nodeType":"ElementaryTypeName","src":"1783:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1782:13:85"},"returnParameters":{"id":12112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12111,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":12113,"src":"1822:7:85","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1822:7:85","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1821:9:85"},"scope":12114,"src":"1748:83:85","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":12115,"src":"914:919:85"}],"src":"688:1146:85"},"id":85},"contracts/relayer/LidoWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/LidoWrapping.sol","exportedSymbols":{"LidoWrapping":[12466]},"id":12467,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12116,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:86"},{"id":12117,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:86"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":12118,"nodeType":"ImportDirective","scope":12467,"sourceUnit":2844,"src":"747:76:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","id":12119,"nodeType":"ImportDirective","scope":12467,"sourceUnit":2901,"src":"824:77:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":12120,"nodeType":"ImportDirective","scope":12467,"sourceUnit":3618,"src":"902:65:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":12121,"nodeType":"ImportDirective","scope":12467,"sourceUnit":7030,"src":"969:77:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":12122,"nodeType":"ImportDirective","scope":12467,"sourceUnit":8496,"src":"1047:79:86","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":12123,"nodeType":"ImportDirective","scope":12467,"sourceUnit":12115,"src":"1128:35:86","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":12125,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1370:19:86","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":12126,"nodeType":"InheritanceSpecifier","src":"1370:19:86"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":12124,"nodeType":"StructuredDocumentation","src":"1165:170:86","text":" @title LidoWrapping\n @notice Allows users to wrap and unwrap stETH\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":12466,"linearizedBaseContracts":[12466,12114,8793],"name":"LidoWrapping","nodeType":"ContractDefinition","nodes":[{"id":12129,"libraryName":{"id":12127,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1402:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1396:34:86","typeName":{"id":12128,"name":"address","nodeType":"ElementaryTypeName","src":"1414:15:86","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":12132,"libraryName":{"id":12130,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1441:9:86","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1435:27:86","typeName":{"id":12131,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1455:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"constant":false,"id":12134,"mutability":"immutable","name":"_stETH","nodeType":"VariableDeclaration","scope":12466,"src":"1468:31:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"},"typeName":{"id":12133,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2843,"src":"1468:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"visibility":"private"},{"constant":false,"id":12136,"mutability":"immutable","name":"_wstETH","nodeType":"VariableDeclaration","scope":12466,"src":"1505:33:86","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"},"typeName":{"id":12135,"name":"IwstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2900,"src":"1505:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"visibility":"private"},{"body":{"id":12171,"nodeType":"Block","src":"1739:218:86","statements":[{"expression":{"id":12160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12142,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12134,"src":"1831:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"id":12147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12143,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12139,"src":"1840:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":12145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1857:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12144,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1850:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1850:9:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1840:19:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"hexValue":"30","id":12157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1904:1:86","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":12156,"name":"IstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"1897:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IstETH_$2843_$","typeString":"type(contract IstETH)"}},"id":12158,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1897:9:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"id":12159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1840:66:86","trueExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":12151,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12139,"src":"1878:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":12150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1870:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12149,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:86","typeDescriptions":{}}},"id":12152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1870:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12148,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"1862:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$2900_$","typeString":"type(contract IwstETH)"}},"id":12153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1862:24:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"id":12154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"stETH","nodeType":"MemberAccess","referencedDeclaration":2855,"src":"1862:30:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$_t_contract$_IstETH_$2843_$","typeString":"function () external returns (contract IstETH)"}},"id":12155,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1862:32:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"src":"1831:75:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"id":12161,"nodeType":"ExpressionStatement","src":"1831:75:86"},{"expression":{"id":12169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12162,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"1916:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":12166,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12139,"src":"1942:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":12165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1934:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12164,"name":"address","nodeType":"ElementaryTypeName","src":"1934:7:86","typeDescriptions":{}}},"id":12167,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1934:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12163,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"1926:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$2900_$","typeString":"type(contract IwstETH)"}},"id":12168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1926:24:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"src":"1916:34:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"id":12170,"nodeType":"ExpressionStatement","src":"1916:34:86"}]},"documentation":{"id":12137,"nodeType":"StructuredDocumentation","src":"1545:162:86","text":" @dev The zero address may be passed as wstETH to safely disable this module\n @param wstETH - the address of Lido's wrapped stETH contract"},"id":12172,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":12140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12139,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":12172,"src":"1724:13:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":12138,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1724:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1723:15:86"},"returnParameters":{"id":12141,"nodeType":"ParameterList","parameters":[],"src":"1739:0:86"},"scope":12466,"src":"1712:245:86","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":12262,"nodeType":"Block","src":"2113:808:86","statements":[{"condition":{"arguments":[{"id":12184,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"2147:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12183,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2127:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2127:27:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12193,"nodeType":"IfStatement","src":"2123:100:86","trueBody":{"id":12192,"nodeType":"Block","src":"2156:67:86","statements":[{"expression":{"id":12190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12186,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"2170:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12188,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"2205:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12187,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"2179:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2179:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2170:42:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12191,"nodeType":"ExpressionStatement","src":"2170:42:86"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12194,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"2408:6:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12197,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2426:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2418:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12195,"name":"address","nodeType":"ElementaryTypeName","src":"2418:7:86","typeDescriptions":{}}},"id":12198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2418:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2408:23:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12215,"nodeType":"IfStatement","src":"2404:151:86","trueBody":{"id":12214,"nodeType":"Block","src":"2433:122:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12201,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"2455:6:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12202,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2465:3:86","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2465:10:86","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2455:20:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2477:18:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12200,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2447:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2447:49:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12207,"nodeType":"ExpressionStatement","src":"2447:49:86"},{"expression":{"arguments":[{"id":12209,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12174,"src":"2521:6:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12210,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12134,"src":"2529:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},{"id":12211,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"2537:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12208,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"2510:10:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":12212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2510:34:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12213,"nodeType":"ExpressionStatement","src":"2510:34:86"}]}},{"expression":{"arguments":[{"arguments":[{"id":12222,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"2600:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}],"id":12221,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2592:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12220,"name":"address","nodeType":"ElementaryTypeName","src":"2592:7:86","typeDescriptions":{}}},"id":12223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2592:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12224,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"2610:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12217,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12134,"src":"2572:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}],"id":12216,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2565:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2565:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"2565:26:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2565:52:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12226,"nodeType":"ExpressionStatement","src":"2565:52:86"},{"assignments":[12228],"declarations":[{"constant":false,"id":12228,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":12262,"src":"2627:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12227,"name":"uint256","nodeType":"ElementaryTypeName","src":"2627:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12235,"initialValue":{"arguments":[{"id":12233,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12178,"src":"2666:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12230,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"2652:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}],"id":12229,"name":"IwstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2900,"src":"2644:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IwstETH_$2900_$","typeString":"type(contract IwstETH)"}},"id":12231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2644:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"id":12232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"wrap","nodeType":"MemberAccess","referencedDeclaration":2863,"src":"2644:21:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":12234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2644:29:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2627:46:86"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12236,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"2688:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12239,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2709:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2701:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12237,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:86","typeDescriptions":{}}},"id":12240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2701:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2688:26:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12251,"nodeType":"IfStatement","src":"2684:104:86","trueBody":{"id":12250,"nodeType":"Block","src":"2716:72:86","statements":[{"expression":{"arguments":[{"id":12246,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12176,"src":"2759:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12247,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12228,"src":"2770:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12243,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"2737:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}],"id":12242,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2730:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2730:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"2730:28:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2730:47:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12249,"nodeType":"ExpressionStatement","src":"2730:47:86"}]}},{"condition":{"arguments":[{"id":12253,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12180,"src":"2822:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12252,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2802:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2802:36:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12261,"nodeType":"IfStatement","src":"2798:117:86","trueBody":{"id":12260,"nodeType":"Block","src":"2840:75:86","statements":[{"expression":{"arguments":[{"id":12256,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12180,"src":"2880:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12257,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12228,"src":"2897:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12255,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"2854:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2854:50:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12259,"nodeType":"ExpressionStatement","src":"2854:50:86"}]}}]},"functionSelector":"1c982441","id":12263,"implemented":true,"kind":"function","modifiers":[],"name":"wrapStETH","nodeType":"FunctionDefinition","parameters":{"id":12181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12174,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12263,"src":"1991:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12173,"name":"address","nodeType":"ElementaryTypeName","src":"1991:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12176,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12263,"src":"2015:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12175,"name":"address","nodeType":"ElementaryTypeName","src":"2015:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12178,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12263,"src":"2042:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12177,"name":"uint256","nodeType":"ElementaryTypeName","src":"2042:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12180,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12263,"src":"2066:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12179,"name":"uint256","nodeType":"ElementaryTypeName","src":"2066:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1981:114:86"},"returnParameters":{"id":12182,"nodeType":"ParameterList","parameters":[],"src":"2113:0:86"},"scope":12466,"src":"1963:958:86","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12340,"nodeType":"Block","src":"3080:836:86","statements":[{"condition":{"arguments":[{"id":12275,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12269,"src":"3114:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12274,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3094:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3094:27:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12284,"nodeType":"IfStatement","src":"3090:100:86","trueBody":{"id":12283,"nodeType":"Block","src":"3123:67:86","statements":[{"expression":{"id":12281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12277,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12269,"src":"3137:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12279,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12269,"src":"3172:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12278,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"3146:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3146:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3137:42:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12282,"nodeType":"ExpressionStatement","src":"3137:42:86"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12285,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12265,"src":"3377:6:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12288,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3395:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12287,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3387:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12286,"name":"address","nodeType":"ElementaryTypeName","src":"3387:7:86","typeDescriptions":{}}},"id":12289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3387:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3377:23:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12306,"nodeType":"IfStatement","src":"3373:152:86","trueBody":{"id":12305,"nodeType":"Block","src":"3402:123:86","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12292,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12265,"src":"3424:6:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12293,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3434:3:86","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3434:10:86","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3424:20:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3446:18:86","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12291,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3416:7:86","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3416:49:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12298,"nodeType":"ExpressionStatement","src":"3416:49:86"},{"expression":{"arguments":[{"id":12300,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12265,"src":"3490:6:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12301,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"3498:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},{"id":12302,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12269,"src":"3507:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12299,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3479:10:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":12303,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3479:35:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12304,"nodeType":"ExpressionStatement","src":"3479:35:86"}]}},{"assignments":[12308],"declarations":[{"constant":false,"id":12308,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":12340,"src":"3630:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12307,"name":"uint256","nodeType":"ElementaryTypeName","src":"3630:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12313,"initialValue":{"arguments":[{"id":12311,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12269,"src":"3662:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12309,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"3647:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"id":12310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unwrap","nodeType":"MemberAccess","referencedDeclaration":2871,"src":"3647:14:86","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) external returns (uint256)"}},"id":12312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3647:22:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3630:39:86"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12314,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"3684:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12317,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3705:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3697:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12315,"name":"address","nodeType":"ElementaryTypeName","src":"3697:7:86","typeDescriptions":{}}},"id":12318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3697:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3684:26:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12329,"nodeType":"IfStatement","src":"3680:103:86","trueBody":{"id":12328,"nodeType":"Block","src":"3712:71:86","statements":[{"expression":{"arguments":[{"id":12324,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12267,"src":"3754:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12325,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"3765:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12321,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12134,"src":"3733:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}],"id":12320,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"3726:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3726:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"3726:27:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3726:46:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12327,"nodeType":"ExpressionStatement","src":"3726:46:86"}]}},{"condition":{"arguments":[{"id":12331,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"3817:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12330,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3797:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3797:36:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12339,"nodeType":"IfStatement","src":"3793:117:86","trueBody":{"id":12338,"nodeType":"Block","src":"3835:75:86","statements":[{"expression":{"arguments":[{"id":12334,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12271,"src":"3875:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12335,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12308,"src":"3892:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12333,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3849:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3849:50:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12337,"nodeType":"ExpressionStatement","src":"3849:50:86"}]}}]},"functionSelector":"db4c0e91","id":12341,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapWstETH","nodeType":"FunctionDefinition","parameters":{"id":12272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12265,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12341,"src":"2958:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12264,"name":"address","nodeType":"ElementaryTypeName","src":"2958:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12267,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12341,"src":"2982:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12266,"name":"address","nodeType":"ElementaryTypeName","src":"2982:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12269,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12341,"src":"3009:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12268,"name":"uint256","nodeType":"ElementaryTypeName","src":"3009:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12271,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12341,"src":"3033:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12270,"name":"uint256","nodeType":"ElementaryTypeName","src":"3033:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2948:114:86"},"returnParameters":{"id":12273,"nodeType":"ParameterList","parameters":[],"src":"3080:0:86"},"scope":12466,"src":"2927:989:86","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12399,"nodeType":"Block","src":"4047:429:86","statements":[{"condition":{"arguments":[{"id":12351,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"4081:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12350,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"4061:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4061:27:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12360,"nodeType":"IfStatement","src":"4057:100:86","trueBody":{"id":12359,"nodeType":"Block","src":"4090:67:86","statements":[{"expression":{"id":12357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12353,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"4104:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12355,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"4139:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12354,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"4113:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4113:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4104:42:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12358,"nodeType":"ExpressionStatement","src":"4104:42:86"}]}},{"assignments":[12362],"declarations":[{"constant":false,"id":12362,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":12399,"src":"4167:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12361,"name":"uint256","nodeType":"ElementaryTypeName","src":"4167:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12372,"initialValue":{"arguments":[{"arguments":[{"id":12369,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4223:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4215:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12367,"name":"address","nodeType":"ElementaryTypeName","src":"4215:7:86","typeDescriptions":{}}},"id":12370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4215:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12363,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12134,"src":"4184:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"id":12364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"submit","nodeType":"MemberAccess","referencedDeclaration":2842,"src":"4184:13:86","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$","typeString":"function (address) payable external returns (uint256)"}},"id":12366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":12365,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12345,"src":"4206:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4184:30:86","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$value","typeString":"function (address) payable external returns (uint256)"}},"id":12371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4184:45:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4167:62:86"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12373,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"4244:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12376,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4265:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4257:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12374,"name":"address","nodeType":"ElementaryTypeName","src":"4257:7:86","typeDescriptions":{}}},"id":12377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4257:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4244:26:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12388,"nodeType":"IfStatement","src":"4240:103:86","trueBody":{"id":12387,"nodeType":"Block","src":"4272:71:86","statements":[{"expression":{"arguments":[{"id":12383,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12343,"src":"4314:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12384,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"4325:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12380,"name":"_stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12134,"src":"4293:6:86","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}],"id":12379,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"4286:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4286:14:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"4286:27:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4286:46:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12386,"nodeType":"ExpressionStatement","src":"4286:46:86"}]}},{"condition":{"arguments":[{"id":12390,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"4377:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12389,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"4357:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4357:36:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12398,"nodeType":"IfStatement","src":"4353:117:86","trueBody":{"id":12397,"nodeType":"Block","src":"4395:75:86","statements":[{"expression":{"arguments":[{"id":12393,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12347,"src":"4435:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12394,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12362,"src":"4452:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12392,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"4409:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4409:50:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12396,"nodeType":"ExpressionStatement","src":"4409:50:86"}]}}]},"functionSelector":"2cbec84e","id":12400,"implemented":true,"kind":"function","modifiers":[],"name":"stakeETH","nodeType":"FunctionDefinition","parameters":{"id":12348,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12343,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12400,"src":"3949:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12342,"name":"address","nodeType":"ElementaryTypeName","src":"3949:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12345,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12400,"src":"3976:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12344,"name":"uint256","nodeType":"ElementaryTypeName","src":"3976:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12347,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12400,"src":"4000:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12346,"name":"uint256","nodeType":"ElementaryTypeName","src":"4000:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3939:90:86"},"returnParameters":{"id":12349,"nodeType":"ParameterList","parameters":[],"src":"4047:0:86"},"scope":12466,"src":"3922:554:86","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12464,"nodeType":"Block","src":"4614:1020:86","statements":[{"condition":{"arguments":[{"id":12410,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12404,"src":"4648:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12409,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"4628:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4628:27:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12419,"nodeType":"IfStatement","src":"4624:100:86","trueBody":{"id":12418,"nodeType":"Block","src":"4657:67:86","statements":[{"expression":{"id":12416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12412,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12404,"src":"4671:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12414,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12404,"src":"4706:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12413,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"4680:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4680:33:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4671:42:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12417,"nodeType":"ExpressionStatement","src":"4671:42:86"}]}},{"assignments":[12421],"declarations":[{"constant":false,"id":12421,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":12464,"src":"4844:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12420,"name":"uint256","nodeType":"ElementaryTypeName","src":"4844:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12426,"initialValue":{"arguments":[{"id":12424,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12404,"src":"4886:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12422,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"4861:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"id":12423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getWstETHByStETH","nodeType":"MemberAccess","referencedDeclaration":2879,"src":"4861:24:86","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":12425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4861:32:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4844:49:86"},{"expression":{"arguments":[{"id":12435,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12404,"src":"5379:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"id":12431,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"5359:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}],"id":12430,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5351:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12429,"name":"address","nodeType":"ElementaryTypeName","src":"5351:7:86","typeDescriptions":{}}},"id":12432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5351:16:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12428,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5343:8:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":12427,"name":"address","nodeType":"ElementaryTypeName","src":"5343:8:86","stateMutability":"payable","typeDescriptions":{}}},"id":12433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:25:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":12434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendValue","nodeType":"MemberAccess","referencedDeclaration":6919,"src":"5343:35:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$bound_to$_t_address_payable_$","typeString":"function (address payable,uint256)"}},"id":12436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5343:43:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12437,"nodeType":"ExpressionStatement","src":"5343:43:86"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12438,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12402,"src":"5401:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12441,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5422:4:86","typeDescriptions":{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LidoWrapping_$12466","typeString":"contract LidoWrapping"}],"id":12440,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5414:7:86","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12439,"name":"address","nodeType":"ElementaryTypeName","src":"5414:7:86","typeDescriptions":{}}},"id":12442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5414:13:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5401:26:86","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12453,"nodeType":"IfStatement","src":"5397:104:86","trueBody":{"id":12452,"nodeType":"Block","src":"5429:72:86","statements":[{"expression":{"arguments":[{"id":12448,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12402,"src":"5472:9:86","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12449,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12421,"src":"5483:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12445,"name":"_wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12136,"src":"5450:7:86","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}],"id":12444,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"5443:6:86","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5443:15:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"5443:28:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5443:47:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12451,"nodeType":"ExpressionStatement","src":"5443:47:86"}]}},{"condition":{"arguments":[{"id":12455,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"5535:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12454,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"5515:19:86","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5515:36:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12463,"nodeType":"IfStatement","src":"5511:117:86","trueBody":{"id":12462,"nodeType":"Block","src":"5553:75:86","statements":[{"expression":{"arguments":[{"id":12458,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12406,"src":"5593:15:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12459,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12421,"src":"5610:6:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12457,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"5567:25:86","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5567:50:86","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12461,"nodeType":"ExpressionStatement","src":"5567:50:86"}]}}]},"functionSelector":"1089e5e3","id":12465,"implemented":true,"kind":"function","modifiers":[],"name":"stakeETHAndWrap","nodeType":"FunctionDefinition","parameters":{"id":12407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12402,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12465,"src":"4516:17:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12401,"name":"address","nodeType":"ElementaryTypeName","src":"4516:7:86","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12404,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12465,"src":"4543:14:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12403,"name":"uint256","nodeType":"ElementaryTypeName","src":"4543:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12406,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12465,"src":"4567:23:86","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12405,"name":"uint256","nodeType":"ElementaryTypeName","src":"4567:7:86","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4506:90:86"},"returnParameters":{"id":12408,"nodeType":"ParameterList","parameters":[],"src":"4614:0:86"},"scope":12466,"src":"4482:1152:86","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":12467,"src":"1336:4300:86"}],"src":"688:4949:86"},"id":86},"contracts/relayer/ReaperWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/ReaperWrapping.sol","exportedSymbols":{"ReaperWrapping":[12670]},"id":12671,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12468,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:87"},{"id":12469,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:87"},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":12470,"nodeType":"ImportDirective","scope":12671,"sourceUnit":7030,"src":"747:77:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":12471,"nodeType":"ImportDirective","scope":12671,"sourceUnit":8496,"src":"825:79:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol","id":12472,"nodeType":"ImportDirective","scope":12671,"sourceUnit":796,"src":"906:82:87","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":12473,"nodeType":"ImportDirective","scope":12671,"sourceUnit":12115,"src":"990:35:87","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":12475,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1292:19:87","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":12476,"nodeType":"InheritanceSpecifier","src":"1292:19:87"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":12474,"nodeType":"StructuredDocumentation","src":"1027:228:87","text":" @title ReaperWrapping\n @notice Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\n @dev All functions must be payable so that it can be called as part of a multicall involving ETH"},"fullyImplemented":false,"id":12670,"linearizedBaseContracts":[12670,12114,8793],"name":"ReaperWrapping","nodeType":"ContractDefinition","nodes":[{"id":12479,"libraryName":{"id":12477,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1324:7:87","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1318:34:87","typeName":{"id":12478,"name":"address","nodeType":"ElementaryTypeName","src":"1336:15:87","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":12482,"libraryName":{"id":12480,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1363:9:87","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1357:27:87","typeName":{"id":12481,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1377:6:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"body":{"id":12569,"nodeType":"Block","src":"1591:1024:87","statements":[{"condition":{"arguments":[{"id":12496,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"1625:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12495,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"1605:19:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1605:27:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12505,"nodeType":"IfStatement","src":"1601:100:87","trueBody":{"id":12504,"nodeType":"Block","src":"1634:67:87","statements":[{"expression":{"id":12502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12498,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"1648:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12500,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"1683:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12499,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"1657:25:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1657:33:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1648:42:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12503,"nodeType":"ExpressionStatement","src":"1648:42:87"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12506,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12486,"src":"1892:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12509,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1910:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}],"id":12508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1902:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12507,"name":"address","nodeType":"ElementaryTypeName","src":"1902:7:87","typeDescriptions":{}}},"id":12510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1902:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1892:23:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12527,"nodeType":"IfStatement","src":"1888:155:87","trueBody":{"id":12526,"nodeType":"Block","src":"1917:126:87","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12513,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12486,"src":"1939:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12514,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1949:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1949:10:87","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1939:20:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1961:18:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12512,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1931:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1931:49:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12519,"nodeType":"ExpressionStatement","src":"1931:49:87"},{"expression":{"arguments":[{"id":12521,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12486,"src":"2005:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12522,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12484,"src":"2013:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},{"id":12523,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"2025:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12520,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"1994:10:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":12524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1994:38:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12525,"nodeType":"ExpressionStatement","src":"1994:38:87"}]}},{"assignments":[12529],"declarations":[{"constant":false,"id":12529,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":12569,"src":"2053:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":12528,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2053:6:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12535,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12531,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12484,"src":"2085:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"id":12532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":770,"src":"2085:16:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2085:18:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12530,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2078:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2078:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2053:51:87"},{"expression":{"arguments":[{"id":12539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12490,"src":"2199:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12536,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12484,"src":"2179:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"id":12538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":788,"src":"2179:19:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":12540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2179:27:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12541,"nodeType":"ExpressionStatement","src":"2179:27:87"},{"assignments":[12543],"declarations":[{"constant":false,"id":12543,"mutability":"mutable","name":"withdrawnAmount","nodeType":"VariableDeclaration","scope":12569,"src":"2295:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12542,"name":"uint256","nodeType":"ElementaryTypeName","src":"2295:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12551,"initialValue":{"arguments":[{"arguments":[{"id":12548,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2355:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}],"id":12547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2347:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12546,"name":"address","nodeType":"ElementaryTypeName","src":"2347:7:87","typeDescriptions":{}}},"id":12549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2347:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12544,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12529,"src":"2321:15:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"2321:25:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2321:40:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2295:66:87"},{"expression":{"arguments":[{"id":12555,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12488,"src":"2445:9:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12556,"name":"withdrawnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"2456:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12552,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12529,"src":"2416:15:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"2416:28:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2416:56:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12558,"nodeType":"ExpressionStatement","src":"2416:56:87"},{"condition":{"arguments":[{"id":12560,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12492,"src":"2507:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12559,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2487:19:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2487:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12568,"nodeType":"IfStatement","src":"2483:126:87","trueBody":{"id":12567,"nodeType":"Block","src":"2525:84:87","statements":[{"expression":{"arguments":[{"id":12563,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12492,"src":"2565:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12564,"name":"withdrawnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12543,"src":"2582:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12562,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"2539:25:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2539:59:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12566,"nodeType":"ExpressionStatement","src":"2539:59:87"}]}}]},"functionSelector":"d293f290","id":12570,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapReaperVaultToken","nodeType":"FunctionDefinition","parameters":{"id":12493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12484,"mutability":"mutable","name":"vaultToken","nodeType":"VariableDeclaration","scope":12570,"src":"1431:28:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"},"typeName":{"id":12483,"name":"IReaperTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":795,"src":"1431:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"visibility":"internal"},{"constant":false,"id":12486,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12570,"src":"1469:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12485,"name":"address","nodeType":"ElementaryTypeName","src":"1469:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12488,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12570,"src":"1493:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12487,"name":"address","nodeType":"ElementaryTypeName","src":"1493:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12490,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12570,"src":"1520:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12489,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12492,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12570,"src":"1544:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12491,"name":"uint256","nodeType":"ElementaryTypeName","src":"1544:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1421:152:87"},"returnParameters":{"id":12494,"nodeType":"ParameterList","parameters":[],"src":"1591:0:87"},"scope":12670,"src":"1390:1225:87","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12668,"nodeType":"Block","src":"2820:1127:87","statements":[{"condition":{"arguments":[{"id":12584,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"2854:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12583,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2834:19:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2834:27:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12593,"nodeType":"IfStatement","src":"2830:100:87","trueBody":{"id":12592,"nodeType":"Block","src":"2863:67:87","statements":[{"expression":{"id":12590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12586,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"2877:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12588,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"2912:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12587,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"2886:25:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2886:33:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2877:42:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12591,"nodeType":"ExpressionStatement","src":"2877:42:87"}]}},{"assignments":[12595],"declarations":[{"constant":false,"id":12595,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":12668,"src":"2940:22:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":12594,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2940:6:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12601,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12597,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"2972:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"id":12598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token","nodeType":"MemberAccess","referencedDeclaration":770,"src":"2972:16:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2972:18:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12596,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2965:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2965:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2940:51:87"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12602,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3181:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12605,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3199:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}],"id":12604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3191:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12603,"name":"address","nodeType":"ElementaryTypeName","src":"3191:7:87","typeDescriptions":{}}},"id":12606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3191:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3181:23:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12623,"nodeType":"IfStatement","src":"3177:160:87","trueBody":{"id":12622,"nodeType":"Block","src":"3206:131:87","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12609,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3228:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12610,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3238:3:87","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3238:10:87","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3228:20:87","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12613,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3250:18:87","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12608,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3220:7:87","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3220:49:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12615,"nodeType":"ExpressionStatement","src":"3220:49:87"},{"expression":{"arguments":[{"id":12617,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12574,"src":"3294:6:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12618,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12595,"src":"3302:15:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":12619,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"3319:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12616,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"3283:10:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":12620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3283:43:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12621,"nodeType":"ExpressionStatement","src":"3283:43:87"}]}},{"expression":{"arguments":[{"arguments":[{"id":12629,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"3460:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}],"id":12628,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3452:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12627,"name":"address","nodeType":"ElementaryTypeName","src":"3452:7:87","typeDescriptions":{}}},"id":12630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3452:19:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12631,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"3473:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12624,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12595,"src":"3424:15:87","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"3424:27:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3424:56:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12633,"nodeType":"ExpressionStatement","src":"3424:56:87"},{"expression":{"arguments":[{"id":12637,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12578,"src":"3555:6:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12634,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"3536:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"id":12636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":782,"src":"3536:18:87","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":12638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3536:26:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12639,"nodeType":"ExpressionStatement","src":"3536:26:87"},{"assignments":[12641],"declarations":[{"constant":false,"id":12641,"mutability":"mutable","name":"sharesGained","nodeType":"VariableDeclaration","scope":12668,"src":"3638:20:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12640,"name":"uint256","nodeType":"ElementaryTypeName","src":"3638:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12649,"initialValue":{"arguments":[{"arguments":[{"id":12646,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3690:4:87","typeDescriptions":{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ReaperWrapping_$12670","typeString":"contract ReaperWrapping"}],"id":12645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3682:7:87","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12644,"name":"address","nodeType":"ElementaryTypeName","src":"3682:7:87","typeDescriptions":{}}},"id":12647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3682:13:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":12642,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"3661:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"id":12643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"3661:20:87","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":12648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3661:35:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3638:58:87"},{"expression":{"arguments":[{"id":12654,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12576,"src":"3783:9:87","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12655,"name":"sharesGained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12641,"src":"3794:12:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":12651,"name":"vaultToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12572,"src":"3758:10:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}],"id":12650,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"3751:6:87","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3751:18:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"3751:31:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3751:56:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12657,"nodeType":"ExpressionStatement","src":"3751:56:87"},{"condition":{"arguments":[{"id":12659,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12580,"src":"3842:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12658,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3822:19:87","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3822:36:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12667,"nodeType":"IfStatement","src":"3818:123:87","trueBody":{"id":12666,"nodeType":"Block","src":"3860:81:87","statements":[{"expression":{"arguments":[{"id":12662,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12580,"src":"3900:15:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12663,"name":"sharesGained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12641,"src":"3917:12:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12661,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3874:25:87","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3874:56:87","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12665,"nodeType":"ExpressionStatement","src":"3874:56:87"}]}}]},"functionSelector":"e8210e3c","id":12669,"implemented":true,"kind":"function","modifiers":[],"name":"wrapReaperVaultToken","nodeType":"FunctionDefinition","parameters":{"id":12581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12572,"mutability":"mutable","name":"vaultToken","nodeType":"VariableDeclaration","scope":12669,"src":"2660:28:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"},"typeName":{"id":12571,"name":"IReaperTokenVault","nodeType":"UserDefinedTypeName","referencedDeclaration":795,"src":"2660:17:87","typeDescriptions":{"typeIdentifier":"t_contract$_IReaperTokenVault_$795","typeString":"contract IReaperTokenVault"}},"visibility":"internal"},{"constant":false,"id":12574,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12669,"src":"2698:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12573,"name":"address","nodeType":"ElementaryTypeName","src":"2698:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12576,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12669,"src":"2722:17:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12575,"name":"address","nodeType":"ElementaryTypeName","src":"2722:7:87","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12578,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12669,"src":"2749:14:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12577,"name":"uint256","nodeType":"ElementaryTypeName","src":"2749:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12580,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12669,"src":"2773:23:87","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12579,"name":"uint256","nodeType":"ElementaryTypeName","src":"2773:7:87","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2650:152:87"},"returnParameters":{"id":12582,"nodeType":"ParameterList","parameters":[],"src":"2820:0:87"},"scope":12670,"src":"2621:1326:87","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":12671,"src":"1256:2693:87"}],"src":"688:3262:87"},"id":87},"contracts/relayer/UnbuttonWrapping.sol":{"ast":{"absolutePath":"contracts/relayer/UnbuttonWrapping.sol","exportedSymbols":{"UnbuttonWrapping":[12838]},"id":12839,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12672,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:88"},{"id":12673,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:88"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol","id":12674,"nodeType":"ImportDirective","scope":12839,"sourceUnit":2091,"src":"747:87:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol","id":12675,"nodeType":"ImportDirective","scope":12839,"sourceUnit":805,"src":"835:79:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol","id":12676,"nodeType":"ImportDirective","scope":12839,"sourceUnit":7030,"src":"916:77:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":12677,"nodeType":"ImportDirective","scope":12839,"sourceUnit":8496,"src":"994:79:88","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":12678,"nodeType":"ImportDirective","scope":12839,"sourceUnit":12115,"src":"1075:35:88","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":12680,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1754:19:88","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":12681,"nodeType":"InheritanceSpecifier","src":"1754:19:88"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":12679,"nodeType":"StructuredDocumentation","src":"1112:603:88","text":" @title UnbuttonWrapping\n @author @aalavandhan1984 (eng@fragments.org)\n @notice Allows users to wrap and unwrap any rebasing elastic balance token into a\n a non-rebasing static balance version using the Unbutton wrapper.\n @dev All functions must be payable so that it can be called as part of a multicall involving ETH.\n The rebasing token to be wrapped is called the \"underlying\" token.\n The wrapped non-rebasing token is called the \"wrapped\" token.\n Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol"},"fullyImplemented":false,"id":12838,"linearizedBaseContracts":[12838,12114,8793],"name":"UnbuttonWrapping","nodeType":"ContractDefinition","nodes":[{"id":12684,"libraryName":{"id":12682,"name":"Address","nodeType":"UserDefinedTypeName","referencedDeclaration":7029,"src":"1786:7:88","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$7029","typeString":"library Address"}},"nodeType":"UsingForDirective","src":"1780:34:88","typeName":{"id":12683,"name":"address","nodeType":"ElementaryTypeName","src":"1798:15:88","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}},{"id":12687,"libraryName":{"id":12685,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1825:9:88","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1819:27:88","typeName":{"id":12686,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1839:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"body":{"id":12770,"nodeType":"Block","src":"2338:809:88","statements":[{"condition":{"arguments":[{"id":12702,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"2372:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12701,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2352:19:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2352:28:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12711,"nodeType":"IfStatement","src":"2348:103:88","trueBody":{"id":12710,"nodeType":"Block","src":"2382:69:88","statements":[{"expression":{"id":12708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12704,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"2396:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12706,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"2432:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12705,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"2406:25:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2406:34:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2396:44:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12709,"nodeType":"ExpressionStatement","src":"2396:44:88"}]}},{"assignments":[12713],"declarations":[{"constant":false,"id":12713,"mutability":"mutable","name":"underlyingToken","nodeType":"VariableDeclaration","scope":12770,"src":"2461:22:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":12712,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2461:6:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":12719,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":12715,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2493:12:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}},"id":12716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"underlying","nodeType":"MemberAccess","referencedDeclaration":728,"src":"2493:23:88","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":12717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2493:25:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":12714,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2486:6:88","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":12718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2486:33:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"2461:58:88"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12720,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"2709:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12723,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2727:4:88","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$12838","typeString":"contract UnbuttonWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UnbuttonWrapping_$12838","typeString":"contract UnbuttonWrapping"}],"id":12722,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2719:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12721,"name":"address","nodeType":"ElementaryTypeName","src":"2719:7:88","typeDescriptions":{}}},"id":12724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2719:13:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2709:23:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12741,"nodeType":"IfStatement","src":"2705:161:88","trueBody":{"id":12740,"nodeType":"Block","src":"2734:132:88","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12727,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"2756:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12728,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2766:3:88","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2766:10:88","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2756:20:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2778:18:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12726,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2748:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2748:49:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12733,"nodeType":"ExpressionStatement","src":"2748:49:88"},{"expression":{"arguments":[{"id":12735,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12692,"src":"2822:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12736,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12713,"src":"2830:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":12737,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"2847:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12734,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"2811:10:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":12738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2811:44:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12739,"nodeType":"ExpressionStatement","src":"2811:44:88"}]}},{"expression":{"arguments":[{"arguments":[{"id":12747,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2912:12:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}],"id":12746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2904:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12745,"name":"address","nodeType":"ElementaryTypeName","src":"2904:7:88","typeDescriptions":{}}},"id":12748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2904:21:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12749,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"2927:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12742,"name":"underlyingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12713,"src":"2876:15:88","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":12744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8405,"src":"2876:27:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":12750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2876:59:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12751,"nodeType":"ExpressionStatement","src":"2876:59:88"},{"assignments":[12753],"declarations":[{"constant":false,"id":12753,"mutability":"mutable","name":"mintAmount","nodeType":"VariableDeclaration","scope":12770,"src":"2945:18:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12752,"name":"uint256","nodeType":"ElementaryTypeName","src":"2945:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12759,"initialValue":{"arguments":[{"id":12756,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12694,"src":"2990:9:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12757,"name":"uAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12696,"src":"3001:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12754,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12690,"src":"2966:12:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}},"id":12755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"depositFor","nodeType":"MemberAccess","referencedDeclaration":690,"src":"2966:23:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":12758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2966:43:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2945:64:88"},{"condition":{"arguments":[{"id":12761,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"3044:15:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12760,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3024:19:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3024:36:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12769,"nodeType":"IfStatement","src":"3020:121:88","trueBody":{"id":12768,"nodeType":"Block","src":"3062:79:88","statements":[{"expression":{"arguments":[{"id":12764,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12698,"src":"3102:15:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12765,"name":"mintAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12753,"src":"3119:10:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12763,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3076:25:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3076:54:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12767,"nodeType":"ExpressionStatement","src":"3076:54:88"}]}}]},"documentation":{"id":12688,"nodeType":"StructuredDocumentation","src":"1852:285:88","text":"@param wrapperToken The address of the wrapper.\n @param sender The address of sender.\n @param sender The address of recepient.\n @param uAmount The underling token amount to be deposited into the wrapper.\n @param outputReference Chained output reference."},"functionSelector":"abf6d399","id":12771,"implemented":true,"kind":"function","modifiers":[],"name":"wrapUnbuttonToken","nodeType":"FunctionDefinition","parameters":{"id":12699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12690,"mutability":"mutable","name":"wrapperToken","nodeType":"VariableDeclaration","scope":12771,"src":"2178:27:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"},"typeName":{"id":12689,"name":"IUnbuttonToken","nodeType":"UserDefinedTypeName","referencedDeclaration":804,"src":"2178:14:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}},"visibility":"internal"},{"constant":false,"id":12692,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12771,"src":"2215:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12691,"name":"address","nodeType":"ElementaryTypeName","src":"2215:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12694,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12771,"src":"2239:17:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12693,"name":"address","nodeType":"ElementaryTypeName","src":"2239:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12696,"mutability":"mutable","name":"uAmount","nodeType":"VariableDeclaration","scope":12771,"src":"2266:15:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12695,"name":"uint256","nodeType":"ElementaryTypeName","src":"2266:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12698,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12771,"src":"2291:23:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12697,"name":"uint256","nodeType":"ElementaryTypeName","src":"2291:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2168:152:88"},"returnParameters":{"id":12700,"nodeType":"ParameterList","parameters":[],"src":"2338:0:88"},"scope":12838,"src":"2142:1005:88","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":12836,"nodeType":"Block","src":"3642:676:88","statements":[{"condition":{"arguments":[{"id":12786,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12780,"src":"3676:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12785,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3656:19:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3656:27:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12795,"nodeType":"IfStatement","src":"3652:100:88","trueBody":{"id":12794,"nodeType":"Block","src":"3685:67:88","statements":[{"expression":{"id":12792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":12788,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12780,"src":"3699:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12790,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12780,"src":"3734:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12789,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"3708:25:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3708:33:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3699:42:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12793,"nodeType":"ExpressionStatement","src":"3699:42:88"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12796,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"3946:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":12799,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3964:4:88","typeDescriptions":{"typeIdentifier":"t_contract$_UnbuttonWrapping_$12838","typeString":"contract UnbuttonWrapping"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_UnbuttonWrapping_$12838","typeString":"contract UnbuttonWrapping"}],"id":12798,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3956:7:88","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12797,"name":"address","nodeType":"ElementaryTypeName","src":"3956:7:88","typeDescriptions":{}}},"id":12800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3956:13:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3946:23:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12817,"nodeType":"IfStatement","src":"3942:157:88","trueBody":{"id":12816,"nodeType":"Block","src":"3971:128:88","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12803,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"3993:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12804,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4003:3:88","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4003:10:88","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3993:20:88","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4015:18:88","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12802,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3985:7:88","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3985:49:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12809,"nodeType":"ExpressionStatement","src":"3985:49:88"},{"expression":{"arguments":[{"id":12811,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12776,"src":"4059:6:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12812,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12774,"src":"4067:12:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}},{"id":12813,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12780,"src":"4081:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12810,"name":"_pullToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12081,"src":"4048:10:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (address,contract IERC20,uint256)"}},"id":12814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4048:40:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12815,"nodeType":"ExpressionStatement","src":"4048:40:88"}]}},{"assignments":[12819],"declarations":[{"constant":false,"id":12819,"mutability":"mutable","name":"withdrawnUAmount","nodeType":"VariableDeclaration","scope":12836,"src":"4109:24:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12818,"name":"uint256","nodeType":"ElementaryTypeName","src":"4109:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12825,"initialValue":{"arguments":[{"id":12822,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12778,"src":"4156:9:88","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":12823,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12780,"src":"4167:6:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":12820,"name":"wrapperToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12774,"src":"4136:12:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}},"id":12821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burnTo","nodeType":"MemberAccess","referencedDeclaration":658,"src":"4136:19:88","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) external returns (uint256)"}},"id":12824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4136:38:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4109:65:88"},{"condition":{"arguments":[{"id":12827,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12782,"src":"4209:15:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12826,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"4189:19:88","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4189:36:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12835,"nodeType":"IfStatement","src":"4185:127:88","trueBody":{"id":12834,"nodeType":"Block","src":"4227:85:88","statements":[{"expression":{"arguments":[{"id":12830,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12782,"src":"4267:15:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12831,"name":"withdrawnUAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12819,"src":"4284:16:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12829,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"4241:25:88","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4241:60:88","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12833,"nodeType":"ExpressionStatement","src":"4241:60:88"}]}}]},"documentation":{"id":12772,"nodeType":"StructuredDocumentation","src":"3153:287:88","text":"@param wrapperToken The address of the wrapper.\n @param sender The address of sender.\n @param sender The address of recepient.\n @param amount The amount of wrapped tokens to be burnt for underlying tokens.\n @param outputReference Chained output reference."},"functionSelector":"611b90dd","id":12837,"implemented":true,"kind":"function","modifiers":[],"name":"unwrapUnbuttonToken","nodeType":"FunctionDefinition","parameters":{"id":12783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12774,"mutability":"mutable","name":"wrapperToken","nodeType":"VariableDeclaration","scope":12837,"src":"3483:27:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"},"typeName":{"id":12773,"name":"IUnbuttonToken","nodeType":"UserDefinedTypeName","referencedDeclaration":804,"src":"3483:14:88","typeDescriptions":{"typeIdentifier":"t_contract$_IUnbuttonToken_$804","typeString":"contract IUnbuttonToken"}},"visibility":"internal"},{"constant":false,"id":12776,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":12837,"src":"3520:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12775,"name":"address","nodeType":"ElementaryTypeName","src":"3520:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12778,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":12837,"src":"3544:17:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":12777,"name":"address","nodeType":"ElementaryTypeName","src":"3544:7:88","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":12780,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":12837,"src":"3571:14:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12779,"name":"uint256","nodeType":"ElementaryTypeName","src":"3571:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12782,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12837,"src":"3595:23:88","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12781,"name":"uint256","nodeType":"ElementaryTypeName","src":"3595:7:88","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3473:151:88"},"returnParameters":{"id":12784,"nodeType":"ParameterList","parameters":[],"src":"3642:0:88"},"scope":12838,"src":"3445:873:88","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":12839,"src":"1716:2604:88"}],"src":"688:3633:88"},"id":88},"contracts/relayer/VaultActions.sol":{"ast":{"absolutePath":"contracts/relayer/VaultActions.sol","exportedSymbols":{"VaultActions":[13728]},"id":13729,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":12840,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:89"},{"id":12841,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:89"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":12842,"nodeType":"ImportDirective","scope":13729,"sourceUnit":3618,"src":"747:65:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","id":12843,"nodeType":"ImportDirective","scope":13729,"sourceUnit":1299,"src":"813:87:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol","id":12844,"nodeType":"ImportDirective","scope":13729,"sourceUnit":4796,"src":"902:77:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol","id":12845,"nodeType":"ImportDirective","scope":13729,"sourceUnit":4916,"src":"980:77:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol","id":12846,"nodeType":"ImportDirective","scope":13729,"sourceUnit":6863,"src":"1058:66:89","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":12847,"nodeType":"ImportDirective","scope":13729,"sourceUnit":12115,"src":"1126:35:89","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":12849,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1580:19:89","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":12850,"nodeType":"InheritanceSpecifier","src":"1580:19:89"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":12848,"nodeType":"StructuredDocumentation","src":"1163:382:89","text":" @title VaultActions\n @notice Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\n @dev\n Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers\n from the Vault.\n All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":13728,"linearizedBaseContracts":[13728,12114,8793],"name":"VaultActions","nodeType":"ContractDefinition","nodes":[{"id":12853,"libraryName":{"id":12851,"name":"Math","nodeType":"UserDefinedTypeName","referencedDeclaration":6862,"src":"1612:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_Math_$6862","typeString":"library Math"}},"nodeType":"UsingForDirective","src":"1606:23:89","typeName":{"id":12852,"name":"uint256","nodeType":"ElementaryTypeName","src":"1621:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"VaultActions.OutputReference","id":12858,"members":[{"constant":false,"id":12855,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","scope":12858,"src":"1668:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12854,"name":"uint256","nodeType":"ElementaryTypeName","src":"1668:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12857,"mutability":"mutable","name":"key","nodeType":"VariableDeclaration","scope":12858,"src":"1691:11:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12856,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OutputReference","nodeType":"StructDefinition","scope":13728,"src":"1635:74:89","visibility":"public"},{"body":{"id":12928,"nodeType":"Block","src":"1948:470:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12874,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12862,"src":"1966:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":12875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3516,"src":"1966:12:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12876,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1982:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1982:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1966:26:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12885,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12879,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12862,"src":"1996:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":12880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3516,"src":"1996:12:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12883,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2020:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}],"id":12882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2012:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12881,"name":"address","nodeType":"ElementaryTypeName","src":"2012:7:89","typeDescriptions":{}}},"id":12884,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2012:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1996:29:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1966:59:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2027:18:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12873,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1958:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1958:88:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12889,"nodeType":"ExpressionStatement","src":"1958:88:89"},{"condition":{"arguments":[{"expression":{"id":12891,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12860,"src":"2081:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":12892,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3465,"src":"2081:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12890,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2061:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2061:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12904,"nodeType":"IfStatement","src":"2057:133:89","trueBody":{"id":12903,"nodeType":"Block","src":"2101:89:89","statements":[{"expression":{"id":12901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":12894,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12860,"src":"2115:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":12896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3465,"src":"2115:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":12898,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12860,"src":"2161:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},"id":12899,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3465,"src":"2161:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12897,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"2135:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2135:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2115:64:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12902,"nodeType":"ExpressionStatement","src":"2115:64:89"}]}},{"assignments":[12906],"declarations":[{"constant":false,"id":12906,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","scope":12928,"src":"2200:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12905,"name":"uint256","nodeType":"ElementaryTypeName","src":"2200:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12917,"initialValue":{"arguments":[{"id":12912,"name":"singleSwap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12860,"src":"2249:10:89","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"}},{"id":12913,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12862,"src":"2261:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},{"id":12914,"name":"limit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12864,"src":"2268:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12915,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12866,"src":"2275:8:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"},{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap memory"},{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":12907,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"2217:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":12908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":12909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":3455,"src":"2217:15:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_SingleSwap_$3468_memory_ptr_$_t_struct$_FundManagement_$3523_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)"}},"id":12911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":12910,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12868,"src":"2241:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2217:31:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_struct$_SingleSwap_$3468_memory_ptr_$_t_struct$_FundManagement_$3523_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$value","typeString":"function (struct IVault.SingleSwap memory,struct IVault.FundManagement memory,uint256,uint256) payable external returns (uint256)"}},"id":12916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2217:67:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2200:84:89"},{"condition":{"arguments":[{"id":12919,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12870,"src":"2319:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12918,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2299:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2299:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":12927,"nodeType":"IfStatement","src":"2295:117:89","trueBody":{"id":12926,"nodeType":"Block","src":"2337:75:89","statements":[{"expression":{"arguments":[{"id":12922,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12870,"src":"2377:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":12923,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12906,"src":"2394:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12921,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"2351:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":12924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2351:50:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12925,"nodeType":"ExpressionStatement","src":"2351:50:89"}]}}]},"functionSelector":"2e6272ea","id":12929,"implemented":true,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","parameters":{"id":12871,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12860,"mutability":"mutable","name":"singleSwap","nodeType":"VariableDeclaration","scope":12929,"src":"1738:35:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_memory_ptr","typeString":"struct IVault.SingleSwap"},"typeName":{"id":12859,"name":"IVault.SingleSwap","nodeType":"UserDefinedTypeName","referencedDeclaration":3468,"src":"1738:17:89","typeDescriptions":{"typeIdentifier":"t_struct$_SingleSwap_$3468_storage_ptr","typeString":"struct IVault.SingleSwap"}},"visibility":"internal"},{"constant":false,"id":12862,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":12929,"src":"1783:36:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":12861,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"1783:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":12864,"mutability":"mutable","name":"limit","nodeType":"VariableDeclaration","scope":12929,"src":"1829:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12863,"name":"uint256","nodeType":"ElementaryTypeName","src":"1829:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12866,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":12929,"src":"1852:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1852:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12868,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":12929,"src":"1878:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12867,"name":"uint256","nodeType":"ElementaryTypeName","src":"1878:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12870,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":12929,"src":"1901:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12869,"name":"uint256","nodeType":"ElementaryTypeName","src":"1901:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1728:202:89"},"returnParameters":{"id":12872,"nodeType":"ParameterList","parameters":[],"src":"1948:0:89"},"scope":13728,"src":"1715:703:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":13060,"nodeType":"Block","src":"2757:1192:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":12965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12953,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12939,"src":"2775:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":12954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3516,"src":"2775:12:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":12955,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2791:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":12956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2791:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2775:26:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":12964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":12958,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12939,"src":"2805:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},"id":12959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3516,"src":"2805:12:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":12962,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2829:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}],"id":12961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2821:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":12960,"name":"address","nodeType":"ElementaryTypeName","src":"2821:7:89","typeDescriptions":{}}},"id":12963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2821:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2805:29:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2775:59:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":12966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2836:18:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":12952,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2767:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":12967,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2767:88:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":12968,"nodeType":"ExpressionStatement","src":"2767:88:89"},{"body":{"id":13001,"nodeType":"Block","src":"2909:187:89","statements":[{"assignments":[12981],"declarations":[{"constant":false,"id":12981,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13001,"src":"2923:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12980,"name":"uint256","nodeType":"ElementaryTypeName","src":"2923:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12986,"initialValue":{"expression":{"baseExpression":{"id":12982,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"2940:5:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":12984,"indexExpression":{"id":12983,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"2946:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2940:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":12985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3498,"src":"2940:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2923:32:89"},{"condition":{"arguments":[{"id":12988,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12981,"src":"2993:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12987,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"2973:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":12989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2973:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13000,"nodeType":"IfStatement","src":"2969:117:89","trueBody":{"id":12999,"nodeType":"Block","src":"3002:84:89","statements":[{"expression":{"id":12997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"id":12990,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"3020:5:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":12992,"indexExpression":{"id":12991,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"3026:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3020:8:89","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_memory_ptr","typeString":"struct IVault.BatchSwapStep memory"}},"id":12993,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":3498,"src":"3020:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":12995,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12981,"src":"3064:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":12994,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"3038:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":12996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3038:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3020:51:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12998,"nodeType":"ExpressionStatement","src":"3020:51:89"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":12976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":12973,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"2886:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":12974,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"2890:5:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},"id":12975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"2890:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2886:16:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13002,"initializationExpression":{"assignments":[12970],"declarations":[{"constant":false,"id":12970,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13002,"src":"2871:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12969,"name":"uint256","nodeType":"ElementaryTypeName","src":"2871:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":12972,"initialValue":{"hexValue":"30","id":12971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2883:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2871:13:89"},"loopExpression":{"expression":{"id":12978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"2904:3:89","subExpression":{"id":12977,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12970,"src":"2906:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":12979,"nodeType":"ExpressionStatement","src":"2904:3:89"},"nodeType":"ForStatement","src":"2866:230:89"},{"assignments":[13007],"declarations":[{"constant":false,"id":13007,"mutability":"mutable","name":"results","nodeType":"VariableDeclaration","scope":13060,"src":"3106:23:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":13005,"name":"int256","nodeType":"ElementaryTypeName","src":"3106:6:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":13006,"nodeType":"ArrayTypeName","src":"3106:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"}],"id":13020,"initialValue":{"arguments":[{"id":13013,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12931,"src":"3169:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},{"id":13014,"name":"swaps","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12934,"src":"3175:5:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"}},{"id":13015,"name":"assets","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12937,"src":"3182:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"}},{"id":13016,"name":"funds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12939,"src":"3190:5:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"}},{"id":13017,"name":"limits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12942,"src":"3197:6:89","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"}},{"id":13018,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12944,"src":"3205:8:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"},{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep memory[] memory"},{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_calldata_ptr","typeString":"contract IAsset[] calldata"},{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement calldata"},{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13008,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"3132:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3132:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"batchSwap","nodeType":"MemberAccess","referencedDeclaration":3490,"src":"3132:20:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_enum$_SwapKind_$3441_$_t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$_t_struct$_FundManagement_$3523_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory,int256[] memory,uint256) payable external returns (int256[] memory)"}},"id":13012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":13011,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12946,"src":"3161:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3132:36:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_enum$_SwapKind_$3441_$_t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr_$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$_t_struct$_FundManagement_$3523_memory_ptr_$_t_array$_t_int256_$dyn_memory_ptr_$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$value","typeString":"function (enum IVault.SwapKind,struct IVault.BatchSwapStep memory[] memory,contract IAsset[] memory,struct IVault.FundManagement memory,int256[] memory,uint256) payable external returns (int256[] memory)"}},"id":13019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3132:82:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3106:108:89"},{"body":{"id":13058,"nodeType":"Block","src":"3279:664:89","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":13034,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"3321:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13036,"indexExpression":{"id":13035,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13022,"src":"3338:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3321:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":12857,"src":"3321:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13033,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"3301:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3301:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":13039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3347:27:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":13032,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3293:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3293:82:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13041,"nodeType":"ExpressionStatement","src":"3293:82:89"},{"expression":{"arguments":[{"expression":{"baseExpression":{"id":13043,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"3862:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13045,"indexExpression":{"id":13044,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13022,"src":"3879:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3862:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":12857,"src":"3862:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":13049,"name":"results","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13007,"src":"3896:7:89","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_memory_ptr","typeString":"int256[] memory"}},"id":13054,"indexExpression":{"expression":{"baseExpression":{"id":13050,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"3904:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13052,"indexExpression":{"id":13051,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13022,"src":"3921:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3904:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":12855,"src":"3904:25:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3896:34:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":13047,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6862,"src":"3887:4:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$6862_$","typeString":"type(library Math)"}},"id":13048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":6605,"src":"3887:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":13055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3887:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13042,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"3836:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3836:96:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13057,"nodeType":"ExpressionStatement","src":"3836:96:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13022,"src":"3245:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13026,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12949,"src":"3249:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"3249:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3245:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13059,"initializationExpression":{"assignments":[13022],"declarations":[{"constant":false,"id":13022,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13059,"src":"3230:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3230:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13024,"initialValue":{"hexValue":"30","id":13023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3242:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3230:13:89"},"loopExpression":{"expression":{"id":13030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"3274:3:89","subExpression":{"id":13029,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13022,"src":"3276:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13031,"nodeType":"ExpressionStatement","src":"3274:3:89"},"nodeType":"ForStatement","src":"3225:718:89"}]},"functionSelector":"18369446","id":13061,"implemented":true,"kind":"function","modifiers":[],"name":"batchSwap","nodeType":"FunctionDefinition","parameters":{"id":12950,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12931,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13061,"src":"2452:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"},"typeName":{"id":12930,"name":"IVault.SwapKind","nodeType":"UserDefinedTypeName","referencedDeclaration":3441,"src":"2452:15:89","typeDescriptions":{"typeIdentifier":"t_enum$_SwapKind_$3441","typeString":"enum IVault.SwapKind"}},"visibility":"internal"},{"constant":false,"id":12934,"mutability":"mutable","name":"swaps","nodeType":"VariableDeclaration","scope":13061,"src":"2482:35:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_memory_ptr_$dyn_memory_ptr","typeString":"struct IVault.BatchSwapStep[]"},"typeName":{"baseType":{"id":12932,"name":"IVault.BatchSwapStep","nodeType":"UserDefinedTypeName","referencedDeclaration":3501,"src":"2482:20:89","typeDescriptions":{"typeIdentifier":"t_struct$_BatchSwapStep_$3501_storage_ptr","typeString":"struct IVault.BatchSwapStep"}},"id":12933,"nodeType":"ArrayTypeName","src":"2482:22:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BatchSwapStep_$3501_storage_$dyn_storage_ptr","typeString":"struct IVault.BatchSwapStep[]"}},"visibility":"internal"},{"constant":false,"id":12937,"mutability":"mutable","name":"assets","nodeType":"VariableDeclaration","scope":13061,"src":"2527:24:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_calldata_ptr","typeString":"contract IAsset[]"},"typeName":{"baseType":{"id":12935,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"2527:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"id":12936,"nodeType":"ArrayTypeName","src":"2527:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_storage_ptr","typeString":"contract IAsset[]"}},"visibility":"internal"},{"constant":false,"id":12939,"mutability":"mutable","name":"funds","nodeType":"VariableDeclaration","scope":13061,"src":"2561:36:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_calldata_ptr","typeString":"struct IVault.FundManagement"},"typeName":{"id":12938,"name":"IVault.FundManagement","nodeType":"UserDefinedTypeName","referencedDeclaration":3523,"src":"2561:21:89","typeDescriptions":{"typeIdentifier":"t_struct$_FundManagement_$3523_storage_ptr","typeString":"struct IVault.FundManagement"}},"visibility":"internal"},{"constant":false,"id":12942,"mutability":"mutable","name":"limits","nodeType":"VariableDeclaration","scope":13061,"src":"2607:24:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_calldata_ptr","typeString":"int256[]"},"typeName":{"baseType":{"id":12940,"name":"int256","nodeType":"ElementaryTypeName","src":"2607:6:89","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":12941,"nodeType":"ArrayTypeName","src":"2607:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$dyn_storage_ptr","typeString":"int256[]"}},"visibility":"internal"},{"constant":false,"id":12944,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":13061,"src":"2641:16:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12943,"name":"uint256","nodeType":"ElementaryTypeName","src":"2641:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12946,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":13061,"src":"2667:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":12945,"name":"uint256","nodeType":"ElementaryTypeName","src":"2667:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":12949,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":13061,"src":"2690:43:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":12947,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":12858,"src":"2690:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":12948,"nodeType":"ArrayTypeName","src":"2690:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"2442:297:89"},"returnParameters":{"id":12951,"nodeType":"ParameterList","parameters":[],"src":"2757:0:89"},"scope":13728,"src":"2424:1525:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":13111,"nodeType":"Block","src":"4051:231:89","statements":[{"body":{"id":13101,"nodeType":"Block","src":"4102:115:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13081,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"4124:3:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}},"id":13083,"indexExpression":{"id":13082,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"4128:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4124:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata"}},"id":13084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3244,"src":"4124:13:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13085,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4141:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4141:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4124:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":13088,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"4155:3:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}},"id":13090,"indexExpression":{"id":13089,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"4159:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4155:6:89","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata"}},"id":13091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":3244,"src":"4155:13:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13094,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4180:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}],"id":13093,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4172:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13092,"name":"address","nodeType":"ElementaryTypeName","src":"4172:7:89","typeDescriptions":{}}},"id":13095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4172:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4155:30:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4124:61:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":13098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4187:18:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":13080,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4116:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4116:90:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13100,"nodeType":"ExpressionStatement","src":"4116:90:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13073,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"4081:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13074,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"4085:3:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}},"id":13075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4085:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4081:14:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13102,"initializationExpression":{"assignments":[13070],"declarations":[{"constant":false,"id":13070,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13102,"src":"4066:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13069,"name":"uint256","nodeType":"ElementaryTypeName","src":"4066:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13072,"initialValue":{"hexValue":"30","id":13071,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4078:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"4066:13:89"},"loopExpression":{"expression":{"id":13078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4097:3:89","subExpression":{"id":13077,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13070,"src":"4097:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13079,"nodeType":"ExpressionStatement","src":"4097:3:89"},"nodeType":"ForStatement","src":"4061:156:89"},{"expression":{"arguments":[{"id":13108,"name":"ops","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13064,"src":"4271:3:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp calldata[] calldata"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13103,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"4226:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"manageUserBalance","nodeType":"MemberAccess","referencedDeclaration":3236,"src":"4226:28:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr_$returns$__$","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":13107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":13106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13066,"src":"4263:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4226:44:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_array$_t_struct$_UserBalanceOp_$3247_memory_ptr_$dyn_memory_ptr_$returns$__$value","typeString":"function (struct IVault.UserBalanceOp memory[] memory) payable external"}},"id":13109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4226:49:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13110,"nodeType":"ExpressionStatement","src":"4226:49:89"}]},"functionSelector":"ecc02637","id":13112,"implemented":true,"kind":"function","modifiers":[],"name":"manageUserBalance","nodeType":"FunctionDefinition","parameters":{"id":13067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13064,"mutability":"mutable","name":"ops","nodeType":"VariableDeclaration","scope":13112,"src":"3982:35:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IVault.UserBalanceOp[]"},"typeName":{"baseType":{"id":13062,"name":"IVault.UserBalanceOp","nodeType":"UserDefinedTypeName","referencedDeclaration":3247,"src":"3982:20:89","typeDescriptions":{"typeIdentifier":"t_struct$_UserBalanceOp_$3247_storage_ptr","typeString":"struct IVault.UserBalanceOp"}},"id":13063,"nodeType":"ArrayTypeName","src":"3982:22:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_UserBalanceOp_$3247_storage_$dyn_storage_ptr","typeString":"struct IVault.UserBalanceOp[]"}},"visibility":"internal"},{"constant":false,"id":13066,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":13112,"src":"4019:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13065,"name":"uint256","nodeType":"ElementaryTypeName","src":"4019:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3981:52:89"},"returnParameters":{"id":13068,"nodeType":"ParameterList","parameters":[],"src":"4051:0:89"},"scope":13728,"src":"3955:327:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"canonicalName":"VaultActions.PoolKind","id":13114,"members":[{"id":13113,"name":"WEIGHTED","nodeType":"EnumValue","src":"4304:8:89"}],"name":"PoolKind","nodeType":"EnumDefinition","src":"4288:26:89"},{"body":{"id":13208,"nodeType":"Block","src":"4562:1254:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13132,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"4580:6:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13133,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4590:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4590:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4580:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13136,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"4604:6:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13139,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4622:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}],"id":13138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4614:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13137,"name":"address","nodeType":"ElementaryTypeName","src":"4614:7:89","typeDescriptions":{}}},"id":13140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4614:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4604:23:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4580:47:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":13143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4629:18:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":13131,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4572:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4572:76:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13145,"nodeType":"ExpressionStatement","src":"4572:76:89"},{"assignments":[13147],"declarations":[{"constant":false,"id":13147,"mutability":"mutable","name":"bpt","nodeType":"VariableDeclaration","scope":13208,"src":"4969:10:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13146,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4969:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"id":13154,"initialValue":{"arguments":[{"arguments":[{"id":13151,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13116,"src":"5016:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13149,"name":"VaultHelpers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4915,"src":"4989:12:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_VaultHelpers_$4915_$","typeString":"type(library VaultHelpers)"}},"id":13150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"toPoolAddress","nodeType":"MemberAccess","referencedDeclaration":4914,"src":"4989:26:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) pure returns (address)"}},"id":13152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4989:34:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":13148,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"4982:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4982:42:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"4969:55:89"},{"assignments":[13156],"declarations":[{"constant":false,"id":13156,"mutability":"mutable","name":"maybeInitialRecipientBPT","nodeType":"VariableDeclaration","scope":13208,"src":"5034:32:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13155,"name":"uint256","nodeType":"ElementaryTypeName","src":"5034:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13166,"initialValue":{"condition":{"arguments":[{"id":13158,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13128,"src":"5089:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13157,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"5069:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5069:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":13164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5135:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":13165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5069:67:89","trueExpression":{"arguments":[{"id":13162,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13122,"src":"5122:9:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13160,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13147,"src":"5108:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"5108:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13163,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5108:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5034:102:89"},{"expression":{"id":13175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13167,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13124,"src":"5147:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":13169,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3393,"src":"5147:16:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13171,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13118,"src":"5206:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},{"expression":{"id":13172,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13124,"src":"5212:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}},"id":13173,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3393,"src":"5212:16:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13170,"name":"_doJoinPoolChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13235,"src":"5166:39:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_PoolKind_$13114_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (enum VaultActions.PoolKind,bytes memory) returns (bytes memory)"}},"id":13174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5166:63:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"5147:82:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13176,"nodeType":"ExpressionStatement","src":"5147:82:89"},{"expression":{"arguments":[{"id":13182,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13116,"src":"5276:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13183,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13120,"src":"5284:6:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13184,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13122,"src":"5292:9:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13185,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13124,"src":"5303:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13177,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"5240:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5240:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinPool","nodeType":"MemberAccess","referencedDeclaration":3385,"src":"5240:19:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3396_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"}},"id":13181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":13180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13126,"src":"5268:5:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5240:35:89","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3396_memory_ptr_$returns$__$value","typeString":"function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"}},"id":13186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5240:71:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13187,"nodeType":"ExpressionStatement","src":"5240:71:89"},{"condition":{"arguments":[{"id":13189,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13128,"src":"5346:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13188,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"5326:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5326:36:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13207,"nodeType":"IfStatement","src":"5322:488:89","trueBody":{"id":13206,"nodeType":"Block","src":"5364:446:89","statements":[{"assignments":[13192],"declarations":[{"constant":false,"id":13192,"mutability":"mutable","name":"finalRecipientBPT","nodeType":"VariableDeclaration","scope":13206,"src":"5642:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13191,"name":"uint256","nodeType":"ElementaryTypeName","src":"5642:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13197,"initialValue":{"arguments":[{"id":13195,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13122,"src":"5684:9:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13193,"name":"bpt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13147,"src":"5670:3:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"5670:13:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13196,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5670:24:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5642:52:89"},{"expression":{"arguments":[{"id":13199,"name":"outputReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13128,"src":"5734:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":13202,"name":"maybeInitialRecipientBPT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13156,"src":"5773:24:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13200,"name":"finalRecipientBPT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13192,"src":"5751:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":6700,"src":"5751:21:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5751:47:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13198,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"5708:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5708:91:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13205,"nodeType":"ExpressionStatement","src":"5708:91:89"}]}}]},"functionSelector":"8fe4624f","id":13209,"implemented":true,"kind":"function","modifiers":[],"name":"joinPool","nodeType":"FunctionDefinition","parameters":{"id":13129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13116,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":13209,"src":"4347:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4347:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13118,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13209,"src":"4371:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":13117,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":13114,"src":"4371:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":13120,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":13209,"src":"4394:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13119,"name":"address","nodeType":"ElementaryTypeName","src":"4394:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13122,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13209,"src":"4418:17:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13121,"name":"address","nodeType":"ElementaryTypeName","src":"4418:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13124,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":13209,"src":"4445:37:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_memory_ptr","typeString":"struct IVault.JoinPoolRequest"},"typeName":{"id":13123,"name":"IVault.JoinPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3396,"src":"4445:22:89","typeDescriptions":{"typeIdentifier":"t_struct$_JoinPoolRequest_$3396_storage_ptr","typeString":"struct IVault.JoinPoolRequest"}},"visibility":"internal"},{"constant":false,"id":13126,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":13209,"src":"4492:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13125,"name":"uint256","nodeType":"ElementaryTypeName","src":"4492:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13128,"mutability":"mutable","name":"outputReference","nodeType":"VariableDeclaration","scope":13209,"src":"4515:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13127,"name":"uint256","nodeType":"ElementaryTypeName","src":"4515:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4337:207:89"},"returnParameters":{"id":13130,"nodeType":"ParameterList","parameters":[],"src":"4562:0:89"},"scope":13728,"src":"4320:1496:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":13234,"nodeType":"Block","src":"5960:198:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},"id":13221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13218,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13211,"src":"5974:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13219,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"5982:8:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$13114_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":13220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WEIGHTED","nodeType":"MemberAccess","src":"5982:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"src":"5974:25:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13232,"nodeType":"Block","src":"6092:60:89","statements":[{"expression":{"arguments":[{"expression":{"id":13228,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"6114:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":13229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNHANDLED_JOIN_KIND","nodeType":"MemberAccess","referencedDeclaration":1484,"src":"6114:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13227,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"6106:7:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":13230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6106:35:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13231,"nodeType":"ExpressionStatement","src":"6106:35:89"}]},"id":13233,"nodeType":"IfStatement","src":"5970:182:89","trueBody":{"id":13226,"nodeType":"Block","src":"6001:85:89","statements":[{"expression":{"arguments":[{"id":13223,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13213,"src":"6066:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13222,"name":"_doWeightedJoinChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13266,"src":"6022:43:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":13224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6022:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13217,"id":13225,"nodeType":"Return","src":"6015:60:89"}]}}]},"id":13235,"implemented":true,"kind":"function","modifiers":[],"name":"_doJoinPoolChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":13214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13211,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13235,"src":"5871:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":13210,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":13114,"src":"5871:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":13213,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13235,"src":"5886:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13212,"name":"bytes","nodeType":"ElementaryTypeName","src":"5886:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5870:38:89"},"returnParameters":{"id":13217,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13216,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13235,"src":"5942:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13215,"name":"bytes","nodeType":"ElementaryTypeName","src":"5942:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5941:14:89"},"scope":13728,"src":"5822:336:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13265,"nodeType":"Block","src":"6271:450:89","statements":[{"assignments":[13245],"declarations":[{"constant":false,"id":13245,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13265,"src":"6281:34:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"},"typeName":{"id":13244,"name":"WeightedPoolUserData.JoinKind","nodeType":"UserDefinedTypeName","referencedDeclaration":1097,"src":"6281:29:89","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},"visibility":"internal"}],"id":13250,"initialValue":{"arguments":[{"id":13248,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13237,"src":"6348:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13246,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"6318:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"joinKind","nodeType":"MemberAccess","referencedDeclaration":1116,"src":"6318:29:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_JoinKind_$1097_$","typeString":"function (bytes memory) pure returns (enum WeightedPoolUserData.JoinKind)"}},"id":13249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6318:39:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},"nodeType":"VariableDeclarationStatement","src":"6281:76:89"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"},"id":13255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13251,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13245,"src":"6372:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":13252,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"6380:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":1097,"src":"6380:29:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},"id":13254,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"6380:57:89","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},"src":"6372:65:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13263,"nodeType":"Block","src":"6532:183:89","statements":[{"expression":{"id":13261,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13237,"src":"6696:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13241,"id":13262,"nodeType":"Return","src":"6689:15:89"}]},"id":13264,"nodeType":"IfStatement","src":"6368:347:89","trueBody":{"id":13260,"nodeType":"Block","src":"6439:87:89","statements":[{"expression":{"arguments":[{"id":13257,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13237,"src":"6506:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13256,"name":"_doWeightedExactTokensInForBPTOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13338,"src":"6460:45:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":13258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6460:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13241,"id":13259,"nodeType":"Return","src":"6453:62:89"}]}}]},"id":13266,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedJoinChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":13238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13237,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13266,"src":"6217:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13236,"name":"bytes","nodeType":"ElementaryTypeName","src":"6217:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6216:23:89"},"returnParameters":{"id":13241,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13240,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13266,"src":"6257:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13239,"name":"bytes","nodeType":"ElementaryTypeName","src":"6257:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6256:14:89"},"scope":13728,"src":"6164:557:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13337,"nodeType":"Block","src":"6836:718:89","statements":[{"assignments":[13277,13279],"declarations":[{"constant":false,"id":13277,"mutability":"mutable","name":"amountsIn","nodeType":"VariableDeclaration","scope":13337,"src":"6847:26:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13275,"name":"uint256","nodeType":"ElementaryTypeName","src":"6847:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13276,"nodeType":"ArrayTypeName","src":"6847:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":13279,"mutability":"mutable","name":"minBPTAmountOut","nodeType":"VariableDeclaration","scope":13337,"src":"6875:23:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13278,"name":"uint256","nodeType":"ElementaryTypeName","src":"6875:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13284,"initialValue":{"arguments":[{"id":13282,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13268,"src":"6946:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13280,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"6902:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactTokensInForBptOut","nodeType":"MemberAccess","referencedDeclaration":1180,"src":"6902:43:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256[] memory,uint256)"}},"id":13283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6902:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$","typeString":"tuple(uint256[] memory,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"6846:109:89"},{"assignments":[13286],"declarations":[{"constant":false,"id":13286,"mutability":"mutable","name":"replacedAmounts","nodeType":"VariableDeclaration","scope":13337,"src":"6966:20:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13285,"name":"bool","nodeType":"ElementaryTypeName","src":"6966:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":13288,"initialValue":{"hexValue":"66616c7365","id":13287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6989:5:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"6966:28:89"},{"body":{"id":13323,"nodeType":"Block","src":"7051:221:89","statements":[{"assignments":[13301],"declarations":[{"constant":false,"id":13301,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":13323,"src":"7065:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13300,"name":"uint256","nodeType":"ElementaryTypeName","src":"7065:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13305,"initialValue":{"baseExpression":{"id":13302,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13277,"src":"7082:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13304,"indexExpression":{"id":13303,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13290,"src":"7092:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7082:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7065:29:89"},{"condition":{"arguments":[{"id":13307,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13301,"src":"7132:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13306,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"7112:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7112:27:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13322,"nodeType":"IfStatement","src":"7108:154:89","trueBody":{"id":13321,"nodeType":"Block","src":"7141:121:89","statements":[{"expression":{"id":13315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13309,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13277,"src":"7159:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13311,"indexExpression":{"id":13310,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13290,"src":"7169:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7159:12:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13313,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13301,"src":"7200:6:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13312,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"7174:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":13314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7174:33:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7159:48:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13316,"nodeType":"ExpressionStatement","src":"7159:48:89"},{"expression":{"id":13319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13317,"name":"replacedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13286,"src":"7225:15:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":13318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7243:4:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"7225:22:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13320,"nodeType":"ExpressionStatement","src":"7225:22:89"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13293,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13290,"src":"7024:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13294,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13277,"src":"7028:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7028:16:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7024:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13324,"initializationExpression":{"assignments":[13290],"declarations":[{"constant":false,"id":13290,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13324,"src":"7009:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13289,"name":"uint256","nodeType":"ElementaryTypeName","src":"7009:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13292,"initialValue":{"hexValue":"30","id":13291,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7021:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7009:13:89"},"loopExpression":{"expression":{"id":13298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7046:3:89","subExpression":{"id":13297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13290,"src":"7048:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13299,"nodeType":"ExpressionStatement","src":"7046:3:89"},"nodeType":"ForStatement","src":"7004:268:89"},{"expression":{"condition":{"id":13325,"name":"replacedAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13286,"src":"7389:15:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":13334,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13268,"src":"7539:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7389:158:89","trueExpression":{"arguments":[{"expression":{"expression":{"id":13328,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"7434:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"JoinKind","nodeType":"MemberAccess","referencedDeclaration":1097,"src":"7434:29:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_JoinKind_$1097_$","typeString":"type(enum WeightedPoolUserData.JoinKind)"}},"id":13330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_TOKENS_IN_FOR_BPT_OUT","nodeType":"MemberAccess","src":"7434:57:89","typeDescriptions":{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"}},{"id":13331,"name":"amountsIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13277,"src":"7493:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13332,"name":"minBPTAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13279,"src":"7504:15:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_JoinKind_$1097","typeString":"enum WeightedPoolUserData.JoinKind"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13326,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7423:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"7423:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7423:97:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13272,"id":13336,"nodeType":"Return","src":"7370:177:89"}]},"id":13338,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactTokensInForBPTOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":13269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13268,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13338,"src":"6782:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13267,"name":"bytes","nodeType":"ElementaryTypeName","src":"6782:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6781:23:89"},"returnParameters":{"id":13272,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13271,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13338,"src":"6822:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13270,"name":"bytes","nodeType":"ElementaryTypeName","src":"6822:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6821:14:89"},"scope":13728,"src":"6727:827:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13581,"nodeType":"Block","src":"7807:2297:89","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":13365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13355,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13344,"src":"7825:6:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13356,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7835:3:89","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7835:10:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"7825:20:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":13364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13359,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13344,"src":"7849:6:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":13362,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7867:4:89","typeDescriptions":{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VaultActions_$13728","typeString":"contract VaultActions"}],"id":13361,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7859:7:89","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13360,"name":"address","nodeType":"ElementaryTypeName","src":"7859:7:89","typeDescriptions":{}}},"id":13363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7859:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7849:23:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7825:47:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e636f72726563742073656e646572","id":13366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7874:18:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""},"value":"Incorrect sender"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_38c512591d3480124c6dd5839531b0055d0bf55c1d39faa11abbe516b027624c","typeString":"literal_string \"Incorrect sender\""}],"id":13354,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7817:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7817:76:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13368,"nodeType":"ExpressionStatement","src":"7817:76:89"},{"assignments":[13372],"declarations":[{"constant":false,"id":13372,"mutability":"mutable","name":"trackedTokens","nodeType":"VariableDeclaration","scope":13581,"src":"8071:29:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13370,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"8071:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13371,"nodeType":"ArrayTypeName","src":"8071:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":13379,"initialValue":{"arguments":[{"expression":{"id":13376,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"8116:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8116:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13375,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8103:12:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":13373,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"8107:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13374,"nodeType":"ArrayTypeName","src":"8107:8:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":13378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8103:37:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8071:69:89"},{"assignments":[13384],"declarations":[{"constant":false,"id":13384,"mutability":"mutable","name":"initialRecipientBalances","nodeType":"VariableDeclaration","scope":13581,"src":"8239:41:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13382,"name":"uint256","nodeType":"ElementaryTypeName","src":"8239:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13383,"nodeType":"ArrayTypeName","src":"8239:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":13391,"initialValue":{"arguments":[{"expression":{"id":13388,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"8297:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8297:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13387,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8283:13:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":13385,"name":"uint256","nodeType":"ElementaryTypeName","src":"8287:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13386,"nodeType":"ArrayTypeName","src":"8287:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":13390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8283:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"8239:82:89"},{"body":{"id":13453,"nodeType":"Block","src":"8385:432:89","statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":13405,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"8427:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13407,"indexExpression":{"id":13406,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"8444:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8427:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":12857,"src":"8427:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13404,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"8407:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8407:44:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c696420636861696e6564207265666572656e6365","id":13410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8453:27:89","typeDescriptions":{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""},"value":"invalid chained reference"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d6d4335fe09f08633f94e83e046ecf24abae5a9cb105f711fbef51405031f144","typeString":"literal_string \"invalid chained reference\""}],"id":13403,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8399:7:89","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":13411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8399:82:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13412,"nodeType":"ExpressionStatement","src":"8399:82:89"},{"assignments":[13414],"declarations":[{"constant":false,"id":13414,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":13453,"src":"8496:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":13413,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"8496:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"}],"id":13422,"initialValue":{"baseExpression":{"expression":{"id":13415,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"8511:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3411,"src":"8511:14:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":13421,"indexExpression":{"expression":{"baseExpression":{"id":13417,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"8526:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13419,"indexExpression":{"id":13418,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"8543:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8526:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":12855,"src":"8526:25:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8511:41:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"nodeType":"VariableDeclarationStatement","src":"8496:56:89"},{"condition":{"expression":{"id":13423,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"8570:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"8570:25:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13451,"nodeType":"Block","src":"8671:136:89","statements":[{"expression":{"id":13449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13434,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13384,"src":"8689:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13436,"indexExpression":{"id":13435,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"8714:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8689:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"arguments":[{"id":13438,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"8726:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":13437,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8710,"src":"8719:6:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":13439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8719:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":13446,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"8782:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":13443,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"8765:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":13442,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"8755:9:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_contract$_IERC20_$2090_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":13444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8755:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"8755:26:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13447,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8755:37:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8719:73:89","trueExpression":{"expression":{"id":13440,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"8735:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"8735:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8689:103:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13450,"nodeType":"ExpressionStatement","src":"8689:103:89"}]},"id":13452,"nodeType":"IfStatement","src":"8566:241:89","trueBody":{"id":13433,"nodeType":"Block","src":"8597:68:89","statements":[{"expression":{"id":13431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13425,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"8615:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13427,"indexExpression":{"id":13426,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"8629:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8615:16:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13429,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13414,"src":"8644:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":13428,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"8634:9:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_contract$_IERC20_$2090_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":13430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8634:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"8615:35:89","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13432,"nodeType":"ExpressionStatement","src":"8615:35:89"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13396,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"8351:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13397,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"8355:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"8355:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8351:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13454,"initializationExpression":{"assignments":[13393],"declarations":[{"constant":false,"id":13393,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13454,"src":"8336:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13392,"name":"uint256","nodeType":"ElementaryTypeName","src":"8336:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13395,"initialValue":{"hexValue":"30","id":13394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8348:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8336:13:89"},"loopExpression":{"expression":{"id":13401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8380:3:89","subExpression":{"id":13400,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13393,"src":"8380:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13402,"nodeType":"ExpressionStatement","src":"8380:3:89"},"nodeType":"ForStatement","src":"8331:486:89"},{"condition":{"expression":{"id":13455,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"8830:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"8830:25:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13467,"nodeType":"IfStatement","src":"8826:138:89","trueBody":{"id":13466,"nodeType":"Block","src":"8857:107:89","statements":[{"expression":{"id":13464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13457,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13384,"src":"8871:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13461,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"8928:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13462,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"8939:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13458,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"8898:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8898:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3229,"src":"8898:29:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,contract IERC20[] memory) view external returns (uint256[] memory)"}},"id":13463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8898:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"8871:82:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13465,"nodeType":"ExpressionStatement","src":"8871:82:89"}]}},{"expression":{"id":13476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":13468,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"8999:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13470,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3416,"src":"8999:16:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13472,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13342,"src":"9058:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},{"expression":{"id":13473,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"9064:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"userData","nodeType":"MemberAccess","referencedDeclaration":3416,"src":"9064:16:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13471,"name":"_doExitPoolChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13608,"src":"9018:39:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_enum$_PoolKind_$13114_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (enum VaultActions.PoolKind,bytes memory) returns (bytes memory)"}},"id":13475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9018:63:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8999:82:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":13477,"nodeType":"ExpressionStatement","src":"8999:82:89"},{"expression":{"arguments":[{"id":13481,"name":"poolId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13340,"src":"9111:6:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13482,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13344,"src":"9119:6:89","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13483,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"9127:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13484,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"9138:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13478,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"9091:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9091:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3408,"src":"9091:19:89","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3419_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":13485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9091:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13486,"nodeType":"ExpressionStatement","src":"9091:55:89"},{"assignments":[13491],"declarations":[{"constant":false,"id":13491,"mutability":"mutable","name":"finalRecipientTokenBalances","nodeType":"VariableDeclaration","scope":13581,"src":"9216:44:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":13489,"name":"uint256","nodeType":"ElementaryTypeName","src":"9216:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13490,"nodeType":"ArrayTypeName","src":"9216:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":13498,"initialValue":{"arguments":[{"expression":{"id":13495,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"9277:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9277:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13494,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"9263:13:89","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":13492,"name":"uint256","nodeType":"ElementaryTypeName","src":"9267:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13493,"nodeType":"ArrayTypeName","src":"9267:9:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":13497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9263:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"9216:85:89"},{"condition":{"expression":{"id":13499,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"9315:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13500,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"toInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3418,"src":"9315:25:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13551,"nodeType":"Block","src":"9458:331:89","statements":[{"body":{"id":13549,"nodeType":"Block","src":"9526:253:89","statements":[{"assignments":[13523],"declarations":[{"constant":false,"id":13523,"mutability":"mutable","name":"asset","nodeType":"VariableDeclaration","scope":13549,"src":"9544:12:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"},"typeName":{"id":13522,"name":"IAsset","nodeType":"UserDefinedTypeName","referencedDeclaration":2904,"src":"9544:6:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"visibility":"internal"}],"id":13531,"initialValue":{"baseExpression":{"expression":{"id":13524,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13348,"src":"9559:7:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"id":13525,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"assets","nodeType":"MemberAccess","referencedDeclaration":3411,"src":"9559:14:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},"id":13530,"indexExpression":{"expression":{"baseExpression":{"id":13526,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"9574:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13528,"indexExpression":{"id":13527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"9591:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9574:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":12855,"src":"9574:25:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9559:41:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}},"nodeType":"VariableDeclarationStatement","src":"9544:56:89"},{"expression":{"id":13547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13532,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13491,"src":"9618:27:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13534,"indexExpression":{"id":13533,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"9646:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9618:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"arguments":[{"id":13536,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13523,"src":"9658:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":13535,"name":"_isETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8710,"src":"9651:6:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_bool_$","typeString":"function (contract IAsset) pure returns (bool)"}},"id":13537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9651:13:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":13544,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"9754:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"arguments":[{"id":13541,"name":"asset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13523,"src":"9737:5:89","typeDescriptions":{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAsset_$2904","typeString":"contract IAsset"}],"id":13540,"name":"_asIERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8792,"src":"9727:9:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_contract$_IAsset_$2904_$returns$_t_contract$_IERC20_$2090_$","typeString":"function (contract IAsset) pure returns (contract IERC20)"}},"id":13542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9727:16:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"9727:26:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9727:37:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9651:113:89","trueExpression":{"expression":{"id":13538,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"9687:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":13539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"9687:17:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9618:146:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13548,"nodeType":"ExpressionStatement","src":"9618:146:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13515,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"9492:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13516,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"9496:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9496:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9492:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13550,"initializationExpression":{"assignments":[13512],"declarations":[{"constant":false,"id":13512,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13550,"src":"9477:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13511,"name":"uint256","nodeType":"ElementaryTypeName","src":"9477:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13514,"initialValue":{"hexValue":"30","id":13513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9489:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9477:13:89"},"loopExpression":{"expression":{"id":13520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9521:3:89","subExpression":{"id":13519,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13512,"src":"9521:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13521,"nodeType":"ExpressionStatement","src":"9521:3:89"},"nodeType":"ForStatement","src":"9472:307:89"}]},"id":13552,"nodeType":"IfStatement","src":"9311:478:89","trueBody":{"id":13510,"nodeType":"Block","src":"9342:110:89","statements":[{"expression":{"id":13508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13501,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13491,"src":"9356:27:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13505,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13346,"src":"9416:9:89","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13506,"name":"trackedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13372,"src":"9427:13:89","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13502,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"9386:8:89","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9386:10:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getInternalBalance","nodeType":"MemberAccess","referencedDeclaration":3229,"src":"9386:29:89","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,contract IERC20[] memory) view external returns (uint256[] memory)"}},"id":13507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9386:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"9356:85:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13509,"nodeType":"ExpressionStatement","src":"9356:85:89"}]}},{"body":{"id":13579,"nodeType":"Block","src":"9912:186:89","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"id":13565,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"9969:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13567,"indexExpression":{"id":13566,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13554,"src":"9986:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9969:19:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata"}},"id":13568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"key","nodeType":"MemberAccess","referencedDeclaration":12857,"src":"9969:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":13573,"name":"initialRecipientBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13384,"src":"10045:24:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13575,"indexExpression":{"id":13574,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13554,"src":"10070:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10045:27:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":13569,"name":"finalRecipientTokenBalances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13491,"src":"10010:27:89","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":13571,"indexExpression":{"id":13570,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13554,"src":"10038:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10010:30:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":6700,"src":"10010:34:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":13576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10010:63:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13564,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12106,"src":"9926:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":13577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9926:161:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13578,"nodeType":"ExpressionStatement","src":"9926:161:89"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":13560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13557,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13554,"src":"9878:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":13558,"name":"outputReferences","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13351,"src":"9882:16:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference calldata[] calldata"}},"id":13559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"9882:23:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9878:27:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":13580,"initializationExpression":{"assignments":[13554],"declarations":[{"constant":false,"id":13554,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","scope":13580,"src":"9863:9:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13553,"name":"uint256","nodeType":"ElementaryTypeName","src":"9863:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13556,"initialValue":{"hexValue":"30","id":13555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9875:1:89","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9863:13:89"},"loopExpression":{"expression":{"id":13562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9907:3:89","subExpression":{"id":13561,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13554,"src":"9907:1:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13563,"nodeType":"ExpressionStatement","src":"9907:3:89"},"nodeType":"ForStatement","src":"9858:240:89"}]},"functionSelector":"d80952d5","id":13582,"implemented":true,"kind":"function","modifiers":[],"name":"exitPool","nodeType":"FunctionDefinition","parameters":{"id":13352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13340,"mutability":"mutable","name":"poolId","nodeType":"VariableDeclaration","scope":13582,"src":"7587:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13339,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7587:7:89","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13342,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13582,"src":"7611:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":13341,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":13114,"src":"7611:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":13344,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","scope":13582,"src":"7634:14:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13343,"name":"address","nodeType":"ElementaryTypeName","src":"7634:7:89","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13346,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":13582,"src":"7658:25:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":13345,"name":"address","nodeType":"ElementaryTypeName","src":"7658:15:89","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":13348,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":13582,"src":"7693:37:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":13347,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3419,"src":"7693:22:89","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"},{"constant":false,"id":13351,"mutability":"mutable","name":"outputReferences","nodeType":"VariableDeclaration","scope":13582,"src":"7740:43:89","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_calldata_ptr_$dyn_calldata_ptr","typeString":"struct VaultActions.OutputReference[]"},"typeName":{"baseType":{"id":13349,"name":"OutputReference","nodeType":"UserDefinedTypeName","referencedDeclaration":12858,"src":"7740:15:89","typeDescriptions":{"typeIdentifier":"t_struct$_OutputReference_$12858_storage_ptr","typeString":"struct VaultActions.OutputReference"}},"id":13350,"nodeType":"ArrayTypeName","src":"7740:17:89","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutputReference_$12858_storage_$dyn_storage_ptr","typeString":"struct VaultActions.OutputReference[]"}},"visibility":"internal"}],"src":"7577:212:89"},"returnParameters":{"id":13353,"nodeType":"ParameterList","parameters":[],"src":"7807:0:89"},"scope":13728,"src":"7560:2544:89","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":13607,"nodeType":"Block","src":"10248:198:89","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},"id":13594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13591,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13584,"src":"10262:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":13592,"name":"PoolKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13114,"src":"10270:8:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_PoolKind_$13114_$","typeString":"type(enum VaultActions.PoolKind)"}},"id":13593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"WEIGHTED","nodeType":"MemberAccess","src":"10270:17:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"src":"10262:25:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13605,"nodeType":"Block","src":"10380:60:89","statements":[{"expression":{"arguments":[{"expression":{"id":13601,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"10402:6:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":13602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNHANDLED_EXIT_KIND","nodeType":"MemberAccess","referencedDeclaration":1562,"src":"10402:26:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13600,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"10394:7:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":13603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10394:35:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13604,"nodeType":"ExpressionStatement","src":"10394:35:89"}]},"id":13606,"nodeType":"IfStatement","src":"10258:182:89","trueBody":{"id":13599,"nodeType":"Block","src":"10289:85:89","statements":[{"expression":{"arguments":[{"id":13596,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13586,"src":"10354:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13595,"name":"_doWeightedExitChainedReferenceReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13650,"src":"10310:43:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":13597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10310:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13590,"id":13598,"nodeType":"Return","src":"10303:60:89"}]}}]},"id":13608,"implemented":true,"kind":"function","modifiers":[],"name":"_doExitPoolChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":13587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13584,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13608,"src":"10159:13:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"},"typeName":{"id":13583,"name":"PoolKind","nodeType":"UserDefinedTypeName","referencedDeclaration":13114,"src":"10159:8:89","typeDescriptions":{"typeIdentifier":"t_enum$_PoolKind_$13114","typeString":"enum VaultActions.PoolKind"}},"visibility":"internal"},{"constant":false,"id":13586,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13608,"src":"10174:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13585,"name":"bytes","nodeType":"ElementaryTypeName","src":"10174:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10158:38:89"},"returnParameters":{"id":13590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13589,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13608,"src":"10230:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13588,"name":"bytes","nodeType":"ElementaryTypeName","src":"10230:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10229:14:89"},"scope":13728,"src":"10110:336:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13649,"nodeType":"Block","src":"10559:621:89","statements":[{"assignments":[13618],"declarations":[{"constant":false,"id":13618,"mutability":"mutable","name":"kind","nodeType":"VariableDeclaration","scope":13649,"src":"10569:34:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},"typeName":{"id":13617,"name":"WeightedPoolUserData.ExitKind","nodeType":"UserDefinedTypeName","referencedDeclaration":1101,"src":"10569:29:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"visibility":"internal"}],"id":13623,"initialValue":{"arguments":[{"id":13621,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13610,"src":"10636:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13619,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"10606:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitKind","nodeType":"MemberAccess","referencedDeclaration":1131,"src":"10606:29:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_enum$_ExitKind_$1101_$","typeString":"function (bytes memory) pure returns (enum WeightedPoolUserData.ExitKind)"}},"id":13622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10606:39:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"VariableDeclarationStatement","src":"10569:76:89"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},"id":13628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13624,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13618,"src":"10660:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":13625,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"10668:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":1101,"src":"10668:29:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":13627,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"10668:60:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"src":"10660:68:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},"id":13638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":13634,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13618,"src":"10829:4:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":13635,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"10837:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":1101,"src":"10837:29:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":13637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"10837:57:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},"src":"10829:65:89","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13646,"nodeType":"Block","src":"10989:185:89","statements":[{"expression":{"id":13644,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13610,"src":"11155:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13614,"id":13645,"nodeType":"Return","src":"11148:15:89"}]},"id":13647,"nodeType":"IfStatement","src":"10825:349:89","trueBody":{"id":13643,"nodeType":"Block","src":"10896:87:89","statements":[{"expression":{"arguments":[{"id":13640,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13610,"src":"10963:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13639,"name":"_doWeightedExactBptInForTokensOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13727,"src":"10917:45:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":13641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10917:55:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13614,"id":13642,"nodeType":"Return","src":"10910:62:89"}]}},"id":13648,"nodeType":"IfStatement","src":"10656:518:89","trueBody":{"id":13633,"nodeType":"Block","src":"10730:89:89","statements":[{"expression":{"arguments":[{"id":13630,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13610,"src":"10799:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":13629,"name":"_doWeightedExactBptInForOneTokenOutReplacements","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13690,"src":"10751:47:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bytes memory)"}},"id":13631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10751:57:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13614,"id":13632,"nodeType":"Return","src":"10744:64:89"}]}}]},"id":13650,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExitChainedReferenceReplacements","nodeType":"FunctionDefinition","parameters":{"id":13611,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13610,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13650,"src":"10505:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13609,"name":"bytes","nodeType":"ElementaryTypeName","src":"10505:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10504:23:89"},"returnParameters":{"id":13614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13613,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13650,"src":"10545:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13612,"name":"bytes","nodeType":"ElementaryTypeName","src":"10545:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10544:14:89"},"scope":13728,"src":"10452:728:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13689,"nodeType":"Block","src":"11297:494:89","statements":[{"assignments":[13658,13660],"declarations":[{"constant":false,"id":13658,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":13689,"src":"11308:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13657,"name":"uint256","nodeType":"ElementaryTypeName","src":"11308:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13660,"mutability":"mutable","name":"tokenIndex","nodeType":"VariableDeclaration","scope":13689,"src":"11329:18:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13659,"name":"uint256","nodeType":"ElementaryTypeName","src":"11329:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13665,"initialValue":{"arguments":[{"id":13663,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13652,"src":"11394:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13661,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"11351:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokenOut","nodeType":"MemberAccess","referencedDeclaration":1250,"src":"11351:42:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256,uint256)"}},"id":13664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11351:52:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11307:96:89"},{"condition":{"arguments":[{"id":13667,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"11438:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13666,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"11418:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11418:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13687,"nodeType":"Block","src":"11653:132:89","statements":[{"expression":{"id":13685,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13652,"src":"11766:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13656,"id":13686,"nodeType":"Return","src":"11759:15:89"}]},"id":13688,"nodeType":"IfStatement","src":"11414:371:89","trueBody":{"id":13684,"nodeType":"Block","src":"11452:195:89","statements":[{"expression":{"id":13673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13669,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"11466:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13671,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"11506:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13670,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"11480:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":13672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11480:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11466:52:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13674,"nodeType":"ExpressionStatement","src":"11466:52:89"},{"expression":{"arguments":[{"expression":{"expression":{"id":13677,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"11550:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":1101,"src":"11550:29:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":13679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_ONE_TOKEN_OUT","nodeType":"MemberAccess","src":"11550:60:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":13680,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13658,"src":"11612:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13681,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13660,"src":"11625:10:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13675,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"11539:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13676,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"11539:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11539:97:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13656,"id":13683,"nodeType":"Return","src":"11532:104:89"}]}}]},"id":13690,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactBptInForOneTokenOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":13653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13652,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13690,"src":"11243:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13651,"name":"bytes","nodeType":"ElementaryTypeName","src":"11243:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11242:23:89"},"returnParameters":{"id":13656,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13655,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13690,"src":"11283:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13654,"name":"bytes","nodeType":"ElementaryTypeName","src":"11283:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11282:14:89"},"scope":13728,"src":"11186:605:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":13726,"nodeType":"Block","src":"11906:458:89","statements":[{"assignments":[13698],"declarations":[{"constant":false,"id":13698,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":13726,"src":"11916:19:89","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13697,"name":"uint256","nodeType":"ElementaryTypeName","src":"11916:7:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13703,"initialValue":{"arguments":[{"id":13701,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13692,"src":"11982:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":13699,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"11938:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exactBptInForTokensOut","nodeType":"MemberAccess","referencedDeclaration":1270,"src":"11938:43:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$","typeString":"function (bytes memory) pure returns (uint256)"}},"id":13702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11938:53:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11916:75:89"},{"condition":{"arguments":[{"id":13705,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13698,"src":"12026:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13704,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12099,"src":"12006:19:89","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":13706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12006:32:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":13724,"nodeType":"Block","src":"12226:132:89","statements":[{"expression":{"id":13722,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13692,"src":"12339:8:89","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13696,"id":13723,"nodeType":"Return","src":"12332:15:89"}]},"id":13725,"nodeType":"IfStatement","src":"12002:356:89","trueBody":{"id":13721,"nodeType":"Block","src":"12040:180:89","statements":[{"expression":{"id":13711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13707,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13698,"src":"12054:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":13709,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13698,"src":"12094:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13708,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12113,"src":"12068:25:89","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":13710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12068:38:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12054:52:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13712,"nodeType":"ExpressionStatement","src":"12054:52:89"},{"expression":{"arguments":[{"expression":{"expression":{"id":13715,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"12138:20:89","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":13716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":1101,"src":"12138:29:89","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":13717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"12138:57:89","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":13718,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13698,"src":"12197:11:89","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13713,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12127:3:89","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"12127:10:89","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12127:82:89","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":13696,"id":13720,"nodeType":"Return","src":"12120:89:89"}]}}]},"id":13727,"implemented":true,"kind":"function","modifiers":[],"name":"_doWeightedExactBptInForTokensOutReplacements","nodeType":"FunctionDefinition","parameters":{"id":13693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13692,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":13727,"src":"11852:21:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13691,"name":"bytes","nodeType":"ElementaryTypeName","src":"11852:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11851:23:89"},"returnParameters":{"id":13696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13695,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13727,"src":"11892:12:89","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13694,"name":"bytes","nodeType":"ElementaryTypeName","src":"11892:5:89","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11891:14:89"},"scope":13728,"src":"11797:567:89","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":13729,"src":"1546:10820:89"}],"src":"688:11679:89"},"id":89},"contracts/relayer/VaultPermit.sol":{"ast":{"absolutePath":"contracts/relayer/VaultPermit.sol","exportedSymbols":{"VaultPermit":[13810]},"id":13811,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13730,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:90"},{"id":13731,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:90"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol","id":13732,"nodeType":"ImportDirective","scope":13811,"sourceUnit":2127,"src":"747:93:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol","id":13733,"nodeType":"ImportDirective","scope":13811,"sourceUnit":2150,"src":"841:96:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":13734,"nodeType":"ImportDirective","scope":13811,"sourceUnit":3618,"src":"938:65:90","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/relayer/IBaseRelayerLibrary.sol","file":"./IBaseRelayerLibrary.sol","id":13735,"nodeType":"ImportDirective","scope":13811,"sourceUnit":12115,"src":"1005:35:90","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":13737,"name":"IBaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":12114,"src":"1302:19:90","typeDescriptions":{"typeIdentifier":"t_contract$_IBaseRelayerLibrary_$12114","typeString":"contract IBaseRelayerLibrary"}},"id":13738,"nodeType":"InheritanceSpecifier","src":"1302:19:90"}],"contractDependencies":[8793,12114],"contractKind":"contract","documentation":{"id":13736,"nodeType":"StructuredDocumentation","src":"1042:226:90","text":" @title VaultPermit\n @notice Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\n @dev All functions must be payable so they can be called from a multicall involving ETH"},"fullyImplemented":false,"id":13810,"linearizedBaseContracts":[13810,12114,8793],"name":"VaultPermit","nodeType":"ContractDefinition","nodes":[{"body":{"id":13771,"nodeType":"Block","src":"1525:83:90","statements":[{"expression":{"arguments":[{"id":13758,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13742,"src":"1548:5:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":13761,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"1563:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1563:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":13760,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1555:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13759,"name":"address","nodeType":"ElementaryTypeName","src":"1555:7:90","typeDescriptions":{}}},"id":13763,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1555:19:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13764,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13744,"src":"1576:5:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13765,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13746,"src":"1583:8:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13766,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13748,"src":"1593:1:90","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":13767,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13750,"src":"1596:1:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13768,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13752,"src":"1599:1:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13755,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13740,"src":"1535:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2126","typeString":"contract IERC20Permit"}},"id":13757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":2111,"src":"1535:12:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":13769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1535:66:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13770,"nodeType":"ExpressionStatement","src":"1535:66:90"}]},"functionSelector":"8d64cfbc","id":13772,"implemented":true,"kind":"function","modifiers":[],"name":"vaultPermit","nodeType":"FunctionDefinition","parameters":{"id":13753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13740,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13772,"src":"1358:18:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2126","typeString":"contract IERC20Permit"},"typeName":{"id":13739,"name":"IERC20Permit","nodeType":"UserDefinedTypeName","referencedDeclaration":2126,"src":"1358:12:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20Permit_$2126","typeString":"contract IERC20Permit"}},"visibility":"internal"},{"constant":false,"id":13742,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":13772,"src":"1386:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13741,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13744,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":13772,"src":"1409:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13743,"name":"uint256","nodeType":"ElementaryTypeName","src":"1409:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13746,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","scope":13772,"src":"1432:16:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13745,"name":"uint256","nodeType":"ElementaryTypeName","src":"1432:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13748,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":13772,"src":"1458:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13747,"name":"uint8","nodeType":"ElementaryTypeName","src":"1458:5:90","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":13750,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":13772,"src":"1475:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13749,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1475:7:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13752,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":13772,"src":"1494:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1494:7:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1348:161:90"},"returnParameters":{"id":13754,"nodeType":"ParameterList","parameters":[],"src":"1525:0:90"},"scope":13810,"src":"1328:280:90","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":13808,"nodeType":"Block","src":"1838:91:90","statements":[{"expression":{"arguments":[{"id":13794,"name":"holder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13776,"src":"1861:6:90","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":13797,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":12058,"src":"1877:8:90","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1877:10:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":13796,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1869:7:90","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13795,"name":"address","nodeType":"ElementaryTypeName","src":"1869:7:90","typeDescriptions":{}}},"id":13799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1869:19:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":13800,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13778,"src":"1890:5:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13801,"name":"expiry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13780,"src":"1897:6:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13802,"name":"allowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13782,"src":"1905:7:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":13803,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13784,"src":"1914:1:90","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":13804,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13786,"src":"1917:1:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":13805,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13788,"src":"1920:1:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":13791,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13774,"src":"1848:5:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$2149","typeString":"contract IERC20PermitDAI"}},"id":13793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":2148,"src":"1848:12:90","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,bool,uint8,bytes32,bytes32) external"}},"id":13806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1848:74:90","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13807,"nodeType":"ExpressionStatement","src":"1848:74:90"}]},"functionSelector":"959fc17a","id":13809,"implemented":true,"kind":"function","modifiers":[],"name":"vaultPermitDAI","nodeType":"FunctionDefinition","parameters":{"id":13789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13774,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":13809,"src":"1647:21:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$2149","typeString":"contract IERC20PermitDAI"},"typeName":{"id":13773,"name":"IERC20PermitDAI","nodeType":"UserDefinedTypeName","referencedDeclaration":2149,"src":"1647:15:90","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20PermitDAI_$2149","typeString":"contract IERC20PermitDAI"}},"visibility":"internal"},{"constant":false,"id":13776,"mutability":"mutable","name":"holder","nodeType":"VariableDeclaration","scope":13809,"src":"1678:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":13775,"name":"address","nodeType":"ElementaryTypeName","src":"1678:7:90","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":13778,"mutability":"mutable","name":"nonce","nodeType":"VariableDeclaration","scope":13809,"src":"1702:13:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13777,"name":"uint256","nodeType":"ElementaryTypeName","src":"1702:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13780,"mutability":"mutable","name":"expiry","nodeType":"VariableDeclaration","scope":13809,"src":"1725:14:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13779,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:90","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":13782,"mutability":"mutable","name":"allowed","nodeType":"VariableDeclaration","scope":13809,"src":"1749:12:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":13781,"name":"bool","nodeType":"ElementaryTypeName","src":"1749:4:90","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":13784,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","scope":13809,"src":"1771:7:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":13783,"name":"uint8","nodeType":"ElementaryTypeName","src":"1771:5:90","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":13786,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","scope":13809,"src":"1788:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13785,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1788:7:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":13788,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","scope":13809,"src":"1807:9:90","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13787,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1807:7:90","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1637:185:90"},"returnParameters":{"id":13790,"nodeType":"ParameterList","parameters":[],"src":"1838:0:90"},"scope":13810,"src":"1614:315:90","stateMutability":"payable","virtual":false,"visibility":"public"}],"scope":13811,"src":"1269:662:90"}],"src":"688:1244:90"},"id":90},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"ast":{"absolutePath":"contracts/relayer/special/DoubleEntrypointFixRelayer.sol","exportedSymbols":{"DoubleEntrypointFixRelayer":[14350]},"id":14351,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":13812,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:91"},{"id":13813,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:91"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol","id":13814,"nodeType":"ImportDirective","scope":14351,"sourceUnit":971,"src":"747:83:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol","id":13815,"nodeType":"ImportDirective","scope":14351,"sourceUnit":1299,"src":"831:87:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":13816,"nodeType":"ImportDirective","scope":14351,"sourceUnit":3618,"src":"919:65:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol","id":13817,"nodeType":"ImportDirective","scope":14351,"sourceUnit":3063,"src":"985:78:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","file":"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol","id":13818,"nodeType":"ImportDirective","scope":14351,"sourceUnit":4684,"src":"1065:77:91","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":13819,"nodeType":"ImportDirective","scope":14351,"sourceUnit":8496,"src":"1143:79:91","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":13821,"name":"IFlashLoanRecipient","nodeType":"UserDefinedTypeName","referencedDeclaration":3062,"src":"1511:19:91","typeDescriptions":{"typeIdentifier":"t_contract$_IFlashLoanRecipient_$3062","typeString":"contract IFlashLoanRecipient"}},"id":13822,"nodeType":"InheritanceSpecifier","src":"1511:19:91"}],"contractDependencies":[3062],"contractKind":"contract","documentation":{"id":13820,"nodeType":"StructuredDocumentation","src":"1224:247:91","text":" @title DoubleEntrypointFixRelayer\n @notice This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix\n tokens). It doesn't use the standard relayer architecture to simplify the code."},"fullyImplemented":true,"id":14350,"linearizedBaseContracts":[14350,3062],"name":"DoubleEntrypointFixRelayer","nodeType":"ContractDefinition","nodes":[{"id":13825,"libraryName":{"id":13823,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1543:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1537:27:91","typeName":{"id":13824,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1557:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"constant":true,"functionSelector":"fd6ea58d","id":13830,"mutability":"constant","name":"BTC_STABLE_POOL_ADDRESS","nodeType":"VariableDeclaration","scope":14350,"src":"1614:99:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13826,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1614:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307846656164643338396135633432373935324438666462383035374436433862613131353663433536","id":13828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1670:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xFeadd389a5c427952D8fdb8057D6C8ba1156cC56"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13827,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1663:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1663:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"e4231540","id":13833,"mutability":"constant","name":"BTC_STABLE_POOL_ID","nodeType":"VariableDeclaration","scope":14350,"src":"1719:111:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1719:7:91","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307866656164643338396135633432373935326438666462383035376436633862613131353663633536303030303030303030303030303030303030303030303636","id":13832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1764:66:91","typeDescriptions":{"typeIdentifier":"t_rational_115194588061805410800048782926783719656362775004276595086089087795503944433766_by_1","typeString":"int_const 1151...(70 digits omitted)...3766"},"value":"0xfeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066"},"visibility":"public"},{"constant":true,"functionSelector":"9b452931","id":13838,"mutability":"constant","name":"wBTC","nodeType":"VariableDeclaration","scope":14350,"src":"1881:80:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13834,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1881:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307832323630464143354535353432613737334161343466424366654466374331393362633243353939","id":13836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1918:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13835,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1911:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1911:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"5fbc1031","id":13843,"mutability":"constant","name":"renBTC","nodeType":"VariableDeclaration","scope":14350,"src":"1967:82:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13839,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1967:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307845423443323738316534656241383034434539613938303343363764303839333433366242323744","id":13841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2006:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13840,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1999:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1999:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"e043f56f","id":13848,"mutability":"constant","name":"sBTC","nodeType":"VariableDeclaration","scope":14350,"src":"2055:80:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13844,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2055:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307866453138626536623342643838413244324137663932386430303239324537613939363343664336","id":13846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2092:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13845,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2085:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2085:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"6ad3aaa4","id":13853,"mutability":"constant","name":"sBTC_IMPLEMENTATION","nodeType":"VariableDeclaration","scope":14350,"src":"2141:95:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13849,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2141:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307831384663433334626445616146394533623639443235303033343335323763306339393562316436","id":13851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2193:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x18FcC34bdEaaF9E3b69D2500343527c0c995b1d6"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13850,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2186:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2186:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"0a5e13dc","id":13858,"mutability":"constant","name":"SNX_WEIGHTED_POOL_ADDRESS","nodeType":"VariableDeclaration","scope":14350,"src":"2243:101:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13854,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2243:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307830373266313442383541446436333438384444614438386638353546646134413939643661433942","id":13856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2301:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x072f14B85ADd63488DDaD88f855Fda4A99d6aC9B"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13855,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2294:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2294:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"5dc80bd0","id":13861,"mutability":"constant","name":"SNX_WEIGHTED_POOL_ID","nodeType":"VariableDeclaration","scope":14350,"src":"2350:113:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":13859,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2350:7:91","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830373266313462383561646436333438386464616438386638353566646134613939643661633962303030323030303030303030303030303030303030303237","id":13860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2397:66:91","typeDescriptions":{"typeIdentifier":"t_rational_3249374757253751268355276259122675239274040171040535564758290851987386794023_by_1","typeString":"int_const 3249...(68 digits omitted)...4023"},"value":"0x072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027"},"visibility":"public"},{"constant":true,"functionSelector":"e8d6101e","id":13866,"mutability":"constant","name":"SNX","nodeType":"VariableDeclaration","scope":14350,"src":"2469:79:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13862,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2469:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307843303131613733656538353736466234364635453163353735316341334239466530616632613646","id":13864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2505:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13863,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2498:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2498:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"ad5c4648","id":13871,"mutability":"constant","name":"WETH","nodeType":"VariableDeclaration","scope":14350,"src":"2554:80:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13867,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2554:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307843303261614133396232323346453844304130653543344632376541443930383343373536436332","id":13869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2591:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13868,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2584:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2584:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"functionSelector":"a2abb55f","id":13876,"mutability":"constant","name":"SNX_IMPLEMENTATION","nodeType":"VariableDeclaration","scope":14350,"src":"2640:94:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":13872,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"2640:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"value":{"arguments":[{"hexValue":"307836333930333264333930303837356134636634393630614436623965653434313635376141393343","id":13874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2691:42:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"value":"0x639032d3900875a4cf4960aD6b9ee441657aA93C"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":13873,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"2684:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":13875,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2684:50:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"public"},{"constant":true,"id":13879,"mutability":"constant","name":"_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"VariableDeclaration","scope":14350,"src":"2858:79:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13877,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":13878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2936:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"private"},{"constant":false,"id":13881,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":14350,"src":"2944:31:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":13880,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"2944:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":13883,"mutability":"immutable","name":"_protocolFeeCollector","nodeType":"VariableDeclaration","scope":14350,"src":"2981:62:91","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"},"typeName":{"id":13882,"name":"IProtocolFeesCollector","nodeType":"UserDefinedTypeName","referencedDeclaration":3152,"src":"2981:22:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"visibility":"private"},{"body":{"id":13898,"nodeType":"Block","src":"3076:97:91","statements":[{"expression":{"id":13890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13888,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"3086:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13889,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13885,"src":"3095:5:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"3086:14:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13891,"nodeType":"ExpressionStatement","src":"3086:14:91"},{"expression":{"id":13896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":13892,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13883,"src":"3110:21:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":13893,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13885,"src":"3134:5:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getProtocolFeesCollector","nodeType":"MemberAccess","referencedDeclaration":3604,"src":"3134:30:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IProtocolFeesCollector_$3152_$","typeString":"function () view external returns (contract IProtocolFeesCollector)"}},"id":13895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3134:32:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"src":"3110:56:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":13897,"nodeType":"ExpressionStatement","src":"3110:56:91"}]},"id":13899,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":13886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13885,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":13899,"src":"3062:12:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":13884,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"3062:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3061:14:91"},"returnParameters":{"id":13887,"nodeType":"ParameterList","parameters":[],"src":"3076:0:91"},"scope":14350,"src":"3050:123:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":13906,"nodeType":"Block","src":"3228:30:91","statements":[{"expression":{"id":13904,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"3245:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"functionReturnParameters":13903,"id":13905,"nodeType":"Return","src":"3238:13:91"}]},"functionSelector":"8d928af8","id":13907,"implemented":true,"kind":"function","modifiers":[],"name":"getVault","nodeType":"FunctionDefinition","parameters":{"id":13900,"nodeType":"ParameterList","parameters":[],"src":"3196:2:91"},"returnParameters":{"id":13903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":13902,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":13907,"src":"3220:6:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":13901,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"3220:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"3219:8:91"},"scope":14350,"src":"3179:79:91","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":14027,"nodeType":"Block","src":"3583:1272:91","statements":[{"assignments":[13914],"declarations":[{"constant":false,"id":13914,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14027,"src":"3593:22:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13912,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3593:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13913,"nodeType":"ArrayTypeName","src":"3593:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":13920,"initialValue":{"arguments":[{"hexValue":"33","id":13918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3631:1:91","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"id":13917,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3618:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":13915,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"3622:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13916,"nodeType":"ArrayTypeName","src":"3622:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":13919,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3618:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3593:40:91"},{"expression":{"id":13925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13921,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13914,"src":"3643:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13923,"indexExpression":{"hexValue":"30","id":13922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3650:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3643:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13924,"name":"wBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13838,"src":"3655:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"3643:16:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13926,"nodeType":"ExpressionStatement","src":"3643:16:91"},{"expression":{"id":13931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13927,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13914,"src":"3669:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13929,"indexExpression":{"hexValue":"31","id":13928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3676:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3669:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13930,"name":"renBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13843,"src":"3681:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"3669:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13932,"nodeType":"ExpressionStatement","src":"3669:18:91"},{"expression":{"id":13937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":13933,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13914,"src":"3697:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13935,"indexExpression":{"hexValue":"32","id":13934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3704:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3697:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":13936,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"3709:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"3697:16:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13938,"nodeType":"ExpressionStatement","src":"3697:16:91"},{"assignments":[13940],"declarations":[{"constant":false,"id":13940,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":14027,"src":"3723:19:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13939,"name":"uint256","nodeType":"ElementaryTypeName","src":"3723:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":13946,"initialValue":{"arguments":[{"expression":{"id":13943,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3779:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3779:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":13941,"name":"BTC_STABLE_POOL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13830,"src":"3745:23:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"3745:33:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3745:45:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3723:67:91"},{"expression":{"arguments":[{"id":13948,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"4089:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"arguments":[{"arguments":[{"id":13953,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13883,"src":"4118:21:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}],"id":13952,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4110:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":13951,"name":"address","nodeType":"ElementaryTypeName","src":"4110:7:91","typeDescriptions":{}}},"id":13954,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4110:30:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":13949,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"4095:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"4095:14:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":13955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4095:46:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13947,"name":"_withdrawFromProtocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14197,"src":"4055:33:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":13956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:87:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13957,"nodeType":"ExpressionStatement","src":"4055:87:91"},{"assignments":[13959],"declarations":[{"constant":false,"id":13959,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":14027,"src":"4182:21:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":13958,"name":"bytes","nodeType":"ElementaryTypeName","src":"4182:5:91","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":13965,"initialValue":{"arguments":[{"id":13962,"name":"_STABLE_POOL_EXIT_KIND_EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13879,"src":"4217:50:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":13963,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13940,"src":"4269:11:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":13960,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4206:3:91","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":13961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"4206:10:91","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":13964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4206:75:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4182:99:91"},{"assignments":[13969],"declarations":[{"constant":false,"id":13969,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":14027,"src":"4291:37:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":13968,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3419,"src":"4291:22:91","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"id":13984,"initialValue":{"arguments":[{"arguments":[{"id":13973,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13914,"src":"4377:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":13972,"name":"_asIAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"4367:9:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"}},"id":13974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4367:17:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"arguments":[{"expression":{"id":13978,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13914,"src":"4412:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":13979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"4412:13:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":13977,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4398:13:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":13975,"name":"uint256","nodeType":"ElementaryTypeName","src":"4402:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":13976,"nodeType":"ArrayTypeName","src":"4402:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":13980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4398:28:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":13981,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13959,"src":"4440:8:91","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":13982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4462:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":13970,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"4331:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3617_$","typeString":"type(contract IVault)"}},"id":13971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitPoolRequest","nodeType":"MemberAccess","referencedDeclaration":3419,"src":"4331:22:91","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExitPoolRequest_$3419_storage_ptr_$","typeString":"type(struct IVault.ExitPoolRequest storage pointer)"}},"id":13983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4331:146:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"nodeType":"VariableDeclarationStatement","src":"4291:186:91"},{"expression":{"arguments":[{"id":13988,"name":"BTC_STABLE_POOL_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13833,"src":"4507:18:91","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":13989,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4527:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4527:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":13991,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4539:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":13992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4539:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":13993,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13969,"src":"4551:7:91","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":13985,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"4487:8:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":13986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4487:10:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":13987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3408,"src":"4487:19:91","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3419_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":13994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4487:72:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":13995,"nodeType":"ExpressionStatement","src":"4487:72:91"},{"assignments":[13999],"declarations":[{"constant":false,"id":13999,"mutability":"mutable","name":"sBTCEntrypoints","nodeType":"VariableDeclaration","scope":14027,"src":"4644:31:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":13997,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4644:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":13998,"nodeType":"ArrayTypeName","src":"4644:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14005,"initialValue":{"arguments":[{"hexValue":"32","id":14003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4691:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":14002,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4678:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14000,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"4682:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14001,"nodeType":"ArrayTypeName","src":"4682:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4678:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"4644:49:91"},{"expression":{"id":14010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14006,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13999,"src":"4703:15:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14008,"indexExpression":{"hexValue":"30","id":14007,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4703:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14009,"name":"sBTC_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13853,"src":"4724:19:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"4703:40:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14011,"nodeType":"ExpressionStatement","src":"4703:40:91"},{"expression":{"id":14021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14012,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13999,"src":"4753:15:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14014,"indexExpression":{"hexValue":"31","id":14013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4769:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4753:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14018,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"4789:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":14017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4781:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14016,"name":"address","nodeType":"ElementaryTypeName","src":"4781:7:91","typeDescriptions":{}}},"id":14019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4781:13:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14015,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"4774:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":14020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4774:21:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"4753:42:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14022,"nodeType":"ExpressionStatement","src":"4753:42:91"},{"expression":{"arguments":[{"id":14024,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13999,"src":"4832:15:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":14023,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14307,"src":"4805:26:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":14025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4805:43:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14026,"nodeType":"ExpressionStatement","src":"4805:43:91"}]},"documentation":{"id":13908,"nodeType":"StructuredDocumentation","src":"3264:276:91","text":" @notice Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact\n nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n Balancer Governance."},"functionSelector":"cbc87782","id":14028,"implemented":true,"kind":"function","modifiers":[],"name":"exitBTCStablePool","nodeType":"FunctionDefinition","parameters":{"id":13909,"nodeType":"ParameterList","parameters":[],"src":"3571:2:91"},"returnParameters":{"id":13910,"nodeType":"ParameterList","parameters":[],"src":"3583:0:91"},"scope":14350,"src":"3545:1310:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14144,"nodeType":"Block","src":"5173:1243:91","statements":[{"assignments":[14035],"declarations":[{"constant":false,"id":14035,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14144,"src":"5183:22:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14033,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"5183:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14034,"nodeType":"ArrayTypeName","src":"5183:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14041,"initialValue":{"arguments":[{"hexValue":"32","id":14039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5221:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":14038,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5208:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14036,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"5212:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14037,"nodeType":"ArrayTypeName","src":"5212:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5208:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5183:40:91"},{"expression":{"id":14046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14042,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14035,"src":"5233:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14044,"indexExpression":{"hexValue":"30","id":14043,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5240:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5233:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14045,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13866,"src":"5245:3:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"5233:15:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14047,"nodeType":"ExpressionStatement","src":"5233:15:91"},{"expression":{"id":14052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14048,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14035,"src":"5258:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14050,"indexExpression":{"hexValue":"31","id":14049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5265:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5258:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14051,"name":"WETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13871,"src":"5270:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"5258:16:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14053,"nodeType":"ExpressionStatement","src":"5258:16:91"},{"assignments":[14055],"declarations":[{"constant":false,"id":14055,"mutability":"mutable","name":"bptAmountIn","nodeType":"VariableDeclaration","scope":14144,"src":"5284:19:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14054,"name":"uint256","nodeType":"ElementaryTypeName","src":"5284:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":14061,"initialValue":{"arguments":[{"expression":{"id":14058,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5342:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5342:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":14056,"name":"SNX_WEIGHTED_POOL_ADDRESS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13858,"src":"5306:25:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"5306:35:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5306:47:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5284:69:91"},{"expression":{"arguments":[{"id":14063,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13866,"src":"5650:3:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"arguments":[{"arguments":[{"id":14068,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13883,"src":"5677:21:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}],"id":14067,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5669:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14066,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:91","typeDescriptions":{}}},"id":14069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5669:30:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14064,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13866,"src":"5655:3:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"5655:13:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5655:45:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14062,"name":"_withdrawFromProtocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14197,"src":"5616:33:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_uint256_$returns$__$","typeString":"function (contract IERC20,uint256)"}},"id":14071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5616:85:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14072,"nodeType":"ExpressionStatement","src":"5616:85:91"},{"assignments":[14074],"declarations":[{"constant":false,"id":14074,"mutability":"mutable","name":"userData","nodeType":"VariableDeclaration","scope":14144,"src":"5741:21:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14073,"name":"bytes","nodeType":"ElementaryTypeName","src":"5741:5:91","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":14082,"initialValue":{"arguments":[{"expression":{"expression":{"id":14077,"name":"WeightedPoolUserData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1298,"src":"5776:20:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_WeightedPoolUserData_$1298_$","typeString":"type(library WeightedPoolUserData)"}},"id":14078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitKind","nodeType":"MemberAccess","referencedDeclaration":1101,"src":"5776:29:91","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ExitKind_$1101_$","typeString":"type(enum WeightedPoolUserData.ExitKind)"}},"id":14079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"EXACT_BPT_IN_FOR_TOKENS_OUT","nodeType":"MemberAccess","src":"5776:57:91","typeDescriptions":{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"}},{"id":14080,"name":"bptAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14055,"src":"5835:11:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_ExitKind_$1101","typeString":"enum WeightedPoolUserData.ExitKind"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":14075,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5765:3:91","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5765:10:91","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5765:82:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"5741:106:91"},{"assignments":[14086],"declarations":[{"constant":false,"id":14086,"mutability":"mutable","name":"request","nodeType":"VariableDeclaration","scope":14144,"src":"5857:37:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest"},"typeName":{"id":14085,"name":"IVault.ExitPoolRequest","nodeType":"UserDefinedTypeName","referencedDeclaration":3419,"src":"5857:22:91","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_storage_ptr","typeString":"struct IVault.ExitPoolRequest"}},"visibility":"internal"}],"id":14101,"initialValue":{"arguments":[{"arguments":[{"id":14090,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14035,"src":"5943:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":14089,"name":"_asIAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4499,"src":"5933:9:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr_$","typeString":"function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"}},"id":14091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5933:17:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"}},{"arguments":[{"expression":{"id":14095,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14035,"src":"5978:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"5978:13:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14094,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5964:13:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14092,"name":"uint256","nodeType":"ElementaryTypeName","src":"5968:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14093,"nodeType":"ArrayTypeName","src":"5968:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5964:28:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"id":14098,"name":"userData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14074,"src":"6006:8:91","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"66616c7365","id":14099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6028:5:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IAsset_$2904_$dyn_memory_ptr","typeString":"contract IAsset[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":14087,"name":"IVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3617,"src":"5897:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IVault_$3617_$","typeString":"type(contract IVault)"}},"id":14088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ExitPoolRequest","nodeType":"MemberAccess","referencedDeclaration":3419,"src":"5897:22:91","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_ExitPoolRequest_$3419_storage_ptr_$","typeString":"type(struct IVault.ExitPoolRequest storage pointer)"}},"id":14100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5897:146:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}},"nodeType":"VariableDeclarationStatement","src":"5857:186:91"},{"expression":{"arguments":[{"id":14105,"name":"SNX_WEIGHTED_POOL_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13861,"src":"6073:20:91","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":14106,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6095:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6095:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":14108,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6107:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6107:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":14110,"name":"request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14086,"src":"6119:7:91","typeDescriptions":{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_struct$_ExitPoolRequest_$3419_memory_ptr","typeString":"struct IVault.ExitPoolRequest memory"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":14102,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13907,"src":"6053:8:91","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":14103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:10:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":14104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"exitPool","nodeType":"MemberAccess","referencedDeclaration":3408,"src":"6053:19:91","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3419_memory_ptr_$returns$__$","typeString":"function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"}},"id":14111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6053:74:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14112,"nodeType":"ExpressionStatement","src":"6053:74:91"},{"assignments":[14116],"declarations":[{"constant":false,"id":14116,"mutability":"mutable","name":"snxEntrypoints","nodeType":"VariableDeclaration","scope":14144,"src":"6211:30:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14114,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6211:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14115,"nodeType":"ArrayTypeName","src":"6211:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14122,"initialValue":{"arguments":[{"hexValue":"32","id":14120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6257:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":14119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6244:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14117,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6248:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14118,"nodeType":"ArrayTypeName","src":"6248:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6244:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6211:48:91"},{"expression":{"id":14127,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14123,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14116,"src":"6269:14:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14125,"indexExpression":{"hexValue":"30","id":14124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6284:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6269:17:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14126,"name":"SNX_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"6289:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"6269:38:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14128,"nodeType":"ExpressionStatement","src":"6269:38:91"},{"expression":{"id":14138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14129,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14116,"src":"6317:14:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14131,"indexExpression":{"hexValue":"31","id":14130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6332:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6317:17:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14135,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13866,"src":"6352:3:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":14134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6344:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14133,"name":"address","nodeType":"ElementaryTypeName","src":"6344:7:91","typeDescriptions":{}}},"id":14136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6344:12:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14132,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"6337:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":14137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6337:20:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"6317:40:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14139,"nodeType":"ExpressionStatement","src":"6317:40:91"},{"expression":{"arguments":[{"id":14141,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14116,"src":"6394:14:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":14140,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14307,"src":"6367:26:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":14142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6367:42:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14143,"nodeType":"ExpressionStatement","src":"6367:42:91"}]},"documentation":{"id":14029,"nodeType":"StructuredDocumentation","src":"4861:267:91","text":" @notice Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap\n fees. This relayer must have been previously approved by the caller, and proper permissions granted by\n Balancer Governance."},"functionSelector":"69af9c7e","id":14145,"implemented":true,"kind":"function","modifiers":[],"name":"exitSNXWeightedPool","nodeType":"FunctionDefinition","parameters":{"id":14030,"nodeType":"ParameterList","parameters":[],"src":"5161:2:91"},"returnParameters":{"id":14031,"nodeType":"ParameterList","parameters":[],"src":"5173:0:91"},"scope":14350,"src":"5133:1283:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":14196,"nodeType":"Block","src":"6504:254:91","statements":[{"assignments":[14155],"declarations":[{"constant":false,"id":14155,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14196,"src":"6514:22:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14153,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6514:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14154,"nodeType":"ArrayTypeName","src":"6514:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14161,"initialValue":{"arguments":[{"hexValue":"31","id":14159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6552:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":14158,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6539:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14156,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6543:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14157,"nodeType":"ArrayTypeName","src":"6543:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6539:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6514:40:91"},{"expression":{"id":14166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14162,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14155,"src":"6564:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14164,"indexExpression":{"hexValue":"30","id":14163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6571:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6564:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14165,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14147,"src":"6576:5:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"6564:17:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14167,"nodeType":"ExpressionStatement","src":"6564:17:91"},{"assignments":[14172],"declarations":[{"constant":false,"id":14172,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":14196,"src":"6591:24:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14170,"name":"uint256","nodeType":"ElementaryTypeName","src":"6591:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14171,"nodeType":"ArrayTypeName","src":"6591:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14178,"initialValue":{"arguments":[{"hexValue":"31","id":14176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6632:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":14175,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6618:13:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14173,"name":"uint256","nodeType":"ElementaryTypeName","src":"6622:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14174,"nodeType":"ArrayTypeName","src":"6622:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6618:16:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6591:43:91"},{"expression":{"id":14183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14179,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"6644:7:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14181,"indexExpression":{"hexValue":"30","id":14180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6652:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6644:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14182,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14149,"src":"6657:6:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6644:19:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14184,"nodeType":"ExpressionStatement","src":"6644:19:91"},{"expression":{"arguments":[{"id":14188,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14155,"src":"6718:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":14189,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14172,"src":"6726:7:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"arguments":[{"id":14192,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"6743:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":14191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6735:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14190,"name":"address","nodeType":"ElementaryTypeName","src":"6735:7:91","typeDescriptions":{}}},"id":14193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6735:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":14185,"name":"_protocolFeeCollector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13883,"src":"6674:21:91","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeesCollector_$3152","typeString":"contract IProtocolFeesCollector"}},"id":14187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdrawCollectedFees","nodeType":"MemberAccess","referencedDeclaration":3112,"src":"6674:43:91","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (contract IERC20[] memory,uint256[] memory,address) external"}},"id":14194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6674:77:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14195,"nodeType":"ExpressionStatement","src":"6674:77:91"}]},"id":14197,"implemented":true,"kind":"function","modifiers":[],"name":"_withdrawFromProtocolFeeCollector","nodeType":"FunctionDefinition","parameters":{"id":14150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14147,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":14197,"src":"6465:12:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14146,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6465:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14149,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14197,"src":"6479:14:91","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14148,"name":"uint256","nodeType":"ElementaryTypeName","src":"6479:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6464:30:91"},"returnParameters":{"id":14151,"nodeType":"ParameterList","parameters":[],"src":"6504:0:91"},"scope":14350,"src":"6422:336:91","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":14263,"nodeType":"Block","src":"6897:431:91","statements":[{"assignments":[14204],"declarations":[{"constant":false,"id":14204,"mutability":"mutable","name":"snxEntrypoints","nodeType":"VariableDeclaration","scope":14263,"src":"6907:30:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14202,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6907:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14203,"nodeType":"ArrayTypeName","src":"6907:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14210,"initialValue":{"arguments":[{"hexValue":"32","id":14208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6953:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":14207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"6940:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14205,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"6944:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14206,"nodeType":"ArrayTypeName","src":"6944:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6940:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6907:48:91"},{"expression":{"id":14215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14211,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14204,"src":"6965:14:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14213,"indexExpression":{"hexValue":"30","id":14212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6980:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6965:17:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14214,"name":"SNX_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13876,"src":"6985:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"6965:38:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14216,"nodeType":"ExpressionStatement","src":"6965:38:91"},{"expression":{"id":14226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14217,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14204,"src":"7013:14:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14219,"indexExpression":{"hexValue":"31","id":14218,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7028:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7013:17:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14223,"name":"SNX","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13866,"src":"7048:3:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":14222,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7040:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14221,"name":"address","nodeType":"ElementaryTypeName","src":"7040:7:91","typeDescriptions":{}}},"id":14224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7040:12:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14220,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"7033:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":14225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7033:20:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"7013:40:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14227,"nodeType":"ExpressionStatement","src":"7013:40:91"},{"expression":{"arguments":[{"id":14229,"name":"snxEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14204,"src":"7091:14:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":14228,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14307,"src":"7064:26:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":14230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7064:42:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14231,"nodeType":"ExpressionStatement","src":"7064:42:91"},{"assignments":[14235],"declarations":[{"constant":false,"id":14235,"mutability":"mutable","name":"sBTCEntrypoints","nodeType":"VariableDeclaration","scope":14263,"src":"7117:31:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14233,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"7117:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14234,"nodeType":"ArrayTypeName","src":"7117:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"id":14241,"initialValue":{"arguments":[{"hexValue":"32","id":14239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7164:1:91","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":14238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7151:12:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (contract IERC20[] memory)"},"typeName":{"baseType":{"id":14236,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"7155:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14237,"nodeType":"ArrayTypeName","src":"7155:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}}},"id":14240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7151:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7117:49:91"},{"expression":{"id":14246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14242,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14235,"src":"7176:15:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14244,"indexExpression":{"hexValue":"30","id":14243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7192:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7176:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14245,"name":"sBTC_IMPLEMENTATION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13853,"src":"7197:19:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"7176:40:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14247,"nodeType":"ExpressionStatement","src":"7176:40:91"},{"expression":{"id":14257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14248,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14235,"src":"7226:15:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14250,"indexExpression":{"hexValue":"31","id":14249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7242:1:91","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7226:18:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14254,"name":"sBTC","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13848,"src":"7262:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}],"id":14253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7254:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14252,"name":"address","nodeType":"ElementaryTypeName","src":"7254:7:91","typeDescriptions":{}}},"id":14255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7254:13:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14251,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"7247:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":14256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7247:21:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"7226:42:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14258,"nodeType":"ExpressionStatement","src":"7226:42:91"},{"expression":{"arguments":[{"id":14260,"name":"sBTCEntrypoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14235,"src":"7305:15:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}],"id":14259,"name":"sweepDoubleEntrypointToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14307,"src":"7278:26:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$returns$__$","typeString":"function (contract IERC20[] memory)"}},"id":14261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7278:43:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14262,"nodeType":"ExpressionStatement","src":"7278:43:91"}]},"documentation":{"id":14198,"nodeType":"StructuredDocumentation","src":"6764:97:91","text":" @notice Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector."},"functionSelector":"5f5fb036","id":14264,"implemented":true,"kind":"function","modifiers":[],"name":"sweepSNXsBTC","nodeType":"FunctionDefinition","parameters":{"id":14199,"nodeType":"ParameterList","parameters":[],"src":"6887:2:91"},"returnParameters":{"id":14200,"nodeType":"ParameterList","parameters":[],"src":"6897:0:91"},"scope":14350,"src":"6866:462:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14306,"nodeType":"Block","src":"7548:186:91","statements":[{"assignments":[14275],"declarations":[{"constant":false,"id":14275,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":14306,"src":"7558:24:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14273,"name":"uint256","nodeType":"ElementaryTypeName","src":"7558:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14274,"nodeType":"ArrayTypeName","src":"7558:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":14282,"initialValue":{"arguments":[{"expression":{"id":14279,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14268,"src":"7599:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7599:13:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"7585:13:91","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":14276,"name":"uint256","nodeType":"ElementaryTypeName","src":"7589:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14277,"nodeType":"ArrayTypeName","src":"7589:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":14281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7585:28:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7558:55:91"},{"expression":{"id":14295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":14283,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14275,"src":"7623:7:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14285,"indexExpression":{"hexValue":"30","id":14284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7631:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7623:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":14292,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"7664:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":14291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7656:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14290,"name":"address","nodeType":"ElementaryTypeName","src":"7656:7:91","typeDescriptions":{}}},"id":14293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7656:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":14286,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14268,"src":"7636:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14288,"indexExpression":{"hexValue":"30","id":14287,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7643:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7636:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":2029,"src":"7636:19:91","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":14294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7636:36:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7623:49:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14296,"nodeType":"ExpressionStatement","src":"7623:49:91"},{"expression":{"arguments":[{"id":14300,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7699:4:91","typeDescriptions":{"typeIdentifier":"t_contract$_DoubleEntrypointFixRelayer_$14350","typeString":"contract DoubleEntrypointFixRelayer"}},{"id":14301,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14268,"src":"7705:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},{"id":14302,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14275,"src":"7713:7:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"hexValue":"3078","id":14303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7722:4:91","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DoubleEntrypointFixRelayer_$14350","typeString":"contract DoubleEntrypointFixRelayer"},{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"},{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"expression":{"id":14297,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"7682:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":14299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"flashLoan","nodeType":"MemberAccess","referencedDeclaration":3554,"src":"7682:16:91","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_contract$_IFlashLoanRecipient_$3062_$_t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (contract IFlashLoanRecipient,contract IERC20[] memory,uint256[] memory,bytes memory) external"}},"id":14304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7682:45:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14305,"nodeType":"ExpressionStatement","src":"7682:45:91"}]},"documentation":{"id":14265,"nodeType":"StructuredDocumentation","src":"7334:142:91","text":" @notice Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given\n token."},"functionSelector":"0306ae12","id":14307,"implemented":true,"kind":"function","modifiers":[],"name":"sweepDoubleEntrypointToken","nodeType":"FunctionDefinition","parameters":{"id":14269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14268,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14307,"src":"7517:22:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14266,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"7517:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14267,"nodeType":"ArrayTypeName","src":"7517:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"}],"src":"7516:24:91"},"returnParameters":{"id":14270,"nodeType":"ParameterList","parameters":[],"src":"7548:0:91"},"scope":14350,"src":"7481:253:91","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3061],"body":{"id":14348,"nodeType":"Block","src":"8137:142:91","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":14330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":14324,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8156:3:91","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8156:10:91","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":14328,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"8178:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":14327,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8170:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14326,"name":"address","nodeType":"ElementaryTypeName","src":"8170:7:91","typeDescriptions":{}}},"id":14329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8170:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8156:29:91","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":14331,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"8187:6:91","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":14332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"CALLER_NOT_VAULT","nodeType":"MemberAccess","referencedDeclaration":1433,"src":"8187:23:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14323,"name":"_require","nodeType":"Identifier","overloadedDeclarations":[1316,1335],"referencedDeclaration":1316,"src":"8147:8:91","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$returns$__$","typeString":"function (bool,uint256) pure"}},"id":14333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8147:64:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14334,"nodeType":"ExpressionStatement","src":"8147:64:91"},{"expression":{"arguments":[{"arguments":[{"id":14341,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":13881,"src":"8252:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}],"id":14340,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8244:7:91","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14339,"name":"address","nodeType":"ElementaryTypeName","src":"8244:7:91","typeDescriptions":{}}},"id":14342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8244:15:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":14343,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14314,"src":"8261:7:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":14345,"indexExpression":{"hexValue":"30","id":14344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8269:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8261:10:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":14335,"name":"tokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14311,"src":"8221:6:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[] memory"}},"id":14337,"indexExpression":{"hexValue":"30","id":14336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8228:1:91","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8221:9:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"8221:22:91","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":14346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8221:51:91","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14347,"nodeType":"ExpressionStatement","src":"8221:51:91"}]},"documentation":{"id":14308,"nodeType":"StructuredDocumentation","src":"7740:228:91","text":" @dev Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix\n synth). We only need to repay the first loan as that will automatically all other loans."},"functionSelector":"f04f2707","id":14349,"implemented":true,"kind":"function","modifiers":[],"name":"receiveFlashLoan","nodeType":"FunctionDefinition","overrides":{"id":14321,"nodeType":"OverrideSpecifier","overrides":[],"src":"8128:8:91"},"parameters":{"id":14320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14311,"mutability":"mutable","name":"tokens","nodeType":"VariableDeclaration","scope":14349,"src":"8008:22:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_memory_ptr","typeString":"contract IERC20[]"},"typeName":{"baseType":{"id":14309,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"8008:6:91","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14310,"nodeType":"ArrayTypeName","src":"8008:8:91","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IERC20_$2090_$dyn_storage_ptr","typeString":"contract IERC20[]"}},"visibility":"internal"},{"constant":false,"id":14314,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","scope":14349,"src":"8040:24:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14312,"name":"uint256","nodeType":"ElementaryTypeName","src":"8040:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14313,"nodeType":"ArrayTypeName","src":"8040:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14317,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14349,"src":"8074:16:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14315,"name":"uint256","nodeType":"ElementaryTypeName","src":"8074:7:91","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14316,"nodeType":"ArrayTypeName","src":"8074:9:91","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14319,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14349,"src":"8100:12:91","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14318,"name":"bytes","nodeType":"ElementaryTypeName","src":"8100:5:91","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7998:120:91"},"returnParameters":{"id":14322,"nodeType":"ParameterList","parameters":[],"src":"8137:0:91"},"scope":14350,"src":"7973:306:91","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14351,"src":"1472:6809:91"}],"src":"688:7594:91"},"id":91},"contracts/test/MockBaseRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/test/MockBaseRelayerLibrary.sol","exportedSymbols":{"MockBaseRelayerLibrary":[14417]},"id":14418,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14352,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:92"},{"id":14353,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"755:33:92"},{"absolutePath":"contracts/relayer/BaseRelayerLibrary.sol","file":"../relayer/BaseRelayerLibrary.sol","id":14354,"nodeType":"ImportDirective","scope":14418,"sourceUnit":11603,"src":"883:43:92","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14355,"name":"BaseRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":11602,"src":"963:18:92","typeDescriptions":{"typeIdentifier":"t_contract$_BaseRelayerLibrary_$11602","typeString":"contract BaseRelayerLibrary"}},"id":14356,"nodeType":"InheritanceSpecifier","src":"963:18:92"}],"contractDependencies":[8793,11602,12114],"contractKind":"contract","fullyImplemented":true,"id":14417,"linearizedBaseContracts":[14417,11602,12114,8793],"name":"MockBaseRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":14360,"name":"ChainedReferenceValueRead","nodeType":"EventDefinition","parameters":{"id":14359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14358,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14360,"src":"1020:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1020:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1019:15:92"},"src":"988:47:92"},{"body":{"id":14368,"nodeType":"Block","src":"1093:2:92","statements":[]},"id":14369,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14365,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14362,"src":"1086:5:92","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}}],"id":14366,"modifierName":{"id":14364,"name":"BaseRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":11602,"src":"1067:18:92","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BaseRelayerLibrary_$11602_$","typeString":"type(contract BaseRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1067:25:92"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14362,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":14369,"src":"1053:12:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":14361,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1053:6:92","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"}],"src":"1052:14:92"},"returnParameters":{"id":14367,"nodeType":"ParameterList","parameters":[],"src":"1093:0:92"},"scope":14417,"src":"1041:54:92","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14380,"nodeType":"Block","src":"1172:51:92","statements":[{"expression":{"arguments":[{"id":14377,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14371,"src":"1209:6:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14376,"name":"_isChainedReference","nodeType":"Identifier","overloadedDeclarations":[11479],"referencedDeclaration":11479,"src":"1189:19:92","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) pure returns (bool)"}},"id":14378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1189:27:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14375,"id":14379,"nodeType":"Return","src":"1182:34:92"}]},"functionSelector":"ec6edf00","id":14381,"implemented":true,"kind":"function","modifiers":[],"name":"isChainedReference","nodeType":"FunctionDefinition","parameters":{"id":14372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14371,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14381,"src":"1129:14:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14370,"name":"uint256","nodeType":"ElementaryTypeName","src":"1129:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1128:16:92"},"returnParameters":{"id":14375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14374,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14381,"src":"1166:4:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14373,"name":"bool","nodeType":"ElementaryTypeName","src":"1166:4:92","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1165:6:92"},"scope":14417,"src":"1101:122:92","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":14393,"nodeType":"Block","src":"1298:54:92","statements":[{"expression":{"arguments":[{"id":14389,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14383,"src":"1334:3:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14390,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14385,"src":"1339:5:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14388,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[11512],"referencedDeclaration":11512,"src":"1308:25:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1308:37:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14392,"nodeType":"ExpressionStatement","src":"1308:37:92"}]},"functionSelector":"c518e531","id":14394,"implemented":true,"kind":"function","modifiers":[],"name":"setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":14386,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14383,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14394,"src":"1263:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14382,"name":"uint256","nodeType":"ElementaryTypeName","src":"1263:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14385,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14394,"src":"1276:13:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14384,"name":"uint256","nodeType":"ElementaryTypeName","src":"1276:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1262:28:92"},"returnParameters":{"id":14387,"nodeType":"ParameterList","parameters":[],"src":"1298:0:92"},"scope":14417,"src":"1229:123:92","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14405,"nodeType":"Block","src":"1412:79:92","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":14401,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14396,"src":"1479:3:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14400,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[11538],"referencedDeclaration":11538,"src":"1453:25:92","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":14402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1453:30:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14399,"name":"ChainedReferenceValueRead","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14360,"src":"1427:25:92","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1427:57:92","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14404,"nodeType":"EmitStatement","src":"1422:62:92"}]},"functionSelector":"5967b696","id":14406,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":14397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14396,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14406,"src":"1392:11:92","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14395,"name":"uint256","nodeType":"ElementaryTypeName","src":"1392:7:92","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1391:13:92"},"returnParameters":{"id":14398,"nodeType":"ParameterList","parameters":[],"src":"1412:0:92"},"scope":14417,"src":"1358:133:92","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14415,"nodeType":"Block","src":"1573:29:92","statements":[{"expression":{"id":14413,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14408,"src":"1590:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":14412,"id":14414,"nodeType":"Return","src":"1583:12:92"}]},"functionSelector":"56cc064e","id":14416,"implemented":true,"kind":"function","modifiers":[],"name":"bytesTunnel","nodeType":"FunctionDefinition","parameters":{"id":14409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14408,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","scope":14416,"src":"1518:18:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14407,"name":"bytes","nodeType":"ElementaryTypeName","src":"1518:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1517:20:92"},"returnParameters":{"id":14412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14411,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14416,"src":"1559:12:92","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14410,"name":"bytes","nodeType":"ElementaryTypeName","src":"1559:5:92","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1558:14:92"},"scope":14417,"src":"1497:105:92","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":14418,"src":"928:676:92"}],"src":"731:874:92"},"id":92},"contracts/test/MockBatchRelayerLibrary.sol":{"ast":{"absolutePath":"contracts/test/MockBatchRelayerLibrary.sol","exportedSymbols":{"MockBatchRelayerLibrary":[14468]},"id":14469,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14419,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:93"},{"id":14420,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"755:33:93"},{"absolutePath":"contracts/BatchRelayerLibrary.sol","file":"../BatchRelayerLibrary.sol","id":14421,"nodeType":"ImportDirective","scope":14469,"sourceUnit":9429,"src":"790:36:93","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14422,"name":"BatchRelayerLibrary","nodeType":"UserDefinedTypeName","referencedDeclaration":9428,"src":"864:19:93","typeDescriptions":{"typeIdentifier":"t_contract$_BatchRelayerLibrary_$9428","typeString":"contract BatchRelayerLibrary"}},"id":14423,"nodeType":"InheritanceSpecifier","src":"864:19:93"}],"contractDependencies":[8793,9428,11025,11602,11772,12036,12114,12466,12670,12838,13728,13810],"contractKind":"contract","fullyImplemented":true,"id":14468,"linearizedBaseContracts":[14468,9428,13810,13728,12670,12838,12466,12036,11772,11602,11025,12114,8793],"name":"MockBatchRelayerLibrary","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":14427,"name":"ChainedReferenceValueRead","nodeType":"EventDefinition","parameters":{"id":14426,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14425,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14427,"src":"922:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14424,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"921:15:93"},"src":"890:47:93"},{"body":{"id":14441,"nodeType":"Block","src":"1081:2:93","statements":[]},"id":14442,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14436,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14429,"src":"1058:5:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},{"id":14437,"name":"wstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14431,"src":"1065:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},{"id":14438,"name":"minter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14433,"src":"1073:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}}],"id":14439,"modifierName":{"id":14435,"name":"BatchRelayerLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9428,"src":"1038:19:93","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BatchRelayerLibrary_$9428_$","typeString":"type(contract BatchRelayerLibrary)"}},"nodeType":"ModifierInvocation","src":"1038:42:93"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14429,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":14442,"src":"964:12:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":14428,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"964:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":14431,"mutability":"mutable","name":"wstETH","nodeType":"VariableDeclaration","scope":14442,"src":"986:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14430,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"986:6:93","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14433,"mutability":"mutable","name":"minter","nodeType":"VariableDeclaration","scope":14442,"src":"1009:22:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"},"typeName":{"id":14432,"name":"IBalancerMinter","nodeType":"UserDefinedTypeName","referencedDeclaration":175,"src":"1009:15:93","typeDescriptions":{"typeIdentifier":"t_contract$_IBalancerMinter_$175","typeString":"contract IBalancerMinter"}},"visibility":"internal"}],"src":"954:83:93"},"returnParameters":{"id":14440,"nodeType":"ParameterList","parameters":[],"src":"1081:0:93"},"scope":14468,"src":"943:140:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14454,"nodeType":"Block","src":"1158:54:93","statements":[{"expression":{"arguments":[{"id":14450,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14444,"src":"1194:3:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14451,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14446,"src":"1199:5:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14449,"name":"_setChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[11512],"referencedDeclaration":11512,"src":"1168:25:93","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256)"}},"id":14452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1168:37:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14453,"nodeType":"ExpressionStatement","src":"1168:37:93"}]},"functionSelector":"c518e531","id":14455,"implemented":true,"kind":"function","modifiers":[],"name":"setChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":14447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14444,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14455,"src":"1123:11:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14443,"name":"uint256","nodeType":"ElementaryTypeName","src":"1123:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14446,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","scope":14455,"src":"1136:13:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14445,"name":"uint256","nodeType":"ElementaryTypeName","src":"1136:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1122:28:93"},"returnParameters":{"id":14448,"nodeType":"ParameterList","parameters":[],"src":"1158:0:93"},"scope":14468,"src":"1089:123:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14466,"nodeType":"Block","src":"1272:79:93","statements":[{"eventCall":{"arguments":[{"arguments":[{"id":14462,"name":"ref","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14457,"src":"1339:3:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14461,"name":"_getChainedReferenceValue","nodeType":"Identifier","overloadedDeclarations":[11538],"referencedDeclaration":11538,"src":"1313:25:93","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) returns (uint256)"}},"id":14463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1313:30:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14460,"name":"ChainedReferenceValueRead","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14427,"src":"1287:25:93","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1287:57:93","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14465,"nodeType":"EmitStatement","src":"1282:62:93"}]},"functionSelector":"5967b696","id":14467,"implemented":true,"kind":"function","modifiers":[],"name":"getChainedReferenceValue","nodeType":"FunctionDefinition","parameters":{"id":14458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14457,"mutability":"mutable","name":"ref","nodeType":"VariableDeclaration","scope":14467,"src":"1252:11:93","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14456,"name":"uint256","nodeType":"ElementaryTypeName","src":"1252:7:93","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1251:13:93"},"returnParameters":{"id":14459,"nodeType":"ParameterList","parameters":[],"src":"1272:0:93"},"scope":14468,"src":"1218:133:93","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":14469,"src":"828:525:93"}],"src":"731:623:93"},"id":93},"contracts/test/MockRecoveryRateProviderPool.sol":{"ast":{"absolutePath":"contracts/test/MockRecoveryRateProviderPool.sol","exportedSymbols":{"MockRecoveryRateProviderPool":[14578]},"id":14579,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14470,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:94"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol","id":14471,"nodeType":"ImportDirective","scope":14579,"sourceUnit":1067,"src":"713:81:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":14472,"nodeType":"ImportDirective","scope":14579,"sourceUnit":3618,"src":"795:65:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","file":"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol","id":14473,"nodeType":"ImportDirective","scope":14579,"sourceUnit":3713,"src":"861:74:94","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol","file":"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol","id":14474,"nodeType":"ImportDirective","scope":14579,"sourceUnit":3832,"src":"936:65:94","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14475,"name":"IRateProviderPool","nodeType":"UserDefinedTypeName","referencedDeclaration":1066,"src":"1044:17:94","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProviderPool_$1066","typeString":"contract IRateProviderPool"}},"id":14476,"nodeType":"InheritanceSpecifier","src":"1044:17:94"},{"baseName":{"id":14477,"name":"BasePoolAuthorization","nodeType":"UserDefinedTypeName","referencedDeclaration":3712,"src":"1063:21:94","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolAuthorization_$3712","typeString":"contract BasePoolAuthorization"}},"id":14478,"nodeType":"InheritanceSpecifier","src":"1063:21:94"},{"baseName":{"id":14479,"name":"RecoveryMode","nodeType":"UserDefinedTypeName","referencedDeclaration":3831,"src":"1086:12:94","typeDescriptions":{"typeIdentifier":"t_contract$_RecoveryMode_$3831","typeString":"contract RecoveryMode"}},"id":14480,"nodeType":"InheritanceSpecifier","src":"1086:12:94"}],"contractDependencies":[1066,1089,1880,3712,3831,4048],"contractKind":"contract","fullyImplemented":true,"id":14578,"linearizedBaseContracts":[14578,3831,3712,4048,1880,1089,1066],"name":"MockRecoveryRateProviderPool","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":14482,"mutability":"immutable","name":"_vault","nodeType":"VariableDeclaration","scope":14578,"src":"1105:31:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":14481,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1105:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"private"},{"constant":false,"id":14484,"mutability":"mutable","name":"_recoveryMode","nodeType":"VariableDeclaration","scope":14578,"src":"1142:26:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14483,"name":"bool","nodeType":"ElementaryTypeName","src":"1142:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"constant":false,"id":14487,"mutability":"mutable","name":"_rateProviders","nodeType":"VariableDeclaration","scope":14578,"src":"1175:38:94","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":14485,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"1175:13:94","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":14486,"nodeType":"ArrayTypeName","src":"1175:15:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"private"},{"body":{"id":14518,"nodeType":"Block","src":"1391:71:94","statements":[{"expression":{"id":14512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14510,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14482,"src":"1401:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14511,"name":"vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14489,"src":"1410:5:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"src":"1401:14:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":14513,"nodeType":"ExpressionStatement","src":"1401:14:94"},{"expression":{"id":14516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14514,"name":"_rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14487,"src":"1425:14:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage","typeString":"contract IRateProvider[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14515,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14492,"src":"1442:13:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}},"src":"1425:30:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage","typeString":"contract IRateProvider[] storage ref"}},"id":14517,"nodeType":"ExpressionStatement","src":"1425:30:94"}]},"id":14519,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"id":14501,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1331:4:94","typeDescriptions":{"typeIdentifier":"t_contract$_MockRecoveryRateProviderPool_$14578","typeString":"contract MockRecoveryRateProviderPool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockRecoveryRateProviderPool_$14578","typeString":"contract MockRecoveryRateProviderPool"}],"id":14500,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1323:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":14499,"name":"address","nodeType":"ElementaryTypeName","src":"1323:7:94","typeDescriptions":{}}},"id":14502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1323:13:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":14498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1315:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":14497,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:94","typeDescriptions":{}}},"id":14503,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1315:22:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:94","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":14495,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1307:7:94","typeDescriptions":{}}},"id":14504,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1307:31:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":14505,"modifierName":{"id":14494,"name":"Authentication","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4048,"src":"1292:14:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Authentication_$4048_$","typeString":"type(contract Authentication)"}},"nodeType":"ModifierInvocation","src":"1292:47:94"},{"arguments":[{"id":14507,"name":"_DELEGATE_OWNER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3629,"src":"1370:15:94","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":14508,"modifierName":{"id":14506,"name":"BasePoolAuthorization","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3712,"src":"1348:21:94","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolAuthorization_$3712_$","typeString":"type(contract BasePoolAuthorization)"}},"nodeType":"ModifierInvocation","src":"1348:38:94"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14489,"mutability":"mutable","name":"vault","nodeType":"VariableDeclaration","scope":14519,"src":"1232:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":14488,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1232:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":14492,"mutability":"mutable","name":"rateProviders","nodeType":"VariableDeclaration","scope":14519,"src":"1246:36:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":14490,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"1246:13:94","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":14491,"nodeType":"ArrayTypeName","src":"1246:15:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1231:52:94"},"returnParameters":{"id":14509,"nodeType":"ParameterList","parameters":[],"src":"1391:0:94"},"scope":14578,"src":"1220:242:94","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1065],"body":{"id":14528,"nodeType":"Block","src":"1578:38:94","statements":[{"expression":{"id":14526,"name":"_rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14487,"src":"1595:14:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage","typeString":"contract IRateProvider[] storage ref"}},"functionReturnParameters":14525,"id":14527,"nodeType":"Return","src":"1588:21:94"}]},"functionSelector":"238a2d59","id":14529,"implemented":true,"kind":"function","modifiers":[],"name":"getRateProviders","nodeType":"FunctionDefinition","overrides":{"id":14521,"nodeType":"OverrideSpecifier","overrides":[],"src":"1536:8:94"},"parameters":{"id":14520,"nodeType":"ParameterList","parameters":[],"src":"1519:2:94"},"returnParameters":{"id":14525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14524,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14529,"src":"1554:22:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":14522,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"1554:13:94","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":14523,"nodeType":"ArrayTypeName","src":"1554:15:94","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1553:24:94"},"scope":14578,"src":"1494:122:94","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3711],"body":{"id":14539,"nodeType":"Block","src":"1723:46:94","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":14535,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14482,"src":"1740:6:94","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"id":14536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAuthorizer","nodeType":"MemberAccess","referencedDeclaration":3177,"src":"1740:20:94","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IAuthorizer_$2919_$","typeString":"function () view external returns (contract IAuthorizer)"}},"id":14537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1740:22:94","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"functionReturnParameters":14534,"id":14538,"nodeType":"Return","src":"1733:29:94"}]},"id":14540,"implemented":true,"kind":"function","modifiers":[],"name":"_getAuthorizer","nodeType":"FunctionDefinition","overrides":{"id":14531,"nodeType":"OverrideSpecifier","overrides":[],"src":"1692:8:94"},"parameters":{"id":14530,"nodeType":"ParameterList","parameters":[],"src":"1675:2:94"},"returnParameters":{"id":14534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14533,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14540,"src":"1710:11:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"},"typeName":{"id":14532,"name":"IAuthorizer","nodeType":"UserDefinedTypeName","referencedDeclaration":2919,"src":"1710:11:94","typeDescriptions":{"typeIdentifier":"t_contract$_IAuthorizer_$2919","typeString":"contract IAuthorizer"}},"visibility":"internal"}],"src":"1709:13:94"},"scope":14578,"src":"1652:117:94","stateMutability":"view","virtual":false,"visibility":"internal"},{"baseFunctions":[3783],"body":{"id":14548,"nodeType":"Block","src":"1859:37:94","statements":[{"expression":{"id":14546,"name":"_recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"1876:13:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":14545,"id":14547,"nodeType":"Return","src":"1869:20:94"}]},"functionSelector":"b35056b8","id":14549,"implemented":true,"kind":"function","modifiers":[],"name":"inRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":14542,"nodeType":"OverrideSpecifier","overrides":[],"src":"1835:8:94"},"parameters":{"id":14541,"nodeType":"ParameterList","parameters":[],"src":"1820:2:94"},"returnParameters":{"id":14545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14544,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14549,"src":"1853:4:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14543,"name":"bool","nodeType":"ElementaryTypeName","src":"1853:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1852:6:94"},"scope":14578,"src":"1797:99:94","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[3789],"body":{"id":14559,"nodeType":"Block","src":"1960:40:94","statements":[{"expression":{"id":14557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14555,"name":"_recoveryMode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14484,"src":"1970:13:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14556,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14551,"src":"1986:7:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1970:23:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14558,"nodeType":"ExpressionStatement","src":"1970:23:94"}]},"id":14560,"implemented":true,"kind":"function","modifiers":[],"name":"_setRecoveryMode","nodeType":"FunctionDefinition","overrides":{"id":14553,"nodeType":"OverrideSpecifier","overrides":[],"src":"1951:8:94"},"parameters":{"id":14552,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14551,"mutability":"mutable","name":"enabled","nodeType":"VariableDeclaration","scope":14560,"src":"1928:12:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14550,"name":"bool","nodeType":"ElementaryTypeName","src":"1928:4:94","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1927:14:94"},"returnParameters":{"id":14554,"nodeType":"ParameterList","parameters":[],"src":"1960:0:94"},"scope":14578,"src":"1902:98:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[3830],"body":{"id":14576,"nodeType":"Block","src":"2160:2:94","statements":[]},"id":14577,"implemented":true,"kind":"function","modifiers":[],"name":"_doRecoveryModeExit","nodeType":"FunctionDefinition","overrides":{"id":14569,"nodeType":"OverrideSpecifier","overrides":[],"src":"2115:8:94"},"parameters":{"id":14568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14563,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14577,"src":"2044:16:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14561,"name":"uint256","nodeType":"ElementaryTypeName","src":"2044:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14562,"nodeType":"ArrayTypeName","src":"2044:9:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":14565,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14577,"src":"2070:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14564,"name":"uint256","nodeType":"ElementaryTypeName","src":"2070:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14567,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14577,"src":"2087:12:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":14566,"name":"bytes","nodeType":"ElementaryTypeName","src":"2087:5:94","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2034:71:94"},"returnParameters":{"id":14575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14571,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14577,"src":"2133:7:94","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14570,"name":"uint256","nodeType":"ElementaryTypeName","src":"2133:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14574,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14577,"src":"2142:16:94","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":14572,"name":"uint256","nodeType":"ElementaryTypeName","src":"2142:7:94","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14573,"nodeType":"ArrayTypeName","src":"2142:9:94","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"2132:27:94"},"scope":14578,"src":"2006:156:94","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":14579,"src":"1003:1161:94"}],"src":"688:1477:94"},"id":94},"contracts/test/MockRecoveryRateProviderPoolFactory.sol":{"ast":{"absolutePath":"contracts/test/MockRecoveryRateProviderPoolFactory.sol","exportedSymbols":{"MockRecoveryRateProviderPoolFactory":[14621]},"id":14622,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14580,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:95"},{"id":14581,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:95"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","file":"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol","id":14582,"nodeType":"ImportDirective","scope":14622,"sourceUnit":3618,"src":"747:65:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol","file":"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol","id":14583,"nodeType":"ImportDirective","scope":14622,"sourceUnit":3972,"src":"813:78:95","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/test/MockRecoveryRateProviderPool.sol","file":"./MockRecoveryRateProviderPool.sol","id":14584,"nodeType":"ImportDirective","scope":14622,"sourceUnit":14579,"src":"892:44:95","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14585,"name":"BasePoolFactory","nodeType":"UserDefinedTypeName","referencedDeclaration":3971,"src":"986:15:95","typeDescriptions":{"typeIdentifier":"t_contract$_BasePoolFactory_$3971","typeString":"contract BasePoolFactory"}},"id":14586,"nodeType":"InheritanceSpecifier","src":"986:15:95"}],"contractDependencies":[1045,1880,3971,4048,4270,4890,14578],"contractKind":"contract","fullyImplemented":true,"id":14621,"linearizedBaseContracts":[14621,3971,4890,4048,4270,1045,1880],"name":"MockRecoveryRateProviderPoolFactory","nodeType":"ContractDefinition","nodes":[{"body":{"id":14601,"nodeType":"Block","src":"1194:64:95","statements":[]},"id":14602,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14593,"name":"_vault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14588,"src":"1112:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},{"id":14594,"name":"protocolFeeProvider","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14590,"src":"1120:19:95","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},{"expression":{"arguments":[{"id":14596,"name":"MockRecoveryRateProviderPool","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14578,"src":"1146:28:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MockRecoveryRateProviderPool_$14578_$","typeString":"type(contract MockRecoveryRateProviderPool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_MockRecoveryRateProviderPool_$14578_$","typeString":"type(contract MockRecoveryRateProviderPool)"}],"id":14595,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1141:4:95","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":14597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1141:34:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_MockRecoveryRateProviderPool_$14578","typeString":"type(contract MockRecoveryRateProviderPool)"}},"id":14598,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"creationCode","nodeType":"MemberAccess","src":"1141:47:95","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":14599,"modifierName":{"id":14592,"name":"BasePoolFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3971,"src":"1096:15:95","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BasePoolFactory_$3971_$","typeString":"type(contract BasePoolFactory)"}},"nodeType":"ModifierInvocation","src":"1096:93:95"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14588,"mutability":"mutable","name":"_vault","nodeType":"VariableDeclaration","scope":14602,"src":"1020:13:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},"typeName":{"id":14587,"name":"IVault","nodeType":"UserDefinedTypeName","referencedDeclaration":3617,"src":"1020:6:95","typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},"visibility":"internal"},{"constant":false,"id":14590,"mutability":"mutable","name":"protocolFeeProvider","nodeType":"VariableDeclaration","scope":14602,"src":"1035:51:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"},"typeName":{"id":14589,"name":"IProtocolFeePercentagesProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":2376,"src":"1035:31:95","typeDescriptions":{"typeIdentifier":"t_contract$_IProtocolFeePercentagesProvider_$2376","typeString":"contract IProtocolFeePercentagesProvider"}},"visibility":"internal"}],"src":"1019:68:95"},"returnParameters":{"id":14600,"nodeType":"ParameterList","parameters":[],"src":"1194:0:95"},"scope":14621,"src":"1008:250:95","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":14619,"nodeType":"Block","src":"1345:70:95","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":14613,"name":"getVault","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4835,"src":"1381:8:95","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_contract$_IVault_$3617_$","typeString":"function () view returns (contract IVault)"}},"id":14614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1381:10:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"}},{"id":14615,"name":"rateProviders","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14605,"src":"1393:13:95","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVault_$3617","typeString":"contract IVault"},{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[] memory"}],"expression":{"id":14611,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1370:3:95","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":14612,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"1370:10:95","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":14616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1370:37:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":14610,"name":"_create","nodeType":"Identifier","overloadedDeclarations":[3970],"referencedDeclaration":3970,"src":"1362:7:95","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$","typeString":"function (bytes memory) returns (address)"}},"id":14617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1362:46:95","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":14609,"id":14618,"nodeType":"Return","src":"1355:53:95"}]},"functionSelector":"62c54dbd","id":14620,"implemented":true,"kind":"function","modifiers":[],"name":"create","nodeType":"FunctionDefinition","parameters":{"id":14606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14605,"mutability":"mutable","name":"rateProviders","nodeType":"VariableDeclaration","scope":14620,"src":"1280:36:95","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_memory_ptr","typeString":"contract IRateProvider[]"},"typeName":{"baseType":{"id":14603,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"1280:13:95","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":14604,"nodeType":"ArrayTypeName","src":"1280:15:95","typeDescriptions":{"typeIdentifier":"t_array$_t_contract$_IRateProvider_$1054_$dyn_storage_ptr","typeString":"contract IRateProvider[]"}},"visibility":"internal"}],"src":"1279:38:95"},"returnParameters":{"id":14609,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14608,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14620,"src":"1336:7:95","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14607,"name":"address","nodeType":"ElementaryTypeName","src":"1336:7:95","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1335:9:95"},"scope":14621,"src":"1264:151:95","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14622,"src":"938:479:95"}],"src":"688:730:95"},"id":95},"contracts/test/MockRevertingRateProvider.sol":{"ast":{"absolutePath":"contracts/test/MockRevertingRateProvider.sol","exportedSymbols":{"MockRevertingRateProvider":[14671]},"id":14672,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14623,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:96"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","file":"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol","id":14624,"nodeType":"ImportDirective","scope":14672,"sourceUnit":1055,"src":"713:77:96","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":14625,"nodeType":"ImportDirective","scope":14672,"sourceUnit":5294,"src":"791:72:96","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14626,"name":"IRateProvider","nodeType":"UserDefinedTypeName","referencedDeclaration":1054,"src":"903:13:96","typeDescriptions":{"typeIdentifier":"t_contract$_IRateProvider_$1054","typeString":"contract IRateProvider"}},"id":14627,"nodeType":"InheritanceSpecifier","src":"903:13:96"}],"contractDependencies":[1054],"contractKind":"contract","fullyImplemented":true,"id":14671,"linearizedBaseContracts":[14671,1054],"name":"MockRevertingRateProvider","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":14629,"mutability":"mutable","name":"_rate","nodeType":"VariableDeclaration","scope":14671,"src":"923:21:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14628,"name":"uint256","nodeType":"ElementaryTypeName","src":"923:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":14631,"mutability":"mutable","name":"_revertOnGetRate","nodeType":"VariableDeclaration","scope":14671,"src":"951:29:96","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14630,"name":"bool","nodeType":"ElementaryTypeName","src":"951:4:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"body":{"id":14643,"nodeType":"Block","src":"1001:73:96","statements":[{"expression":{"id":14637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14634,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14629,"src":"1011:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":14635,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5293,"src":"1019:10:96","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$5293_$","typeString":"type(library FixedPoint)"}},"id":14636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ONE","nodeType":"MemberAccess","referencedDeclaration":4922,"src":"1019:14:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1011:22:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":14638,"nodeType":"ExpressionStatement","src":"1011:22:96"},{"expression":{"id":14641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14639,"name":"_revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"1043:16:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":14640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1062:5:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"1043:24:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14642,"nodeType":"ExpressionStatement","src":"1043:24:96"}]},"id":14644,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14632,"nodeType":"ParameterList","parameters":[],"src":"998:2:96"},"returnParameters":{"id":14633,"nodeType":"ParameterList","parameters":[],"src":"1001:0:96"},"scope":14671,"src":"987:87:96","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[1053],"body":{"id":14659,"nodeType":"Block","src":"1140:110:96","statements":[{"condition":{"id":14650,"name":"_revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"1154:16:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14656,"nodeType":"IfStatement","src":"1150:71:96","trueBody":{"id":14655,"nodeType":"Block","src":"1172:49:96","statements":[{"expression":{"arguments":[{"hexValue":"6765745261746520726576657274","id":14652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1193:16:96","typeDescriptions":{"typeIdentifier":"t_stringliteral_0d239a9a30daef30be48bc0e769efc38ece123aa0c30f651096329746867f1e3","typeString":"literal_string \"getRate revert\""},"value":"getRate revert"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_0d239a9a30daef30be48bc0e769efc38ece123aa0c30f651096329746867f1e3","typeString":"literal_string \"getRate revert\""}],"id":14651,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1186:6:96","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":14653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1186:24:96","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14654,"nodeType":"ExpressionStatement","src":"1186:24:96"}]}},{"expression":{"id":14657,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14629,"src":"1238:5:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14649,"id":14658,"nodeType":"Return","src":"1231:12:96"}]},"functionSelector":"679aefce","id":14660,"implemented":true,"kind":"function","modifiers":[],"name":"getRate","nodeType":"FunctionDefinition","overrides":{"id":14646,"nodeType":"OverrideSpecifier","overrides":[],"src":"1113:8:96"},"parameters":{"id":14645,"nodeType":"ParameterList","parameters":[],"src":"1096:2:96"},"returnParameters":{"id":14649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14648,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14660,"src":"1131:7:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14647,"name":"uint256","nodeType":"ElementaryTypeName","src":"1131:7:96","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1130:9:96"},"scope":14671,"src":"1080:170:96","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":14669,"nodeType":"Block","src":"1315:51:96","statements":[{"expression":{"id":14667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14665,"name":"_revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14631,"src":"1325:16:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14666,"name":"revertOnGetRate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14662,"src":"1344:15:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1325:34:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":14668,"nodeType":"ExpressionStatement","src":"1325:34:96"}]},"functionSelector":"fa38825c","id":14670,"implemented":true,"kind":"function","modifiers":[],"name":"setRevertOnGetRate","nodeType":"FunctionDefinition","parameters":{"id":14663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14662,"mutability":"mutable","name":"revertOnGetRate","nodeType":"VariableDeclaration","scope":14670,"src":"1284:20:96","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14661,"name":"bool","nodeType":"ElementaryTypeName","src":"1284:4:96","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1283:22:96"},"returnParameters":{"id":14664,"nodeType":"ParameterList","parameters":[],"src":"1315:0:96"},"scope":14671,"src":"1256:110:96","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14672,"src":"865:503:96"}],"src":"688:681:96"},"id":96},"contracts/test/MockStETH.sol":{"ast":{"absolutePath":"contracts/test/MockStETH.sol","exportedSymbols":{"MockStETH":[14724]},"id":14725,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14673,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:97"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":14674,"nodeType":"ImportDirective","scope":14725,"sourceUnit":2844,"src":"756:76:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":14675,"nodeType":"ImportDirective","scope":14725,"sourceUnit":5294,"src":"834:72:97","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol","id":14676,"nodeType":"ImportDirective","scope":14725,"sourceUnit":8664,"src":"907:71:97","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14677,"name":"TestToken","nodeType":"UserDefinedTypeName","referencedDeclaration":8663,"src":"1002:9:97","typeDescriptions":{"typeIdentifier":"t_contract$_TestToken_$8663","typeString":"contract TestToken"}},"id":14678,"nodeType":"InheritanceSpecifier","src":"1002:9:97"},{"baseName":{"id":14679,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2843,"src":"1013:6:97","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"id":14680,"nodeType":"InheritanceSpecifier","src":"1013:6:97"}],"contractDependencies":[1898,2090,2126,2843,4483,7120,7611,7668,7777,8663],"contractKind":"contract","fullyImplemented":true,"id":14724,"linearizedBaseContracts":[14724,2843,8663,7777,4483,7120,1898,2126,7668,7611,2090],"name":"MockStETH","nodeType":"ContractDefinition","nodes":[{"body":{"id":14694,"nodeType":"Block","src":"1160:64:97","statements":[]},"id":14695,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14689,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14682,"src":"1136:4:97","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14690,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14684,"src":"1142:6:97","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14691,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14686,"src":"1150:8:97","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":14692,"modifierName":{"id":14688,"name":"TestToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8663,"src":"1126:9:97","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TestToken_$8663_$","typeString":"type(contract TestToken)"}},"nodeType":"ModifierInvocation","src":"1126:33:97"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14682,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":14695,"src":"1047:18:97","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14681,"name":"string","nodeType":"ElementaryTypeName","src":"1047:6:97","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14684,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":14695,"src":"1075:20:97","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14683,"name":"string","nodeType":"ElementaryTypeName","src":"1075:6:97","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14686,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":14695,"src":"1105:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14685,"name":"uint8","nodeType":"ElementaryTypeName","src":"1105:5:97","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1037:88:97"},"returnParameters":{"id":14693,"nodeType":"ParameterList","parameters":[],"src":"1160:0:97"},"scope":14724,"src":"1026:198:97","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"anonymous":false,"id":14699,"name":"EthStaked","nodeType":"EventDefinition","parameters":{"id":14698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14697,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14699,"src":"1246:14:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14696,"name":"uint256","nodeType":"ElementaryTypeName","src":"1246:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1245:16:97"},"src":"1230:32:97"},{"baseFunctions":[2842],"body":{"id":14722,"nodeType":"Block","src":"1337:106:97","statements":[{"expression":{"arguments":[{"expression":{"id":14708,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1353:3:97","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1353:10:97","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":14710,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:97","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1365:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14707,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"1347:5:97","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":14712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1347:28:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14713,"nodeType":"ExpressionStatement","src":"1347:28:97"},{"eventCall":{"arguments":[{"expression":{"id":14715,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1400:3:97","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1400:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14714,"name":"EthStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14699,"src":"1390:9:97","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":14717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1390:20:97","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14718,"nodeType":"EmitStatement","src":"1385:25:97"},{"expression":{"expression":{"id":14719,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1427:3:97","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1427:9:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14706,"id":14721,"nodeType":"Return","src":"1420:16:97"}]},"functionSelector":"a1903eab","id":14723,"implemented":true,"kind":"function","modifiers":[],"name":"submit","nodeType":"FunctionDefinition","overrides":{"id":14703,"nodeType":"OverrideSpecifier","overrides":[],"src":"1310:8:97"},"parameters":{"id":14702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14701,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14723,"src":"1284:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14700,"name":"address","nodeType":"ElementaryTypeName","src":"1284:7:97","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1283:9:97"},"returnParameters":{"id":14706,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14705,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14723,"src":"1328:7:97","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14704,"name":"uint256","nodeType":"ElementaryTypeName","src":"1328:7:97","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1327:9:97"},"scope":14724,"src":"1268:175:97","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":14725,"src":"980:465:97"}],"src":"731:715:97"},"id":97},"contracts/test/MockStaticATokenLM.sol":{"ast":{"absolutePath":"contracts/test/MockStaticATokenLM.sol","exportedSymbols":{"MockStaticATokenLM":[15194]},"id":15195,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":14726,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"688:23:98"},{"id":14727,"literals":["experimental","ABIEncoderV2"],"nodeType":"PragmaDirective","src":"712:33:98"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol","id":14728,"nodeType":"ImportDirective","scope":15195,"sourceUnit":2831,"src":"747:85:98","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","file":"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol","id":14729,"nodeType":"ImportDirective","scope":15195,"sourceUnit":8618,"src":"834:71:98","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":14730,"name":"ERC20Mock","nodeType":"UserDefinedTypeName","referencedDeclaration":8617,"src":"938:9:98","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20Mock_$8617","typeString":"contract ERC20Mock"}},"id":14731,"nodeType":"InheritanceSpecifier","src":"938:9:98"},{"baseName":{"id":14732,"name":"IStaticATokenLM","nodeType":"UserDefinedTypeName","referencedDeclaration":2830,"src":"949:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IStaticATokenLM_$2830","typeString":"contract IStaticATokenLM"}},"id":14733,"nodeType":"InheritanceSpecifier","src":"949:15:98"}],"contractDependencies":[2090,2830,7611,8617],"contractKind":"contract","fullyImplemented":true,"id":15194,"linearizedBaseContracts":[15194,2830,8617,7611,2090],"name":"MockStaticATokenLM","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"id":14745,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":14744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14735,"indexed":false,"mutability":"mutable","name":"depositor","nodeType":"VariableDeclaration","scope":14745,"src":"1168:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14734,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14737,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14745,"src":"1187:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14736,"name":"address","nodeType":"ElementaryTypeName","src":"1187:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14739,"indexed":false,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14745,"src":"1206:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14738,"name":"uint256","nodeType":"ElementaryTypeName","src":"1206:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14741,"indexed":false,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":14745,"src":"1222:19:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14740,"name":"uint16","nodeType":"ElementaryTypeName","src":"1222:6:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14743,"indexed":false,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":14745,"src":"1243:19:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14742,"name":"bool","nodeType":"ElementaryTypeName","src":"1243:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1167:96:98"},"src":"1154:110:98"},{"anonymous":false,"id":14757,"name":"Withdraw","nodeType":"EventDefinition","parameters":{"id":14756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14747,"indexed":false,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","scope":14757,"src":"1285:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14746,"name":"address","nodeType":"ElementaryTypeName","src":"1285:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14749,"indexed":false,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14757,"src":"1300:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14748,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14751,"indexed":false,"mutability":"mutable","name":"staticAmount","nodeType":"VariableDeclaration","scope":14757,"src":"1319:20:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14750,"name":"uint256","nodeType":"ElementaryTypeName","src":"1319:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14753,"indexed":false,"mutability":"mutable","name":"dynamicAmount","nodeType":"VariableDeclaration","scope":14757,"src":"1341:21:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1341:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14755,"indexed":false,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":14757,"src":"1364:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14754,"name":"bool","nodeType":"ElementaryTypeName","src":"1364:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1284:98:98"},"src":"1270:113:98"},{"constant":true,"id":14760,"mutability":"constant","name":"_rate","nodeType":"VariableDeclaration","scope":15194,"src":"1389:37:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14758,"name":"uint256","nodeType":"ElementaryTypeName","src":"1389:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653237","id":14759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1422:4:98","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000000000000_by_1","typeString":"int_const 1000000000000000000000000000"},"value":"1e27"},"visibility":"private"},{"constant":false,"id":14762,"mutability":"immutable","name":"_ASSET","nodeType":"VariableDeclaration","scope":15194,"src":"1432:31:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14761,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1432:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"private"},{"constant":false,"id":14764,"mutability":"immutable","name":"_ATOKEN","nodeType":"VariableDeclaration","scope":15194,"src":"1469:32:98","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14763,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1469:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"private"},{"body":{"id":14787,"nodeType":"Block","src":"1663:67:98","statements":[{"expression":{"id":14781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14779,"name":"_ASSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14762,"src":"1673:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14780,"name":"underlyingAsset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14770,"src":"1682:15:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1673:24:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14782,"nodeType":"ExpressionStatement","src":"1673:24:98"},{"expression":{"id":14785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":14783,"name":"_ATOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14764,"src":"1707:7:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":14784,"name":"aToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14772,"src":"1717:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"src":"1707:16:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":14786,"nodeType":"ExpressionStatement","src":"1707:16:98"}]},"id":14788,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":14775,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14766,"src":"1649:4:98","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":14776,"name":"symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14768,"src":"1655:6:98","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":14777,"modifierName":{"id":14774,"name":"ERC20Mock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8617,"src":"1639:9:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20Mock_$8617_$","typeString":"type(contract ERC20Mock)"}},"nodeType":"ModifierInvocation","src":"1639:23:98"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":14773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14766,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":14788,"src":"1529:18:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14765,"name":"string","nodeType":"ElementaryTypeName","src":"1529:6:98","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14768,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":14788,"src":"1557:20:98","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":14767,"name":"string","nodeType":"ElementaryTypeName","src":"1557:6:98","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14770,"mutability":"mutable","name":"underlyingAsset","nodeType":"VariableDeclaration","scope":14788,"src":"1587:22:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14769,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1587:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":14772,"mutability":"mutable","name":"aToken","nodeType":"VariableDeclaration","scope":14788,"src":"1619:13:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14771,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1619:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1519:119:98"},"returnParameters":{"id":14778,"nodeType":"ParameterList","parameters":[],"src":"1663:0:98"},"scope":15194,"src":"1508:222:98","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2824],"body":{"id":14796,"nodeType":"Block","src":"1846:30:98","statements":[{"expression":{"id":14794,"name":"_ASSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14762,"src":"1863:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"functionReturnParameters":14793,"id":14795,"nodeType":"Return","src":"1856:13:98"}]},"functionSelector":"4800d97f","id":14797,"implemented":true,"kind":"function","modifiers":[],"name":"ASSET","nodeType":"FunctionDefinition","overrides":{"id":14790,"nodeType":"OverrideSpecifier","overrides":[],"src":"1820:8:98"},"parameters":{"id":14789,"nodeType":"ParameterList","parameters":[],"src":"1803:2:98"},"returnParameters":{"id":14793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14792,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14797,"src":"1838:6:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14791,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1838:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1837:8:98"},"scope":15194,"src":"1789:87:98","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2819],"body":{"id":14805,"nodeType":"Block","src":"1940:31:98","statements":[{"expression":{"id":14803,"name":"_ATOKEN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14764,"src":"1957:7:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"functionReturnParameters":14802,"id":14804,"nodeType":"Return","src":"1950:14:98"}]},"functionSelector":"51c0e061","id":14806,"implemented":true,"kind":"function","modifiers":[],"name":"ATOKEN","nodeType":"FunctionDefinition","overrides":{"id":14799,"nodeType":"OverrideSpecifier","overrides":[],"src":"1914:8:98"},"parameters":{"id":14798,"nodeType":"ParameterList","parameters":[],"src":"1897:2:98"},"returnParameters":{"id":14802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14801,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14806,"src":"1932:6:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":14800,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1932:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1931:8:98"},"scope":15194,"src":"1882:89:98","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2809],"body":{"id":14817,"nodeType":"Block","src":"2095:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":14813,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"2113:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":14814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"2113:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14812,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"2105:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14816,"nodeType":"ExpressionStatement","src":"2105:29:98"}]},"functionSelector":"b4dcfc77","id":14818,"implemented":true,"kind":"function","modifiers":[],"name":"LENDING_POOL","nodeType":"FunctionDefinition","overrides":{"id":14808,"nodeType":"OverrideSpecifier","overrides":[],"src":"2068:8:98"},"parameters":{"id":14807,"nodeType":"ParameterList","parameters":[],"src":"2051:2:98"},"returnParameters":{"id":14811,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14810,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14818,"src":"2086:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14809,"name":"address","nodeType":"ElementaryTypeName","src":"2086:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2085:9:98"},"scope":15194,"src":"2030:111:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2728],"body":{"id":14826,"nodeType":"Block","src":"2202:29:98","statements":[{"expression":{"id":14824,"name":"_rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14760,"src":"2219:5:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14823,"id":14825,"nodeType":"Return","src":"2212:12:98"}]},"functionSelector":"2c4e722e","id":14827,"implemented":true,"kind":"function","modifiers":[],"name":"rate","nodeType":"FunctionDefinition","overrides":{"id":14820,"nodeType":"OverrideSpecifier","overrides":[],"src":"2175:8:98"},"parameters":{"id":14819,"nodeType":"ParameterList","parameters":[],"src":"2160:2:98"},"returnParameters":{"id":14823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14822,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14827,"src":"2193:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14821,"name":"uint256","nodeType":"ElementaryTypeName","src":"2193:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2192:9:98"},"scope":15194,"src":"2147:84:98","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2610],"body":{"id":14852,"nodeType":"Block","src":"2405:113:98","statements":[{"eventCall":{"arguments":[{"expression":{"id":14842,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2428:3:98","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2428:10:98","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":14844,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14829,"src":"2440:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14845,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14831,"src":"2451:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14846,"name":"referralCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14833,"src":"2459:12:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},{"id":14847,"name":"fromUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14835,"src":"2473:14:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14841,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14745,"src":"2420:7:98","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,uint16,bool)"}},"id":14848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2420:68:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14849,"nodeType":"EmitStatement","src":"2415:73:98"},{"expression":{"id":14850,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14831,"src":"2505:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14840,"id":14851,"nodeType":"Return","src":"2498:13:98"}]},"functionSelector":"2f2cab87","id":14853,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":14837,"nodeType":"OverrideSpecifier","overrides":[],"src":"2378:8:98"},"parameters":{"id":14836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14829,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14853,"src":"2263:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14828,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14831,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14853,"src":"2290:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14830,"name":"uint256","nodeType":"ElementaryTypeName","src":"2290:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14833,"mutability":"mutable","name":"referralCode","nodeType":"VariableDeclaration","scope":14853,"src":"2314:19:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14832,"name":"uint16","nodeType":"ElementaryTypeName","src":"2314:6:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14835,"mutability":"mutable","name":"fromUnderlying","nodeType":"VariableDeclaration","scope":14853,"src":"2343:19:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14834,"name":"bool","nodeType":"ElementaryTypeName","src":"2343:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2253:115:98"},"returnParameters":{"id":14840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14839,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14853,"src":"2396:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14838,"name":"uint256","nodeType":"ElementaryTypeName","src":"2396:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2395:9:98"},"scope":15194,"src":"2237:281:98","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2624],"body":{"id":14882,"nodeType":"Block","src":"2671:139:98","statements":[{"eventCall":{"arguments":[{"expression":{"id":14868,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2695:3:98","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":14869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2695:10:98","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":14870,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14855,"src":"2707:9:98","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":14871,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"2718:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":14873,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"2748:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14872,"name":"staticToDynamicAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14894,"src":"2726:21:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":14874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2726:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14875,"name":"toUnderlying","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14859,"src":"2757:12:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":14867,"name":"Withdraw","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14757,"src":"2686:8:98","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,uint256,bool)"}},"id":14876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2686:84:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14877,"nodeType":"EmitStatement","src":"2681:89:98"},{"expression":{"components":[{"id":14878,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"2788:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":14879,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14857,"src":"2796:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":14880,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2787:16:98","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":14866,"id":14881,"nodeType":"Return","src":"2780:23:98"}]},"functionSelector":"ead5d359","id":14883,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":14861,"nodeType":"OverrideSpecifier","overrides":[],"src":"2635:8:98"},"parameters":{"id":14860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14855,"mutability":"mutable","name":"recipient","nodeType":"VariableDeclaration","scope":14883,"src":"2551:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14854,"name":"address","nodeType":"ElementaryTypeName","src":"2551:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14857,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14883,"src":"2578:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14856,"name":"uint256","nodeType":"ElementaryTypeName","src":"2578:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14859,"mutability":"mutable","name":"toUnderlying","nodeType":"VariableDeclaration","scope":14883,"src":"2602:17:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14858,"name":"bool","nodeType":"ElementaryTypeName","src":"2602:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2541:84:98"},"returnParameters":{"id":14866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14863,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14883,"src":"2653:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14862,"name":"uint256","nodeType":"ElementaryTypeName","src":"2653:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14865,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14883,"src":"2662:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14864,"name":"uint256","nodeType":"ElementaryTypeName","src":"2662:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2652:18:98"},"scope":15194,"src":"2524:286:98","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2714],"body":{"id":14893,"nodeType":"Block","src":"2902:30:98","statements":[{"expression":{"id":14891,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14885,"src":"2919:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14890,"id":14892,"nodeType":"Return","src":"2912:13:98"}]},"functionSelector":"f57d0b40","id":14894,"implemented":true,"kind":"function","modifiers":[],"name":"staticToDynamicAmount","nodeType":"FunctionDefinition","overrides":{"id":14887,"nodeType":"OverrideSpecifier","overrides":[],"src":"2875:8:98"},"parameters":{"id":14886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14885,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14894,"src":"2847:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14884,"name":"uint256","nodeType":"ElementaryTypeName","src":"2847:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2846:16:98"},"returnParameters":{"id":14890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14889,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14894,"src":"2893:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14888,"name":"uint256","nodeType":"ElementaryTypeName","src":"2893:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2892:9:98"},"scope":15194,"src":"2816:116:98","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2722],"body":{"id":14904,"nodeType":"Block","src":"3026:30:98","statements":[{"expression":{"id":14902,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14896,"src":"3043:6:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":14901,"id":14903,"nodeType":"Return","src":"3036:13:98"}]},"functionSelector":"36a5a6d6","id":14905,"implemented":true,"kind":"function","modifiers":[],"name":"dynamicToStaticAmount","nodeType":"FunctionDefinition","overrides":{"id":14898,"nodeType":"OverrideSpecifier","overrides":[],"src":"2999:8:98"},"parameters":{"id":14897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14896,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":14905,"src":"2969:14:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14895,"name":"uint256","nodeType":"ElementaryTypeName","src":"2969:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2968:16:98"},"returnParameters":{"id":14901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14900,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14905,"src":"3017:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14899,"name":"uint256","nodeType":"ElementaryTypeName","src":"3017:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3016:9:98"},"scope":15194,"src":"2938:118:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2656],"body":{"id":14928,"nodeType":"Block","src":"3222:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":14924,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3240:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":14925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"3240:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14923,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"3232:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3232:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14927,"nodeType":"ExpressionStatement","src":"3232:29:98"}]},"functionSelector":"d505accf","id":14929,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":{"id":14921,"nodeType":"OverrideSpecifier","overrides":[],"src":"3213:8:98"},"parameters":{"id":14920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14907,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3087:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14906,"name":"address","nodeType":"ElementaryTypeName","src":"3087:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14909,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3104:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14908,"name":"address","nodeType":"ElementaryTypeName","src":"3104:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14911,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3121:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14910,"name":"uint256","nodeType":"ElementaryTypeName","src":"3121:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14913,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3138:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14912,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14915,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3155:5:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":14914,"name":"uint8","nodeType":"ElementaryTypeName","src":"3155:5:98","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":14917,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3170:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14916,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3170:7:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":14919,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14929,"src":"3187:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14918,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3187:7:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3077:123:98"},"returnParameters":{"id":14922,"nodeType":"ParameterList","parameters":[],"src":"3222:0:98"},"scope":15194,"src":"3062:206:98","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2734],"body":{"id":14940,"nodeType":"Block","src":"3343:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":14936,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3361:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":14937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"3361:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14935,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"3353:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3353:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14939,"nodeType":"ExpressionStatement","src":"3353:29:98"}]},"functionSelector":"ed24911d","id":14941,"implemented":true,"kind":"function","modifiers":[],"name":"getDomainSeparator","nodeType":"FunctionDefinition","overrides":{"id":14931,"nodeType":"OverrideSpecifier","overrides":[],"src":"3316:8:98"},"parameters":{"id":14930,"nodeType":"ParameterList","parameters":[],"src":"3301:2:98"},"returnParameters":{"id":14934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14933,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14941,"src":"3334:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":14932,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3334:7:98","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3333:9:98"},"scope":15194,"src":"3274:115:98","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[2638],"body":{"id":14960,"nodeType":"Block","src":"3530:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":14956,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3548:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":14957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"3548:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14955,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"3540:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3540:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14959,"nodeType":"ExpressionStatement","src":"3540:29:98"}]},"functionSelector":"288587ce","id":14961,"implemented":true,"kind":"function","modifiers":[],"name":"withdrawDynamicAmount","nodeType":"FunctionDefinition","overrides":{"id":14949,"nodeType":"OverrideSpecifier","overrides":[],"src":"3494:8:98"},"parameters":{"id":14948,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14943,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14961,"src":"3435:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14942,"name":"address","nodeType":"ElementaryTypeName","src":"3435:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14945,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14961,"src":"3452:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14944,"name":"uint256","nodeType":"ElementaryTypeName","src":"3452:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14947,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14961,"src":"3469:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14946,"name":"bool","nodeType":"ElementaryTypeName","src":"3469:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3425:54:98"},"returnParameters":{"id":14954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14951,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14961,"src":"3512:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14950,"name":"uint256","nodeType":"ElementaryTypeName","src":"3512:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14953,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14961,"src":"3521:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14952,"name":"uint256","nodeType":"ElementaryTypeName","src":"3521:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3511:18:98"},"scope":15194,"src":"3395:181:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2676],"body":{"id":14986,"nodeType":"Block","src":"3782:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":14982,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"3800:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":14983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"3800:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":14981,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"3792:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":14984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3792:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":14985,"nodeType":"ExpressionStatement","src":"3792:29:98"}]},"functionSelector":"c485852b","id":14987,"implemented":true,"kind":"function","modifiers":[],"name":"metaDeposit","nodeType":"FunctionDefinition","overrides":{"id":14977,"nodeType":"OverrideSpecifier","overrides":[],"src":"3755:8:98"},"parameters":{"id":14976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14963,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3612:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14962,"name":"address","nodeType":"ElementaryTypeName","src":"3612:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14965,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3629:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14964,"name":"address","nodeType":"ElementaryTypeName","src":"3629:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14967,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3646:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14966,"name":"uint256","nodeType":"ElementaryTypeName","src":"3646:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14969,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3663:6:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":14968,"name":"uint16","nodeType":"ElementaryTypeName","src":"3663:6:98","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":14971,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3679:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14970,"name":"bool","nodeType":"ElementaryTypeName","src":"3679:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14973,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3693:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14972,"name":"uint256","nodeType":"ElementaryTypeName","src":"3693:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14975,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3710:24:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":14974,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2596,"src":"3710:15:98","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"3602:138:98"},"returnParameters":{"id":14980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14979,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":14987,"src":"3773:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14978,"name":"uint256","nodeType":"ElementaryTypeName","src":"3773:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3772:9:98"},"scope":15194,"src":"3582:246:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2698],"body":{"id":15014,"nodeType":"Block","src":"4045:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15010,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4063:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4063:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15009,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4055:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4055:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15013,"nodeType":"ExpressionStatement","src":"4055:29:98"}]},"functionSelector":"60266557","id":15015,"implemented":true,"kind":"function","modifiers":[],"name":"metaWithdraw","nodeType":"FunctionDefinition","overrides":{"id":15003,"nodeType":"OverrideSpecifier","overrides":[],"src":"4009:8:98"},"parameters":{"id":15002,"nodeType":"ParameterList","parameters":[{"constant":false,"id":14989,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3865:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14988,"name":"address","nodeType":"ElementaryTypeName","src":"3865:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14991,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3882:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":14990,"name":"address","nodeType":"ElementaryTypeName","src":"3882:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":14993,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3899:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14992,"name":"uint256","nodeType":"ElementaryTypeName","src":"3899:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14995,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3916:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14994,"name":"uint256","nodeType":"ElementaryTypeName","src":"3916:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":14997,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3933:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":14996,"name":"bool","nodeType":"ElementaryTypeName","src":"3933:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":14999,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3947:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":14998,"name":"uint256","nodeType":"ElementaryTypeName","src":"3947:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15001,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"3964:24:98","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_calldata_ptr","typeString":"struct IStaticATokenLM.SignatureParams"},"typeName":{"id":15000,"name":"SignatureParams","nodeType":"UserDefinedTypeName","referencedDeclaration":2596,"src":"3964:15:98","typeDescriptions":{"typeIdentifier":"t_struct$_SignatureParams_$2596_storage_ptr","typeString":"struct IStaticATokenLM.SignatureParams"}},"visibility":"internal"}],"src":"3855:139:98"},"returnParameters":{"id":15008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15005,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"4027:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15004,"name":"uint256","nodeType":"ElementaryTypeName","src":"4027:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":15007,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15015,"src":"4036:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15006,"name":"uint256","nodeType":"ElementaryTypeName","src":"4036:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4026:18:98"},"scope":15194,"src":"3834:257:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2706],"body":{"id":15028,"nodeType":"Block","src":"4173:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15024,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4191:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4191:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15023,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4183:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4183:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15027,"nodeType":"ExpressionStatement","src":"4183:29:98"}]},"functionSelector":"44b68c3f","id":15029,"implemented":true,"kind":"function","modifiers":[],"name":"dynamicBalanceOf","nodeType":"FunctionDefinition","overrides":{"id":15019,"nodeType":"OverrideSpecifier","overrides":[],"src":"4146:8:98"},"parameters":{"id":15018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15017,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15029,"src":"4123:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15016,"name":"address","nodeType":"ElementaryTypeName","src":"4123:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4122:9:98"},"returnParameters":{"id":15022,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15021,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15029,"src":"4164:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15020,"name":"uint256","nodeType":"ElementaryTypeName","src":"4164:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4163:9:98"},"scope":15194,"src":"4097:122:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2738],"body":{"id":15038,"nodeType":"Block","src":"4283:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15034,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4301:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4301:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15033,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4293:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4293:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15037,"nodeType":"ExpressionStatement","src":"4293:29:98"}]},"functionSelector":"3eb2eba6","id":15039,"implemented":true,"kind":"function","modifiers":[],"name":"collectAndUpdateRewards","nodeType":"FunctionDefinition","overrides":{"id":15031,"nodeType":"OverrideSpecifier","overrides":[],"src":"4274:8:98"},"parameters":{"id":15030,"nodeType":"ParameterList","parameters":[],"src":"4257:2:98"},"returnParameters":{"id":15032,"nodeType":"ParameterList","parameters":[],"src":"4283:0:98"},"scope":15194,"src":"4225:104:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2748],"body":{"id":15054,"nodeType":"Block","src":"4442:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15050,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4460:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4460:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15049,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4452:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4452:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15053,"nodeType":"ExpressionStatement","src":"4452:29:98"}]},"functionSelector":"dd05aa12","id":15055,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsOnBehalf","nodeType":"FunctionDefinition","overrides":{"id":15047,"nodeType":"OverrideSpecifier","overrides":[],"src":"4433:8:98"},"parameters":{"id":15046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15041,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15055,"src":"4374:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15040,"name":"address","nodeType":"ElementaryTypeName","src":"4374:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15043,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15055,"src":"4391:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15042,"name":"address","nodeType":"ElementaryTypeName","src":"4391:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15045,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15055,"src":"4408:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15044,"name":"bool","nodeType":"ElementaryTypeName","src":"4408:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4364:54:98"},"returnParameters":{"id":15048,"nodeType":"ParameterList","parameters":[],"src":"4442:0:98"},"scope":15194,"src":"4335:153:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2756],"body":{"id":15068,"nodeType":"Block","src":"4554:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15064,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4572:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4572:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15063,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4564:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4564:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15067,"nodeType":"ExpressionStatement","src":"4564:29:98"}]},"functionSelector":"491c011a","id":15069,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewards","nodeType":"FunctionDefinition","overrides":{"id":15061,"nodeType":"OverrideSpecifier","overrides":[],"src":"4545:8:98"},"parameters":{"id":15060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15057,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15069,"src":"4516:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15056,"name":"address","nodeType":"ElementaryTypeName","src":"4516:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15059,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15069,"src":"4525:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15058,"name":"bool","nodeType":"ElementaryTypeName","src":"4525:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4515:15:98"},"returnParameters":{"id":15062,"nodeType":"ParameterList","parameters":[],"src":"4554:0:98"},"scope":15194,"src":"4494:106:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2762],"body":{"id":15080,"nodeType":"Block","src":"4663:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15076,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4681:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4681:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15075,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4673:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4673:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15079,"nodeType":"ExpressionStatement","src":"4673:29:98"}]},"functionSelector":"45c1ace7","id":15081,"implemented":true,"kind":"function","modifiers":[],"name":"claimRewardsToSelf","nodeType":"FunctionDefinition","overrides":{"id":15073,"nodeType":"OverrideSpecifier","overrides":[],"src":"4654:8:98"},"parameters":{"id":15072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15071,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15081,"src":"4634:4:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15070,"name":"bool","nodeType":"ElementaryTypeName","src":"4634:4:98","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4633:6:98"},"returnParameters":{"id":15074,"nodeType":"ParameterList","parameters":[],"src":"4663:0:98"},"scope":15194,"src":"4606:103:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2768],"body":{"id":15092,"nodeType":"Block","src":"4792:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15088,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4810:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4810:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15087,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4802:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4802:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15091,"nodeType":"ExpressionStatement","src":"4802:29:98"}]},"functionSelector":"7f372cff","id":15093,"implemented":true,"kind":"function","modifiers":[],"name":"getTotalClaimableRewards","nodeType":"FunctionDefinition","overrides":{"id":15083,"nodeType":"OverrideSpecifier","overrides":[],"src":"4765:8:98"},"parameters":{"id":15082,"nodeType":"ParameterList","parameters":[],"src":"4748:2:98"},"returnParameters":{"id":15086,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15085,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15093,"src":"4783:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15084,"name":"uint256","nodeType":"ElementaryTypeName","src":"4783:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4782:9:98"},"scope":15194,"src":"4715:123:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2776],"body":{"id":15106,"nodeType":"Block","src":"4923:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15102,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"4941:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"4941:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15101,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"4933:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4933:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15105,"nodeType":"ExpressionStatement","src":"4933:29:98"}]},"functionSelector":"308e401e","id":15107,"implemented":true,"kind":"function","modifiers":[],"name":"getClaimableRewards","nodeType":"FunctionDefinition","overrides":{"id":15097,"nodeType":"OverrideSpecifier","overrides":[],"src":"4896:8:98"},"parameters":{"id":15096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15095,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15107,"src":"4873:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15094,"name":"address","nodeType":"ElementaryTypeName","src":"4873:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4872:9:98"},"returnParameters":{"id":15100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15099,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15107,"src":"4914:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15098,"name":"uint256","nodeType":"ElementaryTypeName","src":"4914:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4913:9:98"},"scope":15194,"src":"4844:125:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2784],"body":{"id":15120,"nodeType":"Block","src":"5054:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15116,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5072:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5072:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15115,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5064:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5064:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15119,"nodeType":"ExpressionStatement","src":"5064:29:98"}]},"functionSelector":"69a69e29","id":15121,"implemented":true,"kind":"function","modifiers":[],"name":"getUnclaimedRewards","nodeType":"FunctionDefinition","overrides":{"id":15111,"nodeType":"OverrideSpecifier","overrides":[],"src":"5027:8:98"},"parameters":{"id":15110,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15109,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15121,"src":"5004:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15108,"name":"address","nodeType":"ElementaryTypeName","src":"5004:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5003:9:98"},"returnParameters":{"id":15114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15113,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15121,"src":"5045:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15112,"name":"uint256","nodeType":"ElementaryTypeName","src":"5045:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5044:9:98"},"scope":15194,"src":"4975:125:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2789],"body":{"id":15132,"nodeType":"Block","src":"5180:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15128,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5198:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5198:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15127,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5190:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5190:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15131,"nodeType":"ExpressionStatement","src":"5190:29:98"}]},"functionSelector":"a135a55e","id":15133,"implemented":true,"kind":"function","modifiers":[],"name":"getAccRewardsPerToken","nodeType":"FunctionDefinition","overrides":{"id":15123,"nodeType":"OverrideSpecifier","overrides":[],"src":"5153:8:98"},"parameters":{"id":15122,"nodeType":"ParameterList","parameters":[],"src":"5136:2:98"},"returnParameters":{"id":15126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15125,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15133,"src":"5171:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15124,"name":"uint256","nodeType":"ElementaryTypeName","src":"5171:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5170:9:98"},"scope":15194,"src":"5106:120:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2794],"body":{"id":15144,"nodeType":"Block","src":"5310:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15140,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5328:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5328:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15139,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5320:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5320:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15143,"nodeType":"ExpressionStatement","src":"5320:29:98"}]},"functionSelector":"31a5cfa4","id":15145,"implemented":true,"kind":"function","modifiers":[],"name":"getLifetimeRewardsClaimed","nodeType":"FunctionDefinition","overrides":{"id":15135,"nodeType":"OverrideSpecifier","overrides":[],"src":"5283:8:98"},"parameters":{"id":15134,"nodeType":"ParameterList","parameters":[],"src":"5266:2:98"},"returnParameters":{"id":15138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15137,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15145,"src":"5301:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15136,"name":"uint256","nodeType":"ElementaryTypeName","src":"5301:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5300:9:98"},"scope":15194,"src":"5232:124:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2799],"body":{"id":15156,"nodeType":"Block","src":"5433:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15152,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5451:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5451:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15151,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5443:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5443:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15155,"nodeType":"ExpressionStatement","src":"5443:29:98"}]},"functionSelector":"b3a59022","id":15157,"implemented":true,"kind":"function","modifiers":[],"name":"getLifetimeRewards","nodeType":"FunctionDefinition","overrides":{"id":15147,"nodeType":"OverrideSpecifier","overrides":[],"src":"5406:8:98"},"parameters":{"id":15146,"nodeType":"ParameterList","parameters":[],"src":"5389:2:98"},"returnParameters":{"id":15150,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15149,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15157,"src":"5424:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15148,"name":"uint256","nodeType":"ElementaryTypeName","src":"5424:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5423:9:98"},"scope":15194,"src":"5362:117:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2804],"body":{"id":15168,"nodeType":"Block","src":"5556:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15164,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5574:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5574:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15163,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5566:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15166,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5566:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15167,"nodeType":"ExpressionStatement","src":"5566:29:98"}]},"functionSelector":"bf62bee6","id":15169,"implemented":true,"kind":"function","modifiers":[],"name":"getLastRewardBlock","nodeType":"FunctionDefinition","overrides":{"id":15159,"nodeType":"OverrideSpecifier","overrides":[],"src":"5529:8:98"},"parameters":{"id":15158,"nodeType":"ParameterList","parameters":[],"src":"5512:2:98"},"returnParameters":{"id":15162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15161,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15169,"src":"5547:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15160,"name":"uint256","nodeType":"ElementaryTypeName","src":"5547:7:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5546:9:98"},"scope":15194,"src":"5485:117:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2814],"body":{"id":15180,"nodeType":"Block","src":"5682:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15176,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5700:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5700:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15175,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5692:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5692:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15179,"nodeType":"ExpressionStatement","src":"5692:29:98"}]},"functionSelector":"10d0ab22","id":15181,"implemented":true,"kind":"function","modifiers":[],"name":"INCENTIVES_CONTROLLER","nodeType":"FunctionDefinition","overrides":{"id":15171,"nodeType":"OverrideSpecifier","overrides":[],"src":"5655:8:98"},"parameters":{"id":15170,"nodeType":"ParameterList","parameters":[],"src":"5638:2:98"},"returnParameters":{"id":15174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15173,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15181,"src":"5673:7:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15172,"name":"address","nodeType":"ElementaryTypeName","src":"5673:7:98","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5672:9:98"},"scope":15194,"src":"5608:120:98","stateMutability":"pure","virtual":false,"visibility":"external"},{"baseFunctions":[2829],"body":{"id":15192,"nodeType":"Block","src":"5798:46:98","statements":[{"expression":{"arguments":[{"expression":{"id":15188,"name":"Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"5816:6:98","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Errors_$1869_$","typeString":"type(library Errors)"}},"id":15189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"UNIMPLEMENTED","nodeType":"MemberAccess","referencedDeclaration":1865,"src":"5816:20:98","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15187,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[1347,1367],"referencedDeclaration":1347,"src":"5808:7:98","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":15190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5808:29:98","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15191,"nodeType":"ExpressionStatement","src":"5808:29:98"}]},"functionSelector":"99248ea7","id":15193,"implemented":true,"kind":"function","modifiers":[],"name":"REWARD_TOKEN","nodeType":"FunctionDefinition","overrides":{"id":15183,"nodeType":"OverrideSpecifier","overrides":[],"src":"5772:8:98"},"parameters":{"id":15182,"nodeType":"ParameterList","parameters":[],"src":"5755:2:98"},"returnParameters":{"id":15186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15185,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15193,"src":"5790:6:98","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"},"typeName":{"id":15184,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"5790:6:98","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"5789:8:98"},"scope":15194,"src":"5734:110:98","stateMutability":"pure","virtual":false,"visibility":"external"}],"scope":15195,"src":"907:4939:98"}],"src":"688:5159:98"},"id":98},"contracts/test/MockWstETH.sol":{"ast":{"absolutePath":"contracts/test/MockWstETH.sol","exportedSymbols":{"MockWstETH":[15375]},"id":15376,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15196,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:99"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol","id":15197,"nodeType":"ImportDirective","scope":15376,"sourceUnit":2844,"src":"756:76:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","file":"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol","id":15198,"nodeType":"ImportDirective","scope":15376,"sourceUnit":2901,"src":"833:77:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","file":"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol","id":15199,"nodeType":"ImportDirective","scope":15376,"sourceUnit":5294,"src":"912:72:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol","id":15200,"nodeType":"ImportDirective","scope":15376,"sourceUnit":7612,"src":"985:75:99","symbolAliases":[],"unitAlias":""},{"absolutePath":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","file":"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol","id":15201,"nodeType":"ImportDirective","scope":15376,"sourceUnit":8496,"src":"1061:79:99","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15202,"name":"ERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":7611,"src":"1165:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$7611","typeString":"contract ERC20"}},"id":15203,"nodeType":"InheritanceSpecifier","src":"1165:5:99"},{"baseName":{"id":15204,"name":"IwstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2900,"src":"1172:7:99","typeDescriptions":{"typeIdentifier":"t_contract$_IwstETH_$2900","typeString":"contract IwstETH"}},"id":15205,"nodeType":"InheritanceSpecifier","src":"1172:7:99"}],"contractDependencies":[2090,2900,7611],"contractKind":"contract","fullyImplemented":true,"id":15375,"linearizedBaseContracts":[15375,2900,7611,2090],"name":"MockWstETH","nodeType":"ContractDefinition","nodes":[{"id":15208,"libraryName":{"id":15206,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":5293,"src":"1192:10:99","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$5293","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"1186:29:99","typeName":{"id":15207,"name":"uint256","nodeType":"ElementaryTypeName","src":"1207:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":15211,"libraryName":{"id":15209,"name":"SafeERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":8495,"src":"1226:9:99","typeDescriptions":{"typeIdentifier":"t_contract$_SafeERC20_$8495","typeString":"library SafeERC20"}},"nodeType":"UsingForDirective","src":"1220:27:99","typeName":{"id":15210,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":2090,"src":"1240:6:99","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}}},{"baseFunctions":[2855],"constant":false,"functionSelector":"c1fe3e48","id":15214,"mutability":"mutable","name":"stETH","nodeType":"VariableDeclaration","overrides":{"id":15213,"nodeType":"OverrideSpecifier","overrides":[],"src":"1267:8:99"},"scope":15375,"src":"1253:28:99","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"},"typeName":{"id":15212,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2843,"src":"1253:6:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"visibility":"public"},{"constant":false,"functionSelector":"2c4e722e","id":15217,"mutability":"mutable","name":"rate","nodeType":"VariableDeclaration","scope":15375,"src":"1287:28:99","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15215,"name":"uint256","nodeType":"ElementaryTypeName","src":"1287:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"312e35653138","id":15216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1309:6:99","typeDescriptions":{"typeIdentifier":"t_rational_1500000000000000000_by_1","typeString":"int_const 1500000000000000000"},"value":"1.5e18"},"visibility":"public"},{"body":{"id":15230,"nodeType":"Block","src":"1388:30:99","statements":[{"expression":{"id":15228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":15226,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"1398:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15227,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15219,"src":"1406:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"src":"1398:13:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"id":15229,"nodeType":"ExpressionStatement","src":"1398:13:99"}]},"id":15231,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"57726170706564205374616b6564204574686572","id":15222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1354:22:99","typeDescriptions":{"typeIdentifier":"t_stringliteral_e4aaeeeba3941f74fbcdbbdf601cdfb58af6ecb0e16fb03b053f640b73c8e1b0","typeString":"literal_string \"Wrapped Staked Ether\""},"value":"Wrapped Staked Ether"},{"hexValue":"777374455448","id":15223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1378:8:99","typeDescriptions":{"typeIdentifier":"t_stringliteral_707722560bdff9b9a74d8e6546a03701e75a3e3fd30c3f0f5184fecdbd366335","typeString":"literal_string \"wstETH\""},"value":"wstETH"}],"id":15224,"modifierName":{"id":15221,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7611,"src":"1348:5:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$7611_$","typeString":"type(contract ERC20)"}},"nodeType":"ModifierInvocation","src":"1348:39:99"}],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15220,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15219,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","scope":15231,"src":"1334:12:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"},"typeName":{"id":15218,"name":"IstETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2843,"src":"1334:6:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"visibility":"internal"}],"src":"1333:14:99"},"returnParameters":{"id":15225,"nodeType":"ParameterList","parameters":[],"src":"1388:0:99"},"scope":15375,"src":"1322:96:99","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2863],"body":{"id":15266,"nodeType":"Block","src":"1496:221:99","statements":[{"expression":{"arguments":[{"expression":{"id":15243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1537:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1537:10:99","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"id":15247,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1557:4:99","typeDescriptions":{"typeIdentifier":"t_contract$_MockWstETH_$15375","typeString":"contract MockWstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockWstETH_$15375","typeString":"contract MockWstETH"}],"id":15246,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1549:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15245,"name":"address","nodeType":"ElementaryTypeName","src":"1549:7:99","typeDescriptions":{}}},"id":15248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1549:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15249,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15233,"src":"1564:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15240,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"1513:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}],"id":15239,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1506:6:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":15241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":15242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8458,"src":"1506:30:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":15250,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:71:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15251,"nodeType":"ExpressionStatement","src":"1506:71:99"},{"assignments":[15253],"declarations":[{"constant":false,"id":15253,"mutability":"mutable","name":"wstETHAmount","nodeType":"VariableDeclaration","scope":15266,"src":"1587:20:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15252,"name":"uint256","nodeType":"ElementaryTypeName","src":"1587:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15257,"initialValue":{"arguments":[{"id":15255,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15233,"src":"1627:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15254,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15338,"src":"1610:16:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1610:30:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1587:53:99"},{"expression":{"arguments":[{"expression":{"id":15259,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1656:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1656:10:99","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15261,"name":"wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15253,"src":"1668:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15258,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"1650:5:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1650:31:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15263,"nodeType":"ExpressionStatement","src":"1650:31:99"},{"expression":{"id":15264,"name":"wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15253,"src":"1698:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15238,"id":15265,"nodeType":"Return","src":"1691:19:99"}]},"functionSelector":"ea598cb0","id":15267,"implemented":true,"kind":"function","modifiers":[],"name":"wrap","nodeType":"FunctionDefinition","overrides":{"id":15235,"nodeType":"OverrideSpecifier","overrides":[],"src":"1469:8:99"},"parameters":{"id":15234,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15233,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":15267,"src":"1438:20:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15232,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1437:22:99"},"returnParameters":{"id":15238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15237,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15267,"src":"1487:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15236,"name":"uint256","nodeType":"ElementaryTypeName","src":"1487:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1486:9:99"},"scope":15375,"src":"1424:293:99","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2871],"body":{"id":15298,"nodeType":"Block","src":"1798:201:99","statements":[{"expression":{"arguments":[{"expression":{"id":15276,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1814:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1814:10:99","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15278,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15269,"src":"1826:13:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15275,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7563,"src":"1808:5:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1808:32:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15280,"nodeType":"ExpressionStatement","src":"1808:32:99"},{"assignments":[15282],"declarations":[{"constant":false,"id":15282,"mutability":"mutable","name":"stETHAmount","nodeType":"VariableDeclaration","scope":15298,"src":"1850:19:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15281,"name":"uint256","nodeType":"ElementaryTypeName","src":"1850:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":15286,"initialValue":{"arguments":[{"id":15284,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15269,"src":"1889:13:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15283,"name":"getStETHByWstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15352,"src":"1872:16:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1872:31:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1850:53:99"},{"expression":{"arguments":[{"expression":{"id":15291,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1940:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1940:10:99","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15293,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15282,"src":"1952:11:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":15288,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"1920:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}],"id":15287,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2090,"src":"1913:6:99","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$2090_$","typeString":"type(contract IERC20)"}},"id":15289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1913:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$2090","typeString":"contract IERC20"}},"id":15290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8430,"src":"1913:26:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$2090_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2090_$","typeString":"function (contract IERC20,address,uint256)"}},"id":15294,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1913:51:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15295,"nodeType":"ExpressionStatement","src":"1913:51:99"},{"expression":{"id":15296,"name":"stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15282,"src":"1981:11:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15274,"id":15297,"nodeType":"Return","src":"1974:18:99"}]},"functionSelector":"de0e9a3e","id":15299,"implemented":true,"kind":"function","modifiers":[],"name":"unwrap","nodeType":"FunctionDefinition","overrides":{"id":15271,"nodeType":"OverrideSpecifier","overrides":[],"src":"1771:8:99"},"parameters":{"id":15270,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15269,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":15299,"src":"1739:21:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15268,"name":"uint256","nodeType":"ElementaryTypeName","src":"1739:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1738:23:99"},"returnParameters":{"id":15274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15273,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15299,"src":"1789:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15272,"name":"uint256","nodeType":"ElementaryTypeName","src":"1789:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1788:9:99"},"scope":15375,"src":"1723:276:99","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":15323,"nodeType":"Block","src":"2032:120:99","statements":[{"expression":{"arguments":[{"arguments":[{"id":15310,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2083:4:99","typeDescriptions":{"typeIdentifier":"t_contract$_MockWstETH_$15375","typeString":"contract MockWstETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MockWstETH_$15375","typeString":"contract MockWstETH"}],"id":15309,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2075:7:99","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15308,"name":"address","nodeType":"ElementaryTypeName","src":"2075:7:99","typeDescriptions":{}}},"id":15311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2075:13:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"id":15302,"name":"stETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15214,"src":"2042:5:99","typeDescriptions":{"typeIdentifier":"t_contract$_IstETH_$2843","typeString":"contract IstETH"}},"id":15304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"submit","nodeType":"MemberAccess","referencedDeclaration":2842,"src":"2042:12:99","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$","typeString":"function (address) payable external returns (uint256)"}},"id":15307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"expression":{"id":15305,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2063:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2063:9:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2042:32:99","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$returns$_t_uint256_$value","typeString":"function (address) payable external returns (uint256)"}},"id":15312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2042:47:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15313,"nodeType":"ExpressionStatement","src":"2042:47:99"},{"expression":{"arguments":[{"expression":{"id":15315,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2105:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2105:10:99","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"arguments":[{"expression":{"id":15318,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2134:3:99","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"2134:9:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15317,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15338,"src":"2117:16:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2117:27:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15314,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7504,"src":"2099:5:99","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2099:46:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15322,"nodeType":"ExpressionStatement","src":"2099:46:99"}]},"id":15324,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15300,"nodeType":"ParameterList","parameters":[],"src":"2012:2:99"},"returnParameters":{"id":15301,"nodeType":"ParameterList","parameters":[],"src":"2032:0:99"},"scope":15375,"src":"2005:147:99","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2879],"body":{"id":15337,"nodeType":"Block","src":"2245:50:99","statements":[{"expression":{"arguments":[{"id":15334,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15217,"src":"2283:4:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15332,"name":"_stETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15326,"src":"2262:12:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"divDown","nodeType":"MemberAccess","referencedDeclaration":5097,"src":"2262:20:99","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2262:26:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15331,"id":15336,"nodeType":"Return","src":"2255:33:99"}]},"functionSelector":"b0e38900","id":15338,"implemented":true,"kind":"function","modifiers":[],"name":"getWstETHByStETH","nodeType":"FunctionDefinition","overrides":{"id":15328,"nodeType":"OverrideSpecifier","overrides":[],"src":"2218:8:99"},"parameters":{"id":15327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15326,"mutability":"mutable","name":"_stETHAmount","nodeType":"VariableDeclaration","scope":15338,"src":"2184:20:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2184:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2183:22:99"},"returnParameters":{"id":15331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15330,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15338,"src":"2236:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15329,"name":"uint256","nodeType":"ElementaryTypeName","src":"2236:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2235:9:99"},"scope":15375,"src":"2158:137:99","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2887],"body":{"id":15351,"nodeType":"Block","src":"2389:51:99","statements":[{"expression":{"arguments":[{"id":15348,"name":"rate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15217,"src":"2428:4:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":15346,"name":"_wstETHAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15340,"src":"2406:13:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDown","nodeType":"MemberAccess","referencedDeclaration":5024,"src":"2406:21:99","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":15349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2406:27:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15345,"id":15350,"nodeType":"Return","src":"2399:34:99"}]},"functionSelector":"bb2952fc","id":15352,"implemented":true,"kind":"function","modifiers":[],"name":"getStETHByWstETH","nodeType":"FunctionDefinition","overrides":{"id":15342,"nodeType":"OverrideSpecifier","overrides":[],"src":"2362:8:99"},"parameters":{"id":15341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15340,"mutability":"mutable","name":"_wstETHAmount","nodeType":"VariableDeclaration","scope":15352,"src":"2327:21:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15339,"name":"uint256","nodeType":"ElementaryTypeName","src":"2327:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2326:23:99"},"returnParameters":{"id":15345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15344,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15352,"src":"2380:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15343,"name":"uint256","nodeType":"ElementaryTypeName","src":"2380:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2379:9:99"},"scope":15375,"src":"2301:139:99","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2893],"body":{"id":15362,"nodeType":"Block","src":"2512:49:99","statements":[{"expression":{"arguments":[{"hexValue":"31","id":15359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2546:7:99","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":15358,"name":"getStETHByWstETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15352,"src":"2529:16:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2529:25:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15357,"id":15361,"nodeType":"Return","src":"2522:32:99"}]},"functionSelector":"035faf82","id":15363,"implemented":true,"kind":"function","modifiers":[],"name":"stEthPerToken","nodeType":"FunctionDefinition","overrides":{"id":15354,"nodeType":"OverrideSpecifier","overrides":[],"src":"2485:8:99"},"parameters":{"id":15353,"nodeType":"ParameterList","parameters":[],"src":"2468:2:99"},"returnParameters":{"id":15357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15356,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15363,"src":"2503:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15355,"name":"uint256","nodeType":"ElementaryTypeName","src":"2503:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2502:9:99"},"scope":15375,"src":"2446:115:99","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[2899],"body":{"id":15373,"nodeType":"Block","src":"2634:49:99","statements":[{"expression":{"arguments":[{"hexValue":"31","id":15370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2668:7:99","subdenomination":"ether","typeDescriptions":{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000000000000000000_by_1","typeString":"int_const 1000000000000000000"}],"id":15369,"name":"getWstETHByStETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15338,"src":"2651:16:99","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":15371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2651:25:99","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15368,"id":15372,"nodeType":"Return","src":"2644:32:99"}]},"functionSelector":"9576a0c8","id":15374,"implemented":true,"kind":"function","modifiers":[],"name":"tokensPerStEth","nodeType":"FunctionDefinition","overrides":{"id":15365,"nodeType":"OverrideSpecifier","overrides":[],"src":"2607:8:99"},"parameters":{"id":15364,"nodeType":"ParameterList","parameters":[],"src":"2590:2:99"},"returnParameters":{"id":15368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15367,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15374,"src":"2625:7:99","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15366,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:99","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2624:9:99"},"scope":15375,"src":"2567:116:99","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":15376,"src":"1142:1543:99"}],"src":"731:1955:99"},"id":99},"contracts/test/TestWETH.sol":{"ast":{"absolutePath":"contracts/test/TestWETH.sol","exportedSymbols":{"TestWETH":[15640]},"id":15641,"license":"GPL-3.0-or-later","nodeType":"SourceUnit","nodes":[{"id":15377,"literals":["solidity","^","0.7",".0"],"nodeType":"PragmaDirective","src":"731:23:100"},{"absolutePath":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","file":"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol","id":15378,"nodeType":"ImportDirective","scope":15641,"sourceUnit":2013,"src":"756:78:100","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":15379,"name":"IWETH","nodeType":"UserDefinedTypeName","referencedDeclaration":2012,"src":"857:5:100","typeDescriptions":{"typeIdentifier":"t_contract$_IWETH_$2012","typeString":"contract IWETH"}},"id":15380,"nodeType":"InheritanceSpecifier","src":"857:5:100"}],"contractDependencies":[2012,2090],"contractKind":"contract","fullyImplemented":true,"id":15640,"linearizedBaseContracts":[15640,2012,2090],"name":"TestWETH","nodeType":"ContractDefinition","nodes":[{"constant":false,"functionSelector":"06fdde03","id":15383,"mutability":"mutable","name":"name","nodeType":"VariableDeclaration","scope":15640,"src":"869:36:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":15381,"name":"string","nodeType":"ElementaryTypeName","src":"869:6:100","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"57726170706564204574686572","id":15382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"890:15:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3","typeString":"literal_string \"Wrapped Ether\""},"value":"Wrapped Ether"},"visibility":"public"},{"constant":false,"functionSelector":"95d89b41","id":15386,"mutability":"mutable","name":"symbol","nodeType":"VariableDeclaration","scope":15640,"src":"911:29:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":15384,"name":"string","nodeType":"ElementaryTypeName","src":"911:6:100","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"57455448","id":15385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"934:6:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8","typeString":"literal_string \"WETH\""},"value":"WETH"},"visibility":"public"},{"constant":false,"functionSelector":"313ce567","id":15389,"mutability":"mutable","name":"decimals","nodeType":"VariableDeclaration","scope":15640,"src":"946:26:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":15387,"name":"uint8","nodeType":"ElementaryTypeName","src":"946:5:100","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3138","id":15388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"970:2:100","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"anonymous":false,"id":15395,"name":"Deposit","nodeType":"EventDefinition","parameters":{"id":15394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15391,"indexed":true,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":15395,"src":"993:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15390,"name":"address","nodeType":"ElementaryTypeName","src":"993:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15393,"indexed":false,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":15395,"src":"1014:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15392,"name":"uint256","nodeType":"ElementaryTypeName","src":"1014:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"992:34:100"},"src":"979:48:100"},{"anonymous":false,"id":15401,"name":"Withdrawal","nodeType":"EventDefinition","parameters":{"id":15400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15397,"indexed":true,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":15401,"src":"1049:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15396,"name":"address","nodeType":"ElementaryTypeName","src":"1049:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15399,"indexed":false,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":15401,"src":"1070:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1070:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1048:34:100"},"src":"1032:51:100"},{"baseFunctions":[2029],"constant":false,"functionSelector":"70a08231","id":15406,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","overrides":{"id":15405,"nodeType":"OverrideSpecifier","overrides":[],"src":"1124:8:100"},"scope":15640,"src":"1089:53:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":15404,"keyType":{"id":15402,"name":"address","nodeType":"ElementaryTypeName","src":"1097:7:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1089:27:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":15403,"name":"uint256","nodeType":"ElementaryTypeName","src":"1108:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"baseFunctions":[2049],"constant":false,"functionSelector":"dd62ed3e","id":15413,"mutability":"mutable","name":"allowance","nodeType":"VariableDeclaration","overrides":{"id":15412,"nodeType":"OverrideSpecifier","overrides":[],"src":"1203:8:100"},"scope":15640,"src":"1148:73:100","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":15411,"keyType":{"id":15407,"name":"address","nodeType":"ElementaryTypeName","src":"1156:7:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1148:47:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":15410,"keyType":{"id":15408,"name":"address","nodeType":"ElementaryTypeName","src":"1175:7:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1167:27:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":15409,"name":"uint256","nodeType":"ElementaryTypeName","src":"1186:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"body":{"id":15419,"nodeType":"Block","src":"1255:26:100","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":15416,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15440,"src":"1265:7:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":15417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1265:9:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15418,"nodeType":"ExpressionStatement","src":"1265:9:100"}]},"id":15420,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","parameters":{"id":15414,"nodeType":"ParameterList","parameters":[],"src":"1235:2:100"},"returnParameters":{"id":15415,"nodeType":"ParameterList","parameters":[],"src":"1255:0:100"},"scope":15640,"src":"1228:53:100","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[2006],"body":{"id":15439,"nodeType":"Block","src":"1330:96:100","statements":[{"expression":{"id":15430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15424,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"1340:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15427,"indexExpression":{"expression":{"id":15425,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1350:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1350:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1340:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":15428,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1365:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1340:34:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15431,"nodeType":"ExpressionStatement","src":"1340:34:100"},{"eventCall":{"arguments":[{"expression":{"id":15433,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1397:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1397:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"expression":{"id":15435,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1409:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15436,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"1409:9:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15432,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15395,"src":"1389:7:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1389:30:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15438,"nodeType":"EmitStatement","src":"1384:35:100"}]},"functionSelector":"d0e30db0","id":15440,"implemented":true,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":{"id":15422,"nodeType":"OverrideSpecifier","overrides":[],"src":"1321:8:100"},"parameters":{"id":15421,"nodeType":"ParameterList","parameters":[],"src":"1303:2:100"},"returnParameters":{"id":15423,"nodeType":"ParameterList","parameters":[],"src":"1330:0:100"},"scope":15640,"src":"1287:139:100","stateMutability":"payable","virtual":false,"visibility":"public"},{"baseFunctions":[2011],"body":{"id":15477,"nodeType":"Block","src":"1479:192:100","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15447,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"1497:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15450,"indexExpression":{"expression":{"id":15448,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1507:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1507:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1497:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15451,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15442,"src":"1522:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1497:28:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f42414c414e4345","id":15453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1527:22:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""},"value":"INSUFFICIENT_BALANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""}],"id":15446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1489:7:100","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1489:61:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15455,"nodeType":"ExpressionStatement","src":"1489:61:100"},{"expression":{"id":15461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15456,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"1560:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15459,"indexExpression":{"expression":{"id":15457,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1570:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1570:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1560:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":15460,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15442,"src":"1585:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1560:28:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15462,"nodeType":"ExpressionStatement","src":"1560:28:100"},{"expression":{"arguments":[{"id":15468,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15442,"src":"1618:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":15463,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1598:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1598:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":15467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"1598:19:100","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":15469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1598:24:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15470,"nodeType":"ExpressionStatement","src":"1598:24:100"},{"eventCall":{"arguments":[{"expression":{"id":15472,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1648:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1648:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15474,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15442,"src":"1660:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15471,"name":"Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15401,"src":"1637:10:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1637:27:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15476,"nodeType":"EmitStatement","src":"1632:32:100"}]},"functionSelector":"2e1a7d4d","id":15478,"implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":{"id":15444,"nodeType":"OverrideSpecifier","overrides":[],"src":"1470:8:100"},"parameters":{"id":15443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15442,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":15478,"src":"1450:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15441,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1449:13:100"},"returnParameters":{"id":15445,"nodeType":"ParameterList","parameters":[],"src":"1479:0:100"},"scope":15640,"src":"1432:239:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":15496,"nodeType":"Block","src":"1832:92:100","statements":[{"expression":{"id":15489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15485,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"1842:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15487,"indexExpression":{"id":15486,"name":"destinatary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"1852:11:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1842:22:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":15488,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"1868:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1842:32:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15490,"nodeType":"ExpressionStatement","src":"1842:32:100"},{"eventCall":{"arguments":[{"id":15492,"name":"destinatary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15480,"src":"1897:11:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15493,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15482,"src":"1910:6:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15491,"name":"Deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15395,"src":"1889:7:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":15494,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1889:28:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15495,"nodeType":"EmitStatement","src":"1884:33:100"}]},"functionSelector":"40c10f19","id":15497,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","parameters":{"id":15483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15480,"mutability":"mutable","name":"destinatary","nodeType":"VariableDeclaration","scope":15497,"src":"1786:19:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15479,"name":"address","nodeType":"ElementaryTypeName","src":"1786:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15482,"mutability":"mutable","name":"amount","nodeType":"VariableDeclaration","scope":15497,"src":"1807:14:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15481,"name":"uint256","nodeType":"ElementaryTypeName","src":"1807:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1785:37:100"},"returnParameters":{"id":15484,"nodeType":"ParameterList","parameters":[],"src":"1832:0:100"},"scope":15640,"src":"1772:152:100","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[2021],"body":{"id":15509,"nodeType":"Block","src":"1992:45:100","statements":[{"expression":{"expression":{"arguments":[{"id":15505,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2017:4:100","typeDescriptions":{"typeIdentifier":"t_contract$_TestWETH_$15640","typeString":"contract TestWETH"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_TestWETH_$15640","typeString":"contract TestWETH"}],"id":15504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2009:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":15503,"name":"address","nodeType":"ElementaryTypeName","src":"2009:7:100","typeDescriptions":{}}},"id":15506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2009:13:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":15507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balance","nodeType":"MemberAccess","src":"2009:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":15502,"id":15508,"nodeType":"Return","src":"2002:28:100"}]},"functionSelector":"18160ddd","id":15510,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":{"id":15499,"nodeType":"OverrideSpecifier","overrides":[],"src":"1965:8:100"},"parameters":{"id":15498,"nodeType":"ParameterList","parameters":[],"src":"1950:2:100"},"returnParameters":{"id":15502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15501,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15510,"src":"1983:7:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15500,"name":"uint256","nodeType":"ElementaryTypeName","src":"1983:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1982:9:100"},"scope":15640,"src":"1930:107:100","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[2059],"body":{"id":15538,"nodeType":"Block","src":"2117:115:100","statements":[{"expression":{"id":15527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":15520,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15413,"src":"2127:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":15524,"indexExpression":{"expression":{"id":15521,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2137:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2137:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2127:21:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15525,"indexExpression":{"id":15523,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15512,"src":"2149:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2127:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":15526,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15514,"src":"2156:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2127:32:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15528,"nodeType":"ExpressionStatement","src":"2127:32:100"},{"eventCall":{"arguments":[{"expression":{"id":15530,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2183:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2183:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15532,"name":"guy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15512,"src":"2195:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15533,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15514,"src":"2200:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15529,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2089,"src":"2174:8:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2174:30:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15535,"nodeType":"EmitStatement","src":"2169:35:100"},{"expression":{"hexValue":"74727565","id":15536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2221:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15519,"id":15537,"nodeType":"Return","src":"2214:11:100"}]},"functionSelector":"095ea7b3","id":15539,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":{"id":15516,"nodeType":"OverrideSpecifier","overrides":[],"src":"2093:8:100"},"parameters":{"id":15515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15512,"mutability":"mutable","name":"guy","nodeType":"VariableDeclaration","scope":15539,"src":"2060:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15511,"name":"address","nodeType":"ElementaryTypeName","src":"2060:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15514,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":15539,"src":"2073:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15513,"name":"uint256","nodeType":"ElementaryTypeName","src":"2073:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2059:26:100"},"returnParameters":{"id":15519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15518,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15539,"src":"2111:4:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15517,"name":"bool","nodeType":"ElementaryTypeName","src":"2111:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2110:6:100"},"scope":15640,"src":"2043:189:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2039],"body":{"id":15556,"nodeType":"Block","src":"2313:58:100","statements":[{"expression":{"arguments":[{"expression":{"id":15550,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2343:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15551,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2343:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"id":15552,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15541,"src":"2355:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15553,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15543,"src":"2360:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15549,"name":"transferFrom","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15639,"src":"2330:12:100","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) returns (bool)"}},"id":15554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2330:34:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":15548,"id":15555,"nodeType":"Return","src":"2323:41:100"}]},"functionSelector":"a9059cbb","id":15557,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":{"id":15545,"nodeType":"OverrideSpecifier","overrides":[],"src":"2289:8:100"},"parameters":{"id":15544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15541,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":15557,"src":"2256:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15540,"name":"address","nodeType":"ElementaryTypeName","src":"2256:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15543,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":15557,"src":"2269:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15542,"name":"uint256","nodeType":"ElementaryTypeName","src":"2269:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2255:26:100"},"returnParameters":{"id":15548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15547,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15557,"src":"2307:4:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15546,"name":"bool","nodeType":"ElementaryTypeName","src":"2307:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2306:6:100"},"scope":15640,"src":"2238:133:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2071],"body":{"id":15638,"nodeType":"Block","src":"2499:413:100","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":15570,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"2517:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15572,"indexExpression":{"id":15571,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2527:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2517:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15573,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2535:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2517:21:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f42414c414e4345","id":15575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2540:22:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""},"value":"INSUFFICIENT_BALANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_153c6a82d06260899a3190a7f053b8e53b5844ee1a57108f9b35d4e78ccddb58","typeString":"literal_string \"INSUFFICIENT_BALANCE\""}],"id":15569,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2509:7:100","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2509:54:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15577,"nodeType":"ExpressionStatement","src":"2509:54:100"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":15594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":15581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":15578,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2578:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":15579,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2585:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2585:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"2578:17:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":15582,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15413,"src":"2599:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":15584,"indexExpression":{"id":15583,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2609:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2599:14:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15587,"indexExpression":{"expression":{"id":15585,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2614:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2614:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2599:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":15591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2637:2:100","subExpression":{"hexValue":"31","id":15590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2638:1:100","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":15589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2629:7:100","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":15588,"name":"uint256","nodeType":"ElementaryTypeName","src":"2629:7:100","typeDescriptions":{}}},"id":15592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2629:11:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2599:41:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2578:62:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":15617,"nodeType":"IfStatement","src":"2574:208:100","trueBody":{"id":15616,"nodeType":"Block","src":"2642:140:100","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":15603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":15596,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15413,"src":"2664:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":15598,"indexExpression":{"id":15597,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2674:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2664:14:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15601,"indexExpression":{"expression":{"id":15599,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2679:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2679:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2664:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":15602,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2694:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2664:33:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"494e53554646494349454e545f414c4c4f57414e4345","id":15604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2699:24:100","typeDescriptions":{"typeIdentifier":"t_stringliteral_766e240ea71a1fa1f50bcdafcabfc952771c7bce143ed2fb6cc99408373684b8","typeString":"literal_string \"INSUFFICIENT_ALLOWANCE\""},"value":"INSUFFICIENT_ALLOWANCE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_766e240ea71a1fa1f50bcdafcabfc952771c7bce143ed2fb6cc99408373684b8","typeString":"literal_string \"INSUFFICIENT_ALLOWANCE\""}],"id":15595,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2656:7:100","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":15605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2656:68:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15606,"nodeType":"ExpressionStatement","src":"2656:68:100"},{"expression":{"id":15614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":15607,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15413,"src":"2738:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":15611,"indexExpression":{"id":15608,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2748:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2738:14:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15612,"indexExpression":{"expression":{"id":15609,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2753:3:100","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":15610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2753:10:100","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2738:26:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":15613,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2768:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2738:33:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15615,"nodeType":"ExpressionStatement","src":"2738:33:100"}]}},{"expression":{"id":15622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15618,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"2792:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15620,"indexExpression":{"id":15619,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2802:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2792:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":15621,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2810:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2792:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15623,"nodeType":"ExpressionStatement","src":"2792:21:100"},{"expression":{"id":15628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":15624,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15406,"src":"2823:9:100","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":15626,"indexExpression":{"id":15625,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15561,"src":"2833:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2823:14:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":15627,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2841:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2823:21:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":15629,"nodeType":"ExpressionStatement","src":"2823:21:100"},{"eventCall":{"arguments":[{"id":15631,"name":"src","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15559,"src":"2869:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15632,"name":"dst","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15561,"src":"2874:3:100","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":15633,"name":"wad","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":15563,"src":"2879:3:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":15630,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"2860:8:100","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":15634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2860:23:100","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":15635,"nodeType":"EmitStatement","src":"2855:28:100"},{"expression":{"hexValue":"74727565","id":15636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2901:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":15568,"id":15637,"nodeType":"Return","src":"2894:11:100"}]},"functionSelector":"23b872dd","id":15639,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":{"id":15565,"nodeType":"OverrideSpecifier","overrides":[],"src":"2475:8:100"},"parameters":{"id":15564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15559,"mutability":"mutable","name":"src","nodeType":"VariableDeclaration","scope":15639,"src":"2408:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15558,"name":"address","nodeType":"ElementaryTypeName","src":"2408:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15561,"mutability":"mutable","name":"dst","nodeType":"VariableDeclaration","scope":15639,"src":"2429:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15560,"name":"address","nodeType":"ElementaryTypeName","src":"2429:7:100","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":15563,"mutability":"mutable","name":"wad","nodeType":"VariableDeclaration","scope":15639,"src":"2450:11:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":15562,"name":"uint256","nodeType":"ElementaryTypeName","src":"2450:7:100","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2398:69:100"},"returnParameters":{"id":15568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":15567,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","scope":15639,"src":"2493:4:100","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":15566,"name":"bool","nodeType":"ElementaryTypeName","src":"2493:4:100","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2492:6:100"},"scope":15640,"src":"2377:535:100","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":15641,"src":"836:2078:100"}],"src":"731:2184:100"},"id":100}},"contracts":{"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol":{"IAuthorizerAdaptor":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"performAction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8","performAction(address,bytes)":"4036176a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"performAction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"performAction(address,bytes)\":{\"params\":{\"data\":\"- Calldata to be sent to the target contract\",\"target\":\"- Address of the contract to be called\"},\"returns\":{\"_0\":\"The bytes encoded return value from the performed function call\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"performAction(address,bytes)\":{\"notice\":\"Performs an arbitrary function call on a target contract, provided the caller is authorized to do so.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":\"IAuthorizerAdaptor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol":{"IBalancerMinter":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"address","name":"gauge","type":"address"},{"indexed":false,"internalType":"uint256","name":"minted","type":"uint256"}],"name":"Minted","type":"event"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"allowed_to_mint_for","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerTokenAdmin","outputs":[{"internalType":"contract IBalancerTokenAdmin","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGaugeController","outputs":[{"internalType":"contract IGaugeController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"getMinterApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"}],"name":"mintMany","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"address","name":"user","type":"address"}],"name":"mintManyFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"mint_for","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[8]","name":"gauges","type":"address[8]"}],"name":"mint_many","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"gauge","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"}],"name":"setMinterApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"setMinterApprovalWithSignature","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"toggle_approve_mint","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowed_to_mint_for(address,address)":"a0990033","getBalancerToken()":"c0039699","getBalancerTokenAdmin()":"e6dec36f","getGaugeController()":"58de9ade","getMinterApproval(address,address)":"3c543bc6","mint(address)":"6a627842","mintFor(address,address)":"7504a15d","mintMany(address[])":"397ada21","mintManyFor(address[],address)":"3b9f7384","mint_for(address,address)":"27f18ae3","mint_many(address[8])":"a51e1904","minted(address,address)":"8b752bb0","setMinterApproval(address,bool)":"0de54ba0","setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)":"c6542794","toggle_approve_mint(address)":"dd289d60"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"allowed_to_mint_for\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerTokenAdmin\",\"outputs\":[{\"internalType\":\"contract IBalancerTokenAdmin\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGaugeController\",\"outputs\":[{\"internalType\":\"contract IGaugeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinterApproval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"mintMany\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mintManyFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"mint_for\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[8]\",\"name\":\"gauges\",\"type\":\"address[8]\"}],\"name\":\"mint_many\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"minted\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"}],\"name\":\"setMinterApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMinterApprovalWithSignature\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"minter\",\"type\":\"address\"}],\"name\":\"toggle_approve_mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"mint(address)\":{\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\"}},\"mintFor(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mintMany(address[])\":{\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}},\"mintManyFor(address[],address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\",\"user\":\"Address to mint to\"}},\"mint_for(address,address)\":{\"details\":\"Only possible when `msg.sender` has been approved by `user` to mint on their behalf\",\"params\":{\"gauge\":\"`LiquidityGauge` address to get mintable amount from\",\"user\":\"Address to mint to\"}},\"mint_many(address[8])\":{\"details\":\"This function is not recommended as `mintMany()` is more flexible and gas efficient\",\"params\":{\"gauges\":\"List of `LiquidityGauge` addresses\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowed_to_mint_for(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"},\"getBalancerTokenAdmin()\":{\"notice\":\"Returns the address of the Balancer Token Admin contract\"},\"getGaugeController()\":{\"notice\":\"Returns the address of the Gauge Controller\"},\"getMinterApproval(address,address)\":{\"notice\":\"Whether `minter` is approved to mint tokens for `user`\"},\"mint(address)\":{\"notice\":\"Mint everything which belongs to `msg.sender` and send to them\"},\"mintFor(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mintMany(address[])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"mintManyFor(address[],address)\":{\"notice\":\"Mint tokens for `user` across multiple gauges\"},\"mint_for(address,address)\":{\"notice\":\"Mint tokens for `user`\"},\"mint_many(address[8])\":{\"notice\":\"Mint everything which belongs to `msg.sender` across multiple gauges\"},\"minted(address,address)\":{\"notice\":\"The total number of tokens minted for `user` from `gauge`\"},\"setMinterApproval(address,bool)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on your behalf\"},\"setMinterApprovalWithSignature(address,bool,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Set whether `minter` is approved to mint tokens on behalf of `user`, who has signed a message authorizing them.\"},\"toggle_approve_mint(address)\":{\"notice\":\"Toggle whether `minter` is approved to mint tokens for `user`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":\"IBalancerMinter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x5607c45e92f3c83411e576606a12fe46337013d142b7fb2cf4004b0d5cdbaadd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0df6e9a428d7b6cf7b2c4904141c1bf9bd13db655b5b5680bbe60a1daad55a75\",\"dweb:/ipfs/QmTZxPqfj7PZmX4n77b2i6WEz5Qri1fQy1WHjKa8XQg6b2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0x610350d55cff64fb001b59013903c5e47d16ed629868b7ba64a3f6418ea50bed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d89d3266385eccbd5fe83308aa1d049f58925712d2c5db464fcba87ceefc2a2\",\"dweb:/ipfs/Qmf6xpaWwQxbghyEAXK87bJMXFngX9SxijMtVMo71VZebW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x4371694195d18a899a5b2b5a76f15ef1c2cc5f5c865666d98e0888c40c8a43f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cee60f74e9cfb02a043fa6076a26eafd1c332744037cb8cbc2567086ee6d9d6\",\"dweb:/ipfs/Qmedh1b7WYcJekSQ2jkbhqb1nTgwJwcLw1wjfqoD1zyumo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol":{"IBalancerToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNAPSHOT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","MINTER_ROLE()":"d5391393","SNAPSHOT_ROLE()":"7028e2cd","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getRoleAdmin(bytes32)":"248a9ca3","getRoleMember(bytes32,uint256)":"9010d07c","getRoleMemberCount(bytes32)":"ca15c873","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","mint(address,uint256)":"40c10f19","revokeRole(bytes32,address)":"d547741f","snapshot()":"9711715a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNAPSHOT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"snapshot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":\"IBalancerToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol":{"IBalancerTokenAdmin":{"abi":[{"inputs":[],"name":"INITIAL_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_COEFFICIENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RATE_REDUCTION_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startEpochTimeWrite","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"INITIAL_RATE()":"4dbac733","RATE_DENOMINATOR()":"7efad8e0","RATE_REDUCTION_COEFFICIENT()":"21609bbf","RATE_REDUCTION_TIME()":"b87b5616","activate()":"0f15f4c0","getActionId(bytes4)":"851c1bb3","getBalancerToken()":"c0039699","mint(address,uint256)":"40c10f19","rate()":"2c4e722e","startEpochTimeWrite()":"a228bced"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"INITIAL_RATE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_COEFFICIENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_REDUCTION_TIME\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"startEpochTimeWrite\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getBalancerToken()\":{\"notice\":\"Returns the address of the Balancer Governance Token\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":\"IBalancerTokenAdmin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol":{"IGaugeController":{"abi":[{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"int128","name":"gaugeType","type":"int128"}],"name":"add_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"add_type","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int128","name":"typeId","type":"int128"},{"internalType":"uint256","name":"weight","type":"uint256"}],"name":"change_type_weight","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"checkpoint_gauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"gauge_relative_weight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"gauge","type":"address"}],"name":"gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"n_gauge_types","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"voting_escrow","outputs":[{"internalType":"contract IVotingEscrow","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_gauge(address,int128)":"3a04f900","add_type(string,uint256)":"92d0d232","admin()":"f851a440","change_type_weight(int128,uint256)":"db1ca260","checkpoint_gauge(address)":"615e5237","gauge_exists(address)":"61df1bf9","gauge_relative_weight(address,uint256)":"d3078c94","gauge_types(address)":"3f9095b7","n_gauge_types()":"9fba03a1","token()":"fc0c546a","voting_escrow()":"dfe05031"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"int128\",\"name\":\"gaugeType\",\"type\":\"int128\"}],\"name\":\"add_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"add_type\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int128\",\"name\":\"typeId\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"change_type_weight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"checkpoint_gauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_exists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"gauge_relative_weight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"gauge\",\"type\":\"address\"}],\"name\":\"gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"n_gauge_types\",\"outputs\":[{\"internalType\":\"int128\",\"name\":\"\",\"type\":\"int128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"voting_escrow\",\"outputs\":[{\"internalType\":\"contract IVotingEscrow\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":\"IGaugeController\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0x610350d55cff64fb001b59013903c5e47d16ed629868b7ba64a3f6418ea50bed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d89d3266385eccbd5fe83308aa1d049f58925712d2c5db464fcba87ceefc2a2\",\"dweb:/ipfs/Qmf6xpaWwQxbghyEAXK87bJMXFngX9SxijMtVMo71VZebW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x4371694195d18a899a5b2b5a76f15ef1c2cc5f5c865666d98e0888c40c8a43f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cee60f74e9cfb02a043fa6076a26eafd1c332744037cb8cbc2567086ee6d9d6\",\"dweb:/ipfs/Qmedh1b7WYcJekSQ2jkbhqb1nTgwJwcLw1wjfqoD1zyumo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol":{"ILiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","setRelativeWeightCap(uint256)":"10d3eb04","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":\"ILiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol":{"IRewardTokenDistributor":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit_reward_token(address,uint256)":"93f7aa67","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","set_reward_distributor(address,address)":"058a3a24"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":\"IRewardTokenDistributor\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol":{"IStakingLiquidityGauge":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"new_relative_weight_cap","type":"uint256"}],"name":"RelativeWeightCapChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"add_reward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"claim_rewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"claimable_reward_write","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit_reward_token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"getCappedRelativeWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRelativeWeightCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"integrate_fraction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"is_killed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lp_token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"reward_data","outputs":[{"components":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"period_finish","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"last_update","type":"uint256"},{"internalType":"uint256","name":"integral","type":"uint256"}],"internalType":"struct IRewardTokenDistributor.Reward","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"reward_tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"relativeWeightCap","type":"uint256"}],"name":"setRelativeWeightCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"rewardToken","type":"address"},{"internalType":"address","name":"distributor","type":"address"}],"name":"set_reward_distributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unkillGauge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_checkpoint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"add_reward(address,address)":"e8de0d4d","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claim_rewards(address)":"84e9bd7e","claimable_reward(address,address)":"33fd6f74","claimable_reward_write(address,address)":"59b7e409","deposit(uint256,address)":"6e553f65","deposit_reward_token(address,uint256)":"93f7aa67","getCappedRelativeWeight(uint256)":"14e956f5","getRelativeWeightCap()":"83f5c39b","initialize(address,uint256)":"cd6dc687","integrate_fraction(address)":"09400707","is_killed()":"9c868ac0","killGauge()":"ab8f0945","lp_token()":"82c63066","reward_data(address)":"48e9c65e","reward_tokens(uint256)":"54c49fe9","setRelativeWeightCap(uint256)":"10d3eb04","set_reward_distributor(address,address)":"058a3a24","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unkillGauge()":"d34fb267","user_checkpoint(address)":"4b820093","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"new_relative_weight_cap\",\"type\":\"uint256\"}],\"name\":\"RelativeWeightCapChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"add_reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claim_rewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"claimable_reward_write\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_reward_token\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"getCappedRelativeWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRelativeWeightCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"lpToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"integrate_fraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"is_killed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"killGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lp_token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"reward_data\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"period_finish\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"last_update\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"integral\",\"type\":\"uint256\"}],\"internalType\":\"struct IRewardTokenDistributor.Reward\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"reward_tokens\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relativeWeightCap\",\"type\":\"uint256\"}],\"name\":\"setRelativeWeightCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"rewardToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distributor\",\"type\":\"address\"}],\"name\":\"set_reward_distributor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unkillGauge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_checkpoint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"getCappedRelativeWeight(uint256)\":{\"params\":{\"time\":\"Timestamp in the past or present.\"}},\"integrate_fraction(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"uint256 BAL amount to issue for the address.\"}},\"setRelativeWeightCap(uint256)\":{\"params\":{\"relativeWeightCap\":\"New relative weight cap.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"user_checkpoint(address)\":{\"params\":{\"user\":\"User address.\"},\"returns\":{\"_0\":\"bool Always true.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCappedRelativeWeight(uint256)\":{\"notice\":\"Returns the gauge's relative weight for a given time, capped to its relative weight cap attribute.\"},\"getRelativeWeightCap()\":{\"notice\":\"Gets the relative weight cap for the gauge.\"},\"integrate_fraction(address)\":{\"notice\":\"Returns BAL liquidity emissions calculated during checkpoints for the given user.\"},\"is_killed()\":{\"notice\":\"Returns true if gauge is killed; false otherwise.\"},\"killGauge()\":{\"notice\":\"Kills the gauge so it cannot mint BAL.\"},\"setRelativeWeightCap(uint256)\":{\"notice\":\"Sets a new relative weight cap for the gauge. The value shall be normalized to 1e18, and not greater than MAX_RELATIVE_WEIGHT_CAP.\"},\"unkillGauge()\":{\"notice\":\"Unkills the gauge so it can mint BAL again.\"},\"user_checkpoint(address)\":{\"notice\":\"Record a checkpoint for a given user.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":\"IStakingLiquidityGauge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol":{"IVotingEscrow":{"abi":[{"inputs":[],"name":"admin","outputs":[{"internalType":"contract IAuthorizerAdaptor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apply_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newSmartWalletChecker","type":"address"}],"name":"commit_smart_wallet_checker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"smart_wallet_checker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"user_point_epoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"user_point_history","outputs":[{"components":[{"internalType":"int128","name":"bias","type":"int128"},{"internalType":"int128","name":"slope","type":"int128"},{"internalType":"uint256","name":"ts","type":"uint256"},{"internalType":"uint256","name":"blk","type":"uint256"}],"internalType":"struct IVotingEscrow.Point","name":"","type":"tuple"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"admin()":"f851a440","apply_smart_wallet_checker()":"8e5b490f","checkpoint()":"c2c4c5c1","commit_smart_wallet_checker(address)":"57f901e2","epoch()":"900cf0cf","point_history(uint256)":"d1febfb9","smart_wallet_checker()":"7175d4f7","totalSupply(uint256)":"bd85b039","user_point_epoch(address)":"010ae757","user_point_history(address,uint256)":"28d09d47"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"contract IAuthorizerAdaptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"apply_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"checkpoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newSmartWalletChecker\",\"type\":\"address\"}],\"name\":\"commit_smart_wallet_checker\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"smart_wallet_checker\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"user_point_epoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"user_point_history\",\"outputs\":[{\"components\":[{\"internalType\":\"int128\",\"name\":\"bias\",\"type\":\"int128\"},{\"internalType\":\"int128\",\"name\":\"slope\",\"type\":\"int128\"},{\"internalType\":\"uint256\",\"name\":\"ts\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blk\",\"type\":\"uint256\"}],\"internalType\":\"struct IVotingEscrow.Point\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":\"IVotingEscrow\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x4371694195d18a899a5b2b5a76f15ef1c2cc5f5c865666d98e0888c40c8a43f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cee60f74e9cfb02a043fa6076a26eafd1c332744037cb8cbc2567086ee6d9d6\",\"dweb:/ipfs/Qmedh1b7WYcJekSQ2jkbhqb1nTgwJwcLw1wjfqoD1zyumo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol":{"IButtonWrapper":{"abi":[{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","totalUnderlying()":"c70920bc","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOfUnderlying(address)\":{\"params\":{\"who\":\"The account address.\"},\"returns\":{\"_0\":\"The underlying token balance of the account.\"}},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":\"IButtonWrapper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol":{"IReaperTokenVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPricePerFullShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit(uint256)":"b6b55f25","getPricePerFullShare()":"77c7b8fc","token()":"fc0c546a","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPricePerFullShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_shares\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"returns the number of decimals for this vault token. For reaper single-strat vaults, the decimals are fixed to 18.\"},\"deposit(uint256)\":{\"params\":{\"_amount\":\"The quantity of tokens to deposit.*\"}},\"getPricePerFullShare()\":{\"details\":\"returns the price for a single Vault share (ie rf-scfUSDT). The getPricePerFullShare is always in 1e18\"},\"token()\":{\"details\":\"returns the address of the vault's underlying asset (mainToken)\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deposit(uint256)\":{\"notice\":\"Deposits `_amount` `token`, issuing shares to the caller. If Panic is activated, deposits will not be accepted and this call will fail.\"},\"withdraw(uint256)\":{\"notice\":\"Withdraws the calling account's tokens from this Vault, redeeming amount `_shares` for an appropriate amount of tokens.*\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":\"IReaperTokenVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol":{"IUnbuttonToken":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burnAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"depositFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"underlyingToWrapper","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"withdrawAllTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"}],"name":"withdrawTo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"wrapperToUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","balanceOfUnderlying(address)":"3af9e669","burn(uint256)":"42966c68","burnAll()":"9975038c","burnAllTo(address)":"a4fa9568","burnTo(address,uint256)":"ea785a5e","deposit(uint256)":"b6b55f25","depositFor(address,uint256)":"2f4f21e2","mint(uint256)":"a0712d68","mintFor(address,uint256)":"da1919b3","totalSupply()":"18160ddd","totalUnderlying()":"c70920bc","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","underlying()":"6f307dc3","underlyingToWrapper(uint256)":"ed0287c0","withdraw(uint256)":"2e1a7d4d","withdrawAll()":"853828b6","withdrawAllTo(address)":"ca9add8f","withdrawTo(address,uint256)":"205c2878","wrapperToUnderlying(uint256)":"aab3b7db"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"balanceOfUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"burnAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burnAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"depositFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mintFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"underlying\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"underlyingToWrapper\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawAllTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"}],\"name\":\"withdrawTo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"wrapperToUnderlying\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"balanceOfUnderlying(address)\":{\"params\":{\"who\":\"The account address.\"},\"returns\":{\"_0\":\"The underlying token balance of the account.\"}},\"burn(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAll()\":{\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"burnTo(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to burn.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens withdrawn.\"}},\"deposit(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"depositFor(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to deposit.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens mint.\"}},\"mint(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"mintFor(address,uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens to mint.\",\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of underlying tokens deposited.\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"totalUnderlying()\":{\"returns\":{\"_0\":\"The total underlying tokens held by the wrapper contract.\"}},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"underlying()\":{\"returns\":{\"_0\":\"The address of the underlying token.\"}},\"underlyingToWrapper(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens exchangeable.\"}},\"withdraw(uint256)\":{\"params\":{\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAll()\":{\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawAllTo(address)\":{\"params\":{\"to\":\"The beneficiary account.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"withdrawTo(address,uint256)\":{\"params\":{\"to\":\"The beneficiary account.\",\"uAmount\":\"The amount of underlying tokens to withdraw.\"},\"returns\":{\"_0\":\"The amount of wrapper tokens burnt.\"}},\"wrapperToUnderlying(uint256)\":{\"params\":{\"amount\":\"The amount of wrapper tokens.\"},\"returns\":{\"_0\":\"The amount of underlying tokens exchangeable.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"burnTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens to the specified beneficiary.\"},\"deposit(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"depositFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"mint(uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens.\"},\"mintFor(address,uint256)\":{\"notice\":\"Transfers underlying tokens from {msg.sender} to the contract and mints wrapper tokens to the specified beneficiary.\"},\"withdraw(uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAll()\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawAllTo(address)\":{\"notice\":\"Burns all wrapper tokens from {msg.sender} and transfers the underlying tokens back.\"},\"withdrawTo(address,uint256)\":{\"notice\":\"Burns wrapper tokens from {msg.sender} and transfers the underlying tokens back to the specified beneficiary.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":\"IUnbuttonToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol":{"StablePoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200872c66d578da673aa20933ea3f401122a3878c34aa7e7d5968b1865138b41bb64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD PUSH19 0xC66D578DA673AA20933EA3F401122A3878C34A 0xA7 0xE7 0xD5 SWAP7 DUP12 XOR PUSH6 0x138B41BB6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"721:1600:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200872c66d578da673aa20933ea3f401122a3878c34aa7e7d5968b1865138b41bb64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD PUSH19 0xC66D578DA673AA20933EA3F401122A3878C34A 0xA7 0xE7 0xD5 SWAP7 DUP12 XOR PUSH6 0x138B41BB6473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"721:1600:12:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":\"StablePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xbbb6cfea06c1f6b74296b3235598fccd5b29f77089de3021a34541e438b9a1cf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4b321da063f2b8d5b15d94a14cdf4571568df0e764b1ffcf02081215206beba\",\"dweb:/ipfs/QmQa313rbXMPjbdELyKpdhbD8wiV2f2iPuZouafZqVon4d\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol":{"BasePoolUserData":{"abi":[{"inputs":[],"name":"RECOVERY_MODE_EXIT_KIND","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608f610024600b82828239805160001a607314601757fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806309564cb1146038575b600080fd5b603e6054565b6040805160ff9092168252519081900360200190f35b60ff8156fea2646970667358221220378fd437b6a4bf4c57f3a732a65742cb1c7ed7247fc625b1d6cfd5911ee6c06064736f6c63430007010033","opcodes":"PUSH1 0x8F PUSH2 0x24 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x17 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9564CB1 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0xFF DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY DUP16 0xD4 CALLDATACOPY 0xB6 LOG4 0xBF 0x4C JUMPI RETURN 0xA7 ORIGIN 0xA6 JUMPI TIMESTAMP 0xCB SHR PUSH31 0xD7247FC625B1D6CFD5911EE6C06064736F6C63430007010033000000000000 ","sourceMap":"721:811:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806309564cb1146038575b600080fd5b603e6054565b6040805160ff9092168252519081900360200190f35b60ff8156fea2646970667358221220378fd437b6a4bf4c57f3a732a65742cb1c7ed7247fc625b1d6cfd5911ee6c06064736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9564CB1 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3E PUSH1 0x54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0xFF DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATACOPY DUP16 0xD4 CALLDATACOPY 0xB6 LOG4 0xBF 0x4C JUMPI RETURN 0xA7 ORIGIN 0xA6 JUMPI TIMESTAMP 0xCB SHR PUSH31 0xD7247FC625B1D6CFD5911EE6C06064736F6C63430007010033000000000000 ","sourceMap":"721:811:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;963:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1011:3;963:51;:::o"},"methodIdentifiers":{"RECOVERY_MODE_EXIT_KIND()":"09564cb1"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"RECOVERY_MODE_EXIT_KIND\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":\"BasePoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol":{"IBasePoolFactory":{"abi":[{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Disable the factory, preventing the creation of more pools. Already existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"isDisabled()\":{\"details\":\"Check whether the derived factory has been disabled.\"},\"isPoolFromFactory(address)\":{\"details\":\"Returns true if `pool` was created by this factory.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":\"IBasePoolFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol":{"IRateProvider":{"abi":[{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRate()":"679aefce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying token. The meaning of this rate depends on the context.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":\"IRateProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol":{"IRateProviderPool":{"abi":[{"inputs":[],"name":"getRateProviders","outputs":[{"internalType":"contract IRateProvider[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getRateProviders()":"238a2d59"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getRateProviders\",\"outputs\":[{\"internalType\":\"contract IRateProvider[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for Pools that assign rate providers to their tokens.\",\"kind\":\"dev\",\"methods\":{\"getRateProviders()\":{\"details\":\"Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider for that token.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":\"IRateProviderPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol":{"IRecoveryMode":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RecoveryModeStateChanged","type":"event"},{"inputs":[],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disableRecoveryMode()":"b7b814fc","enableRecoveryMode()":"54a844ba","inRecoveryMode()":"b35056b8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RecoveryModeStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the RecoveryMode module.\",\"events\":{\"RecoveryModeStateChanged(bool)\":{\"details\":\"Emitted when the Recovery Mode status changes.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRecoveryMode()\":{\"notice\":\"Disables Recovery Mode in the Pool, restoring protocol fee collection and disallowing proportional exits.\"},\"enableRecoveryMode()\":{\"notice\":\"Enables Recovery Mode in the Pool, disabling protocol fee collection and allowing for safe proportional exits with low computational complexity and no dependencies.\"},\"inRecoveryMode()\":{\"notice\":\"Returns true if the Pool is in Recovery Mode.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":\"IRecoveryMode\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol":{"WeightedPoolUserData":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205711e46b66ce55cce8a68f67875aaec13ddf7db99d3188204412dd401e441c8064736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI GT 0xE4 PUSH12 0x66CE55CCE8A68F67875AAEC1 RETURNDATASIZE 0xDF PUSH30 0xB99D3188204412DD401E441C8064736F6C63430007010033000000000000 ","sourceMap":"774:2136:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205711e46b66ce55cce8a68f67875aaec13ddf7db99d3188204412dd401e441c8064736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI GT 0xE4 PUSH12 0x66CE55CCE8A68F67875AAEC1 RETURNDATASIZE 0xDF PUSH30 0xB99D3188204412DD401E441C8064736F6C63430007010033000000000000 ","sourceMap":"774:2136:18:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":\"WeightedPoolUserData\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol":{"Errors":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f48dc6a2250931deab95977d42a8c0a4caf54b92989b059cb8796786ba9545a64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x48DC6A2250931DEAB95977D42A8C0A4CAF54B92989B059CB8796786BA9545A64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"5072:9965:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207f48dc6a2250931deab95977d42a8c0a4caf54b92989b059cb8796786ba9545a64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0x48DC6A2250931DEAB95977D42A8C0A4CAF54B92989B059CB8796786BA9545A64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"5072:9965:19:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":\"Errors\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol":{"IAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":\"IAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol":{"ISignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the SignatureValidator helper, used to support meta-transactions.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":\"ISignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol":{"ITemporarilyPausable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPausedState()":"1c0de051"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the TemporarilyPausable helper.\",\"events\":{\"PausedStateChanged(bool)\":{\"details\":\"Emitted every time the pause state changes by `_setPaused`.\"}},\"kind\":\"dev\",\"methods\":{\"getPausedState()\":{\"details\":\"Returns the current paused state.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":\"ITemporarilyPausable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol":{"IERC4626":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","asset()":"38d52e0f","balanceOf(address)":"70a08231","convertToAssets(uint256)":"07a2d13a","convertToShares(uint256)":"c6e6f592","deposit(uint256,address)":"6e553f65","redeem(uint256,address,address)":"ba087652","totalAssets()":"01e1d114","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Deposit(address,address,uint256,uint256)\":{\"details\":\"`caller` has exchanged `assets` for `shares`, and transferred those `shares` to `owner`.\"},\"Withdraw(address,address,address,uint256,uint256)\":{\"details\":\"`caller` has exchanged `shares`, owned by `owner`, for `assets`, and transferred those `assets` to `receiver`.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"asset()\":{\"details\":\"The address of the underlying token that the Vault uses for accounting, depositing, and withdrawing.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"convertToAssets(uint256)\":{\"details\":\"The amount of `assets` that the Vault would exchange for the amount of `shares` provided, in an ideal scenario where all the conditions are met.\"},\"convertToShares(uint256)\":{\"details\":\"The amount of `shares` that the Vault would exchange for the amount of `assets` provided, in an ideal scenario where all the conditions are met.\"},\"deposit(uint256,address)\":{\"details\":\"Mints `shares` Vault shares to `receiver` by depositing exactly `amount` of underlying tokens.\"},\"redeem(uint256,address,address)\":{\"details\":\"Burns exactly `shares` from `owner` and sends `assets` of underlying tokens to `receiver`.\"},\"totalAssets()\":{\"details\":\"Total amount of the underlying asset that is \\u201cmanaged\\u201d by Vault.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":\"IERC4626\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol":{"IWETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","deposit()":"d0e30db0","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for WETH9. See https://github.com/gnosis/canonical-weth/blob/0dd1ea3e295eef916d0c6223ec63141137d22d67/contracts/WETH9.sol\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for `permit`, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over `owner`'s tokens, given `owner`'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol":{"IERC20PermitDAI":{"abi":[{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"8fcbaf0c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"params\":{\"allowed\":\"Whether the spender is allowed or disallowed from spending\",\"expiry\":\"The time at which this expires (unix time)\",\"holder\":\"Token owner's address (Authorizer)\",\"nonce\":\"The permit nonce\",\"r\":\"r of the signature\",\"s\":\"s of the signature\",\"spender\":\"Spender's address\",\"v\":\"v of the signature\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)\":{\"notice\":\"update allowance with a signed permit\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":\"IERC20PermitDAI\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol":{"IBALTokenHolder":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getName()":"17d7de7c","sweepTokens(address,address,uint256)":"8b6ca32c","withdrawFunds(address,uint256)":"c1075329"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweepTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":\"IBALTokenHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol":{"IBALTokenHolderFactory":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"create","outputs":[{"internalType":"contract IBALTokenHolder","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isHolderFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"create(string)":"b6a46b3b","getBalancerToken()":"c0039699","getVault()":"8d928af8","isHolderFromFactory(address)":"36390717"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IBALTokenHolder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"isHolderFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":\"IBALTokenHolderFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":{\"keccak256\":\"0x3ea8fab66b0ca4ee8aeb4c84bbca9d365f34ea929f249244d3f9080c8dc9dc1b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://659d93d04dc7b5ba34f7da7bed2da9644ae9e1c1d7aec740bbf097eceb741c23\",\"dweb:/ipfs/QmcHaoRzRZGJeT5UyxqpXNPFis23kMhS4Nj39RBuAveRG5\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol":{"IBalancerQueries":{"abi":[{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"querySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))":"c7b2c52c","queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))":"9ebbf05d","querySwap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool))":"e969f6b3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"querySwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides a way to perform queries on swaps, joins and exits, simulating these operations and returning the exact result they would have if called on the Vault given the current state. Note that the results will be affected by other transactions interacting with the Pools involved. All query functions can be called both on-chain and off-chain. If calling them from a contract, note that all query functions are not `view`. Despite this, these functions produce no net state change, and for all intents and purposes can be thought of as if they were indeed `view`. However, calling them via STATICCALL will fail. If calling them from an off-chain client, make sure to use eth_call: most clients default to eth_sendTransaction for non-view functions. In all cases, the `fromInternalBalance` and `toInternalBalance` fields are entirely ignored: we just use the same structs for simplicity.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":\"IBalancerQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":{\"keccak256\":\"0x745fc8ab86d691812bf311fe0f94acf09d31b18d6b48784dcdfa96096100b1c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://870d659f080fe5c87d0f18df21cf4777ebf93de9214aeae5ec6034ea796bd3c5\",\"dweb:/ipfs/QmU3HeamVBq7WoQvyWDeWbQYjueBU96Qrn69LQmZyCRwLV\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol":{"IBalancerRelayer":{"abi":[{"inputs":[],"name":"getLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getLibrary()":"7678922e","getVault()":"8d928af8","multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IBalancerRelayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows safe multicall execution of a relayer's functions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":\"IBalancerRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol":{"IProtocolFeePercentagesProvider":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ProtocolFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"maximumPercentage","type":"uint256"}],"name":"ProtocolFeeTypeRegistered","type":"event"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeMaximumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"isValidFeeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"isValidFeeTypePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maximumValue","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"}],"name":"registerFeeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFeeTypePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getFeeTypeMaximumPercentage(uint256)":"5e2cae4c","getFeeTypeName(uint256)":"b661eda1","getFeeTypePercentage(uint256)":"1a7c3263","isValidFeeType(uint256)":"868897a0","isValidFeeTypePercentage(uint256,uint256)":"74735e0b","registerFeeType(uint256,string,uint256,uint256)":"7268d6ce","setFeeTypePercentage(uint256,uint256)":"4d44f0e9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeeTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeMaximumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"isValidFeeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"isValidFeeTypePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maximumValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialValue\",\"type\":\"uint256\"}],\"name\":\"registerFeeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setFeeTypePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Source of truth for all Protocol Fee percentages, that is, how much the protocol charges certain actions. Some of these values may also be retrievable from other places (such as the swap fee percentage), but this is the preferred source nonetheless.\",\"kind\":\"dev\",\"methods\":{\"getFeeTypeMaximumPercentage(uint256)\":{\"details\":\"Returns `feeType`'s maximum value.\"},\"getFeeTypeName(uint256)\":{\"details\":\"Returns `feeType`'s name.\"},\"getFeeTypePercentage(uint256)\":{\"details\":\"Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these - whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\"},\"isValidFeeType(uint256)\":{\"details\":\"Returns true if `feeType` has been registered and can be queried.\"},\"isValidFeeTypePercentage(uint256,uint256)\":{\"details\":\"Returns true if `value` is a valid percentage value for `feeType`.\"},\"registerFeeType(uint256,string,uint256,uint256)\":{\"details\":\"Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`, as well as configurable via `setFeeTypePercentage`. `feeType` can be any arbitrary value (that is not in use). It is not possible to de-register fee types, nor change their name or maximum value.\"},\"setFeeTypePercentage(uint256,uint256)\":{\"details\":\"Sets the percentage value for `feeType` to `newValue`. IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged` event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and `setFlashLoanFeePercentage`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":\"IProtocolFeePercentagesProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]}},\"version\":1}"},"ProtocolFeeType":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b1cc25bfd33fa74aa318be43f97da833c803d033dcad7d1b89f5f194a92984264736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SHR 0xC2 JUMPDEST REVERT CALLER STATICCALL PUSH21 0xAA318BE43F97DA833C803D033DCAD7D1B89F5F194A SWAP3 SWAP9 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"4000:551:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204b1cc25bfd33fa74aa318be43f97da833c803d033dcad7d1b89f5f194a92984264736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4B SHR 0xC2 JUMPDEST REVERT CALLER STATICCALL PUSH21 0xAA318BE43F97DA833C803D033DCAD7D1B89F5F194A SWAP3 SWAP9 TIMESTAMP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"4000:551:32:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":\"ProtocolFeeType\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol":{"IProtocolFeeSplitter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"DefaultRevenueSharingFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolEarned","type":"uint256"},{"indexed":true,"internalType":"address","name":"treasury","type":"address"},{"indexed":false,"internalType":"uint256","name":"treasuryEarned","type":"uint256"}],"name":"FeesCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"PoolBeneficiaryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"PoolRevenueShareChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryChanged","type":"event"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"collectFees","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getAmounts","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultRevenueSharingFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolSettings","outputs":[{"internalType":"uint256","name":"revenueSharePercentageOverride","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesWithdrawer","outputs":[{"internalType":"contract IProtocolFeesWithdrawer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feePercentage","type":"uint256"}],"name":"setDefaultRevenueSharingFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"setPoolBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setRevenueSharingFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"collectFees(bytes32)":"817db73b","getAmounts(bytes32)":"9d8669d3","getDefaultRevenueSharingFeePercentage()":"c2f7070b","getPoolSettings(bytes32)":"0dbbe67f","getProtocolFeesWithdrawer()":"4f4f4bc7","getTreasury()":"3b19e84a","getVault()":"8d928af8","setDefaultRevenueSharingFeePercentage(uint256)":"e65fed80","setPoolBeneficiary(bytes32,address)":"7ab74be4","setRevenueSharingFeePercentage(bytes32,uint256)":"8b25b623","setTreasury(address)":"f0f44260"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"DefaultRevenueSharingFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolEarned\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"treasuryEarned\",\"type\":\"uint256\"}],\"name\":\"FeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"PoolBeneficiaryChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolRevenueShareChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"TreasuryChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"collectFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRevenueSharingFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolSettings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"revenueSharePercentageOverride\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesWithdrawer\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesWithdrawer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePercentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRevenueSharingFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"setPoolBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setRevenueSharingFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Daoism Systems\",\"details\":\"If you are the pool owner, make sure to update pool's beneficiary address otherwise all BPT tokens go to Balancer's DAO treasury\",\"kind\":\"dev\",\"methods\":{\"collectFees(bytes32)\":{\"params\":{\"poolId\":\"- the poolId of the pool for which we collect fees\"},\"returns\":{\"beneficiaryAmount\":\"The amount of tokens sent to pool's beneficiary\",\"treasuryAmount\":\"The amount of tokens sent to Balancer's treasury\"}},\"getAmounts(bytes32)\":{\"params\":{\"poolId\":\"- the poolId of the pool for which we collect fees\"},\"returns\":{\"beneficiaryAmount\":\"The amount of tokens sent to pool's beneficiary\",\"treasuryAmount\":\"The amount of tokens sent to Balancer's treasury\"}},\"setDefaultRevenueSharingFeePercentage(uint256)\":{\"params\":{\"feePercentage\":\"- new default revenue sharing fee percentage\"}},\"setPoolBeneficiary(bytes32,address)\":{\"params\":{\"newBeneficiary\":\"- beneficiary address\",\"poolId\":\"- the poolId of the pool where we want to change fee beneficiary\"}},\"setRevenueSharingFeePercentage(bytes32,uint256)\":{\"params\":{\"newSwapFeePercentage\":\"- new swap fee percentage\",\"poolId\":\"- the poolId of the pool where we want to change fee percentage\"}},\"setTreasury(address)\":{\"params\":{\"newTreasury\":\"- beneficiary address\"}}},\"title\":\"ProtocolFeeSplitter\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectFees(bytes32)\":{\"notice\":\"Collects and distributes fees for a `poolId`\"},\"getAmounts(bytes32)\":{\"notice\":\"Returns amounts that can be colected\"},\"getDefaultRevenueSharingFeePercentage()\":{\"notice\":\"Returns default revenue sharing fee percentage\"},\"getPoolSettings(bytes32)\":{\"notice\":\"Returns a Pool's settings.\"},\"getProtocolFeesWithdrawer()\":{\"notice\":\"Returns the Protocol Fees Withdrawer address.\"},\"getTreasury()\":{\"notice\":\"Returns Balancer's treasury address.\"},\"getVault()\":{\"notice\":\"Returns Balancer's vault address.\"},\"setDefaultRevenueSharingFeePercentage(uint256)\":{\"notice\":\"Allows a authorized user to change the default revenue sharing fee percentage\"},\"setPoolBeneficiary(bytes32,address)\":{\"notice\":\"Allows a pool owner to change the pool beneficiary settings\"},\"setRevenueSharingFeePercentage(bytes32,uint256)\":{\"notice\":\"Allows a authorized user to change revenueShare for a `poolId`\"},\"setTreasury(address)\":{\"notice\":\"Allows a authorized user to change the treasury address\"}},\"notice\":\"Distributes collected protocol fees between Balancer's treasury and a pool owner\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":\"IProtocolFeeSplitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":{\"keccak256\":\"0xe7d001454031b746cff5a8afacadf7ea5ca1458942cb9e928ff7233fe78b0d3e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ce39b6781a4ad5ecf260eebe3dace4c9d28032d28fa7600a215b3376cab2d1c\",\"dweb:/ipfs/QmcYzvPJhaRFnWEhFhB9Jp1SzfFmLzY97A2RkdS79uuENz\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol":{"IProtocolFeesWithdrawer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenDenylisted","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"allowlistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"denylistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDenylistedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDenylistedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isWithdrawableToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"isWithdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowlistToken(address)":"de0b27c9","denylistToken(address)":"194d810f","getDenylistedToken(uint256)":"fd3a0cdd","getDenylistedTokensLength()":"8dd26fc6","getProtocolFeesCollector()":"d2946c2b","isWithdrawableToken(address)":"cdf0e934","isWithdrawableTokens(address[])":"a21dfaee","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAllowlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDenylisted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowlistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"denylistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDenylistedToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDenylistedTokensLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWithdrawableToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"isWithdrawableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"isWithdrawableTokens(address[])\":{\"details\":\"Returns false if any token is denylisted.\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"details\":\"Reverts if attempting to withdraw a denylisted token.\",\"params\":{\"amounts\":\"- an array of the amounts of each token to withdraw.\",\"recipient\":\"- the address to which to send the withdrawn tokens.\",\"tokens\":\"- an array of token addresses to withdraw.\"}}},\"title\":\"Protocol Fees Withdrawer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowlistToken(address)\":{\"notice\":\"Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\"},\"denylistToken(address)\":{\"notice\":\"Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\"},\"getDenylistedToken(uint256)\":{\"notice\":\"Returns the denylisted token at the given `index`.\"},\"getDenylistedTokensLength()\":{\"notice\":\"Returns the number of denylisted tokens.\"},\"getProtocolFeesCollector()\":{\"notice\":\"Returns the address of the Protocol Fee Collector.\"},\"isWithdrawableToken(address)\":{\"notice\":\"Returns whether the provided token may be withdrawn from the Protocol Fee Collector\"},\"isWithdrawableTokens(address[])\":{\"notice\":\"Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"notice\":\"Withdraws fees from the Protocol Fee Collector.\"}},\"notice\":\"Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked. This is useful for the case in where tokens that shouldn't be distributed are unexpectedly paid into the Protocol Fees Collector.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":\"IProtocolFeesWithdrawer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol":{"IStaticATokenLM":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ATOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"INCENTIVES_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"LENDING_POOL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"onBehalfOf","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewardsOnBehalf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"forceUpdate","type":"bool"}],"name":"claimRewardsToSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"collectAndUpdateRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dynamicBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dynamicToStaticAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAccRewardsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLifetimeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLifetimeRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"depositor","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"sigParams","type":"tuple"}],"name":"metaDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"staticAmount","type":"uint256"},{"internalType":"uint256","name":"dynamicAmount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"sigParams","type":"tuple"}],"name":"metaWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staticToDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdrawDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"ASSET()":"4800d97f","ATOKEN()":"51c0e061","INCENTIVES_CONTROLLER()":"10d0ab22","LENDING_POOL()":"b4dcfc77","REWARD_TOKEN()":"99248ea7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","claimRewards(address,bool)":"491c011a","claimRewardsOnBehalf(address,address,bool)":"dd05aa12","claimRewardsToSelf(bool)":"45c1ace7","collectAndUpdateRewards()":"3eb2eba6","deposit(address,uint256,uint16,bool)":"2f2cab87","dynamicBalanceOf(address)":"44b68c3f","dynamicToStaticAmount(uint256)":"36a5a6d6","getAccRewardsPerToken()":"a135a55e","getClaimableRewards(address)":"308e401e","getDomainSeparator()":"ed24911d","getLastRewardBlock()":"bf62bee6","getLifetimeRewards()":"b3a59022","getLifetimeRewardsClaimed()":"31a5cfa4","getTotalClaimableRewards()":"7f372cff","getUnclaimedRewards(address)":"69a69e29","metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))":"c485852b","metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))":"60266557","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","rate()":"2c4e722e","staticToDynamicAmount(uint256)":"f57d0b40","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256,bool)":"ead5d359","withdrawDynamicAmount(address,uint256,bool)":"288587ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVES_CONTROLLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LENDING_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewardsOnBehalf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"forceUpdate\",\"type\":\"bool\"}],\"name\":\"claimRewardsToSelf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectAndUpdateRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"dynamicBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dynamicToStaticAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccRewardsPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRewardBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewardsClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getUnclaimedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"sigParams\",\"type\":\"tuple\"}],\"name\":\"metaDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"staticAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dynamicAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"sigParams\",\"type\":\"tuple\"}],\"name\":\"metaWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"staticToDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdrawDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"claimRewards(address,bool)\":{\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\",\"receiver\":\"The address to receive the rewards\"}},\"claimRewardsOnBehalf(address,address,bool)\":{\"details\":\"Only callable by if sender is onBehalfOf or sender is approved claimer\",\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\",\"onBehalfOf\":\"The address to claim on behalf of\",\"receiver\":\"The address to receive the rewards\"}},\"claimRewardsToSelf(bool)\":{\"params\":{\"forceUpdate\":\"Flag to retrieve latest rewards from `INCENTIVES_CONTROLLER`\"}},\"deposit(address,uint256,uint16,bool)\":{\"params\":{\"amount\":\"The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"The address that will receive the static aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance*\"}},\"dynamicBalanceOf(address)\":{\"params\":{\"account\":\"The address of the user\"},\"returns\":{\"_0\":\"uint256 The aToken balance*\"}},\"dynamicToStaticAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The static (scaled) amount*\"}},\"getClaimableRewards(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The claimable amount of rewards in WAD\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"bytes32 The domain separator*\"}},\"getTotalClaimableRewards()\":{\"returns\":{\"_0\":\"The current balance + pending rewards from the `_incentivesController`\"}},\"getUnclaimedRewards(address)\":{\"params\":{\"user\":\"The address of the user\"},\"returns\":{\"_0\":\"The unclaimed amount of rewards in WAD\"}},\"metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"depositor\":\"Address from which the funds to deposit are going to be pulled\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"Address that will receive the staticATokens, in the average case, same as the `depositor`\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\",\"sigParams\":\"Signature params: v,r,s\",\"value\":\"The amount to deposit\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance\"}},\"metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"dynamicAmount\":\"The amount of underlying/aToken to withdraw. If > 0, `staticAmount` needs to be 0\",\"owner\":\"Address owning the staticATokens\",\"recipient\":\"Address that will receive the underlying withdrawn from Aave\",\"sigParams\":\"Signature params: v,r,s\",\"staticAmount\":\"The amount of staticAToken to withdraw. If > 0, `dynamicAmount` needs to be 0\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The deadline timestamp, type(uint256).max for max deadline\",\"owner\":\"The owner of the funds\",\"r\":\"Signature param\",\"s\":\"Signature param\",\"spender\":\"The spender\",\"v\":\"Signature param\",\"value\":\"The amount\"}},\"rate()\":{\"returns\":{\"_0\":\"The liquidity index*\"}},\"staticToDynamicAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The dynamic amount*\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"withdraw(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in static balance of StaticAToken\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}},\"withdrawDynamicAmount(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in dynamic balance of aToken/underlying asset\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimRewards(address,bool)\":{\"notice\":\"Claim rewards and send them to a receiver\"},\"claimRewardsOnBehalf(address,address,bool)\":{\"notice\":\"Claim rewards on behalf of a user and send them to a receiver\"},\"claimRewardsToSelf(bool)\":{\"notice\":\"Claim rewards\"},\"collectAndUpdateRewards()\":{\"notice\":\"Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\"},\"deposit(address,uint256,uint16,bool)\":{\"notice\":\"Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\"},\"dynamicBalanceOf(address)\":{\"notice\":\"Utility method to get the current aToken balance of an user, from his staticAToken balance\"},\"dynamicToStaticAmount(uint256)\":{\"notice\":\"Converts an aToken or underlying amount to the what it is denominated on the aToken as scaled balance, function of the principal and the liquidity index\"},\"getClaimableRewards(address)\":{\"notice\":\"Get the total claimable rewards for a user in WAD\"},\"getDomainSeparator()\":{\"notice\":\"Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\"},\"getTotalClaimableRewards()\":{\"notice\":\"Get the total claimable rewards of the contract.\"},\"getUnclaimedRewards(address)\":{\"notice\":\"The unclaimed rewards for a user in WAD\"},\"metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))\":{\"notice\":\"Allows to deposit on Aave via meta-transaction https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))\":{\"notice\":\"Allows to withdraw from Aave via meta-transaction https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Implements the permit function as for https://github.com/ethereum/EIPs/blob/8a34d644aacf0f9f8f00815307fd7dd5da07655f/EIPS/eip-2612.md\"},\"rate()\":{\"notice\":\"Returns the Aave liquidity index of the underlying aToken, denominated rate here as it can be considered as an ever-increasing exchange rate\"},\"staticToDynamicAmount(uint256)\":{\"notice\":\"Converts a static amount (scaled balance on aToken) to the aToken/underlying value, using the current liquidity index on Aave\"},\"withdraw(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"},\"withdrawDynamicAmount(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":\"IStaticATokenLM\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol":{"IstETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referral","type":"address"}],"name":"submit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","submit(address)":"a1903eab","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"referral\",\"type\":\"address\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":\"IstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol":{"IwstETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"getWstETHByStETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IstETH","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stEthPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerStEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getStETHByWstETH(uint256)":"bb2952fc","getWstETHByStETH(uint256)":"b0e38900","stETH()":"c1fe3e48","stEthPerToken()":"035faf82","tokensPerStEth()":"9576a0c8","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWstETHByStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stETH\",\"outputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stEthPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensPerStEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"It's an ERC20 token that represents the account's share of the total supply of stETH tokens. WstETH token's balance only changes on transfers, unlike StETH that is also changed when oracles report staking rewards and penalties. It's a \\\"power user\\\" token for DeFi protocols which don't support rebasable tokens. The contract is also a trustless wrapper that accepts stETH tokens and mints wstETH in return. Then the user unwraps, the contract burns user's wstETH and sends user locked stETH in return. The contract provides the staking shortcut: user can send ETH with regular transfer and get wstETH in return. The contract will send ETH to Lido submit method, staking it and wrapping the received stETH.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"getStETHByWstETH(uint256)\":{\"params\":{\"_wstETHAmount\":\"amount of wstETH\"},\"returns\":{\"_0\":\"Amount of stETH for a given wstETH amount\"}},\"getWstETHByStETH(uint256)\":{\"params\":{\"_stETHAmount\":\"amount of stETH\"},\"returns\":{\"_0\":\"Amount of wstETH for a given stETH amount\"}},\"stEthPerToken()\":{\"returns\":{\"_0\":\"Amount of stETH for 1 wstETH\"}},\"tokensPerStEth()\":{\"returns\":{\"_0\":\"Amount of wstETH for a 1 stETH\"}},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"unwrap(uint256)\":{\"details\":\"Requirements: - `_wstETHAmount` must be non-zero - msg.sender must have at least `_wstETHAmount` wstETH.\",\"params\":{\"_wstETHAmount\":\"amount of wstETH to uwrap in exchange for stETH\"},\"returns\":{\"_0\":\"Amount of stETH user receives after unwrap\"}},\"wrap(uint256)\":{\"details\":\"Requirements: - `_stETHAmount` must be non-zero - msg.sender must approve at least `_stETHAmount` stETH to this contract. - msg.sender must have at least `_stETHAmount` of stETH. User should first approve _stETHAmount to the WstETH contract\",\"params\":{\"_stETHAmount\":\"amount of stETH to wrap in exchange for wstETH\"},\"returns\":{\"_0\":\"Amount of wstETH user receives after wrap\"}}},\"title\":\"StETH token wrapper with static balances.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStETHByWstETH(uint256)\":{\"notice\":\"Get amount of stETH for a given amount of wstETH\"},\"getWstETHByStETH(uint256)\":{\"notice\":\"Get amount of wstETH for a given amount of stETH\"},\"stEthPerToken()\":{\"notice\":\"Get amount of wstETH for a one stETH\"},\"tokensPerStEth()\":{\"notice\":\"Get amount of stETH for a one wstETH\"},\"unwrap(uint256)\":{\"notice\":\"Exchanges wstETH to stETH\"},\"wrap(uint256)\":{\"notice\":\"Exchanges stETH to wstETH\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":\"IwstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol":{"IAsset":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"This is an empty interface used to represent either ERC20-conforming token contracts or ETH (using the zero address sentinel value). We're just relying on the fact that `interface` can be used to declare new address-like types. This concept is unrelated to a Pool's Asset Managers.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":\"IAsset\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol":{"IAuthorizer":{"abi":[{"inputs":[{"internalType":"bytes32","name":"actionId","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"where","type":"address"}],"name":"canPerform","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"canPerform(bytes32,address,address)":"9be2a884"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"actionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"where\",\"type\":\"address\"}],\"name\":\"canPerform\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"canPerform(bytes32,address,address)\":{\"details\":\"Returns true if `account` can perform the action described by `actionId` in the contract `where`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":\"IAuthorizer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol":{"IBasePool":{"abi":[{"inputs":[],"name":"getPoolId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getScalingFactors","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onExitPool","outputs":[{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"},{"internalType":"uint256[]","name":"dueProtocolFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"onJoinPool","outputs":[{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"},{"internalType":"uint256[]","name":"dueProtocolFeeAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"uint256","name":"protocolSwapFeePercentage","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getPoolId()":"38fff2d0","getScalingFactors()":"1dd746ea","getSwapFeePercentage()":"55c67628","onExitPool(bytes32,address,address,uint256[],uint256,uint256,bytes)":"74f3b009","onJoinPool(bytes32,address,address,uint256[],uint256,uint256,bytes)":"d5c096c4","queryExit(bytes32,address,address,uint256[],uint256,uint256,bytes)":"6028bfd4","queryJoin(bytes32,address,address,uint256[],uint256,uint256,bytes)":"87ec6817"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getPoolId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getScalingFactors\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onExitPool\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"dueProtocolFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"onJoinPool\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"dueProtocolFeeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"protocolSwapFeePercentage\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for adding and removing liquidity that all Pool contracts should implement. Note that this is not the complete Pool contract interface, as it is missing the swap hooks. Pool contracts should also inherit from either IGeneralPool or IMinimalSwapInfoPool\",\"kind\":\"dev\",\"methods\":{\"getPoolId()\":{\"details\":\"Returns this Pool's ID, used when interacting with the Vault (to e.g. join the Pool or swap with it).\"},\"getScalingFactors()\":{\"details\":\"Returns the scaling factors of each of the Pool's tokens. This is an implementation detail that is typically not relevant for outside parties, but which might be useful for some types of Pools.\"},\"getSwapFeePercentage()\":{\"details\":\"Returns the current swap fee percentage as a 18 decimal fixed point number, so e.g. 1e17 corresponds to a 10% swap fee.\"},\"onExitPool(bytes32,address,address,uint256[],uint256,uint256,bytes)\":{\"details\":\"Called by the Vault when a user calls `IVault.exitPool` to remove liquidity from this Pool. Returns how many tokens the Vault should deduct from the Pool's balances, as well as the amount of protocol fees the Pool owes to the Vault. The Vault will then take tokens from the Pool's balances and send them to `recipient`, as well as collect the reported amount in protocol fees, which the Pool should calculate based on `protocolSwapFeePercentage`. Protocol fees are charged on exit events to guarantee that users exiting the Pool have paid their share. `sender` is the account performing the exit (typically the pool shareholder), and `recipient` is the account to which the Vault will send the proceeds. `balances` contains the total token balances for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return. `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total balance. `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of exit (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.) Contracts implementing this function should check that the caller is indeed the Vault before performing any state-changing operations, such as burning pool shares.\"},\"onJoinPool(bytes32,address,address,uint256[],uint256,uint256,bytes)\":{\"details\":\"Called by the Vault when a user calls `IVault.joinPool` to add liquidity to this Pool. Returns how many of each registered token the user should provide, as well as the amount of protocol fees the Pool owes to the Vault. The Vault will then take tokens from `sender` and add them to the Pool's balances, as well as collect the reported amount in protocol fees, which the pool should calculate based on `protocolSwapFeePercentage`. Protocol fees are reported and charged on join events so that the Pool is free of debt whenever new users join. `sender` is the account performing the join (from which tokens will be withdrawn), and `recipient` is the account designated to receive any benefits (typically pool shares). `balances` contains the total balances for each token the Pool registered in the Vault, in the same order that `IVault.getPoolTokens` would return. `lastChangeBlock` is the last block in which *any* of the Pool's registered tokens last changed its total balance. `userData` contains any pool-specific instructions needed to perform the calculations, such as the type of join (e.g., proportional given an amount of pool shares, single-asset, multi-asset, etc.) Contracts implementing this function should check that the caller is indeed the Vault before performing any state-changing operations, such as minting pool shares.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":\"IBasePool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x4673e08f6b8e76ffa89155d704a0682a6a98e3c60ca5f28e0c4b964f26b65dbe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eef030243d480fb6e84943d88c19cfc2b7e17bee800ece7b7be840061f3cc4bb\",\"dweb:/ipfs/QmYCLn4pspMRBdKAhtjc7EjnHQURHrzp844M5722LEbL8D\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0xbe4815478a942261e6e2416632342b0e55ff2b0f75c2551ffd79ad9b2326be38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccc137d00935cace955e552f238130a01a9468c2d80c725e4625a25debc5c54b\",\"dweb:/ipfs/QmexvRpcaeERPyZt9BzHZViFb8GevhhhoUBQ3wgDqFUwJx\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol":{"IFlashLoanRecipient":{"abi":[{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"When `flashLoan` is called on the Vault, it invokes the `receiveFlashLoan` hook on the recipient. At the time of the call, the Vault will have transferred `amounts` for `tokens` to the recipient. Before this call returns, the recipient must have transferred `amounts` plus `feeAmounts` for each token back to the Vault, or else the entire flash loan will revert. `userData` is the same value passed in the `IVault.flashLoan` call.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":\"IFlashLoanRecipient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol":{"IPoolSwapStructs":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":\"IPoolSwapStructs\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0xbe4815478a942261e6e2416632342b0e55ff2b0f75c2551ffd79ad9b2326be38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccc137d00935cace955e552f238130a01a9468c2d80c725e4625a25debc5c54b\",\"dweb:/ipfs/QmexvRpcaeERPyZt9BzHZViFb8GevhhhoUBQ3wgDqFUwJx\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol":{"IProtocolFeesCollector":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"FlashLoanFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"SwapFeePercentageChanged","type":"event"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getCollectedFeeAmounts","outputs":[{"internalType":"uint256[]","name":"feeAmounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFlashLoanFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSwapFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFlashLoanFeePercentage","type":"uint256"}],"name":"setFlashLoanFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setSwapFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getAuthorizer()":"aaabadc5","getCollectedFeeAmounts(address[])":"e42abf35","getFlashLoanFeePercentage()":"d877845c","getSwapFeePercentage()":"55c67628","setFlashLoanFeePercentage(uint256)":"6b6b9f69","setSwapFeePercentage(uint256)":"38e9922e","vault()":"fbfa77cf","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"FlashLoanFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"SwapFeePercentageChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getCollectedFeeAmounts\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"feeAmounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFlashLoanFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSwapFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFlashLoanFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setFlashLoanFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setSwapFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":\"IProtocolFeesCollector\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol":{"IVault":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"AuthorizerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ExternalBalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"FlashLoan","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"delta","type":"int256"}],"name":"InternalBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"liquidityProvider","type":"address"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"int256[]","name":"deltas","type":"int256[]"},{"indexed":false,"internalType":"uint256[]","name":"protocolFeeAmounts","type":"uint256[]"}],"name":"PoolBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"assetManager","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"int256","name":"cashDelta","type":"int256"},{"indexed":false,"internalType":"int256","name":"managedDelta","type":"int256"}],"name":"PoolBalanceManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"poolAddress","type":"address"},{"indexed":false,"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"PoolRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"RelayerApprovalChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"contract IERC20","name":"tokenIn","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"tokenOut","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOut","type":"uint256"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"TokensDeregistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"indexed":false,"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"TokensRegistered","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"batchSwap","outputs":[{"internalType":"int256[]","name":"","type":"int256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"deregisterTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"exitPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IFlashLoanRecipient","name":"recipient","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"}],"name":"flashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"getInternalBalance","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPausedState","outputs":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"uint256","name":"pauseWindowEndTime","type":"uint256"},{"internalType":"uint256","name":"bufferPeriodEndTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPool","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"enum IVault.PoolSpecialization","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"getPoolTokenInfo","outputs":[{"internalType":"uint256","name":"cash","type":"uint256"},{"internalType":"uint256","name":"managed","type":"uint256"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"},{"internalType":"address","name":"assetManager","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolTokens","outputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"},{"internalType":"uint256","name":"lastChangeBlock","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"relayer","type":"address"}],"name":"hasApprovedRelayer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.PoolBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct IVault.PoolBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"managePoolBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.PoolSpecialization","name":"specialization","type":"uint8"}],"name":"registerPool","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"assetManagers","type":"address[]"}],"name":"registerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IAuthorizer","name":"newAuthorizer","type":"address"}],"name":"setAuthorizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"WETH()":"ad5c4648","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)":"945bcec9","deregisterTokens(bytes32,address[])":"7d3aeb96","exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"8bdb3913","flashLoan(address,address[],uint256[],bytes)":"5c38449e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDomainSeparator()":"ed24911d","getInternalBalance(address,address[])":"0f5a6efa","getNextNonce(address)":"90193b7c","getPausedState()":"1c0de051","getPool(bytes32)":"f6c00927","getPoolTokenInfo(bytes32,address)":"b05f8e48","getPoolTokens(bytes32)":"f94d4668","getProtocolFeesCollector()":"d2946c2b","hasApprovedRelayer(address,address)":"fec90d72","joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))":"b95cac28","managePoolBalance((uint8,bytes32,address,uint256)[])":"e6c46092","manageUserBalance((uint8,address,uint256,address,address)[])":"0e8e3e84","queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","registerPool(uint8)":"09b2760f","registerTokens(bytes32,address[],address[])":"66a9c7d2","setAuthorizer(address)":"058a628f","setPaused(bool)":"16c38b3c","setRelayerApproval(address,address,bool)":"fa6e671d","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)":"52bbbe29"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"AuthorizerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExternalBalanceTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"FlashLoan\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"delta\",\"type\":\"int256\"}],\"name\":\"InternalBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"PausedStateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"deltas\",\"type\":\"int256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"protocolFeeAmounts\",\"type\":\"uint256[]\"}],\"name\":\"PoolBalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"cashDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"managedDelta\",\"type\":\"int256\"}],\"name\":\"PoolBalanceManaged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"poolAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"PoolRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"RelayerApprovalChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"TokensDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"TokensRegistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IWETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"batchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"\",\"type\":\"int256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"deregisterTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlashLoanRecipient\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"name\":\"flashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getInternalBalance\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPausedState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"pauseWindowEndTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bufferPeriodEndTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPoolTokenInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"cash\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"managed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"assetManager\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"balances\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"lastChangeBlock\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"hasApprovedRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.PoolBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IVault.PoolBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"managePoolBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.PoolSpecialization\",\"name\":\"specialization\",\"type\":\"uint8\"}],\"name\":\"registerPool\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"assetManagers\",\"type\":\"address[]\"}],\"name\":\"registerTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"newAuthorizer\",\"type\":\"address\"}],\"name\":\"setAuthorizer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Full external interface for the Vault core contract - no external or public methods exist in the contract that don't override one of these declarations.\",\"events\":{\"AuthorizerChanged(address)\":{\"details\":\"Emitted when a new authorizer is set by `setAuthorizer`.\"},\"ExternalBalanceTransfer(address,address,address,uint256)\":{\"details\":\"Emitted when a user's Vault ERC20 allowance is used by the Vault to transfer tokens to an external account.\"},\"FlashLoan(address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual flash loan performed by `flashLoan`.\"},\"InternalBalanceChanged(address,address,int256)\":{\"details\":\"Emitted when a user's Internal Balance changes, either from calls to `manageUserBalance`, or through interacting with Pools using Internal Balance. Because Internal Balance works exclusively with ERC20 tokens, ETH deposits and withdrawals will use the WETH address.\"},\"PoolBalanceChanged(bytes32,address,address[],int256[],uint256[])\":{\"details\":\"Emitted when a user joins or exits a Pool by calling `joinPool` or `exitPool`, respectively.\"},\"PoolBalanceManaged(bytes32,address,address,int256,int256)\":{\"details\":\"Emitted when a Pool's token Asset Manager alters its balance via `managePoolBalance`.\"},\"PoolRegistered(bytes32,address,uint8)\":{\"details\":\"Emitted when a Pool is registered by calling `registerPool`.\"},\"RelayerApprovalChanged(address,address,bool)\":{\"details\":\"Emitted every time a relayer is approved or disapproved by `setRelayerApproval`.\"},\"Swap(bytes32,address,address,uint256,uint256)\":{\"details\":\"Emitted for each individual swap performed by `swap` or `batchSwap`.\"},\"TokensDeregistered(bytes32,address[])\":{\"details\":\"Emitted when a Pool deregisters tokens by calling `deregisterTokens`.\"},\"TokensRegistered(bytes32,address[],address[])\":{\"details\":\"Emitted when a Pool registers tokens by calling `registerTokens`.\"}},\"kind\":\"dev\",\"methods\":{\"WETH()\":{\"details\":\"Returns the Vault's WETH instance.\"},\"batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256)\":{\"details\":\"Performs a series of swaps with one or multiple Pools. In each individual swap, the caller determines either the amount of tokens sent to or received from the Pool, depending on the `kind` value. Returns an array with the net Vault asset balance deltas. Positive amounts represent tokens (or ETH) sent to the Vault, and negative amounts represent tokens (or ETH) sent by the Vault. Each delta corresponds to the asset at the same index in the `assets` array. Swaps are executed sequentially, in the order specified by the `swaps` array. Each array element describes a Pool, the token to be sent to this Pool, the token to receive from it, and an amount that is either `amountIn` or `amountOut` depending on the swap kind. Multihop swaps can be executed by passing an `amount` value of zero for a swap. This will cause the amount in/out of the previous swap to be used as the amount in for the current one. In a 'given in' swap, 'tokenIn' must equal the previous swap's `tokenOut`. For a 'given out' swap, `tokenOut` must equal the previous swap's `tokenIn`. The `assets` array contains the addresses of all assets involved in the swaps. These are either token addresses, or the IAsset sentinel value for ETH (the zero address). Each entry in the `swaps` array specifies tokens in and out by referencing an index in `assets`. Note that Pools never interact with ETH directly: it will be wrapped to or unwrapped from WETH by the Vault. Internal Balance usage, sender, and recipient are determined by the `funds` struct. The `limits` array specifies the minimum or maximum amount of each token the vault is allowed to transfer. `batchSwap` can be used to make a single swap, like `swap` does, but doing so requires more gas than the equivalent `swap` call. Emits `Swap` events.\"},\"deregisterTokens(bytes32,address[])\":{\"details\":\"Deregisters `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Only registered tokens (via `registerTokens`) can be deregistered. Additionally, they must have zero total balance. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be deregistered in the same `deregisterTokens` call. A deregistered token can be re-registered later on, possibly with a different Asset Manager. Emits a `TokensDeregistered` event.\"},\"exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to exit a Pool, which transfers tokens from the Pool's balance to `recipient`. This will trigger custom Pool behavior, which will typically ask for something in return from `sender` - often tokenized Pool shares. The amount of tokens that can be withdrawn is limited by the Pool's `cash` balance (see `getPoolTokenInfo`). If the caller is not `sender`, it must be an authorized relayer for them. The `tokens` and `minAmountsOut` arrays must have the same length, and each entry in these indicates the minimum token amount to receive for each token contract. The amounts to send are decided by the Pool and not the Vault: it just enforces these minimums. If exiting a Pool that holds WETH, it is possible to receive ETH directly: the Vault will do the unwrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same exit. `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If receiving ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be exited. If `toInternalBalance` is true, the tokens will be deposited to `recipient`'s Internal Balance. Otherwise, an ERC20 transfer will be performed. Note that ETH cannot be deposited to Internal Balance: attempting to do so will trigger a revert. `minAmountsOut` is the minimum amount of tokens the user expects to get out of the Pool, for each token in the `tokens` array. This array must match the Pool's registered tokens. This causes the Vault to call the `IBasePool.onExitPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares to return). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract. Emits a `PoolBalanceChanged` event.\"},\"flashLoan(address,address[],uint256[],bytes)\":{\"details\":\"Performs a 'flash loan', sending tokens to `recipient`, executing the `receiveFlashLoan` hook on it, and then reverting unless the tokens plus a proportional protocol fee have been returned. The `tokens` and `amounts` arrays must have the same length, and each entry in these indicates the loan amount for each token contract. `tokens` must be sorted in ascending order. The 'userData' field is ignored by the Vault, and forwarded as-is to `recipient` as part of the `receiveFlashLoan` call. Emits `FlashLoan` events.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAuthorizer()\":{\"details\":\"Returns the Vault's Authorizer.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"getInternalBalance(address,address[])\":{\"details\":\"Returns `user`'s Internal Balance for a set of tokens.\"},\"getNextNonce(address)\":{\"details\":\"Returns the next nonce used by an address to sign messages.\"},\"getPausedState()\":{\"details\":\"Returns the current paused state.\"},\"getPool(bytes32)\":{\"details\":\"Returns a Pool's contract address and specialization setting.\"},\"getPoolTokenInfo(bytes32,address)\":{\"details\":\"Returns detailed information for a Pool's registered token. `cash` is the number of tokens the Vault currently holds for the Pool. `managed` is the number of tokens withdrawn and held outside the Vault by the Pool's token Asset Manager. The Pool's total balance for `token` equals the sum of `cash` and `managed`. Internally, `cash` and `managed` are stored using 112 bits. No action can ever cause a Pool's token `cash`, `managed` or `total` balance to be greater than 2^112 - 1. `lastChangeBlock` is the number of the block in which `token`'s total balance was last modified (via either a join, exit, swap, or Asset Manager update). This value is useful to avoid so-called 'sandwich attacks', for example when developing price oracles. A change of zero (e.g. caused by a swap with amount zero) is considered a change for this purpose, and will update `lastChangeBlock`. `assetManager` is the Pool's token Asset Manager.\"},\"getPoolTokens(bytes32)\":{\"details\":\"Returns a Pool's registered tokens, the total balance for each, and the latest block when *any* of the tokens' `balances` changed. The order of the `tokens` array is the same order that will be used in `joinPool`, `exitPool`, as well as in all Pool hooks (where applicable). Calls to `registerTokens` and `deregisterTokens` may change this order. If a Pool only registers tokens once, and these are sorted in ascending order, they will be stored in the same order as passed to `registerTokens`. Total balances include both tokens held by the Vault and those withdrawn by the Pool's Asset Managers. These are the amounts used by joins, exits and swaps. For a detailed breakdown of token balances, use `getPoolTokenInfo` instead.\"},\"getProtocolFeesCollector()\":{\"details\":\"Returns the current protocol fee module.\"},\"hasApprovedRelayer(address,address)\":{\"details\":\"Returns true if `user` has approved `relayer` to act as a relayer for them.\"},\"joinPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"details\":\"Called by users to join a Pool, which transfers tokens from `sender` into the Pool's balance. This will trigger custom Pool behavior, which will typically grant something in return to `recipient` - often tokenized Pool shares. If the caller is not `sender`, it must be an authorized relayer for them. The `assets` and `maxAmountsIn` arrays must have the same length, and each entry indicates the maximum amount to send for each asset. The amounts to send are decided by the Pool and not the Vault: it just enforces these maximums. If joining a Pool that holds WETH, it is possible to send ETH directly: the Vault will do the wrapping. To enable this mechanism, the IAsset sentinel value (the zero address) must be passed in the `assets` array instead of the WETH address. Note that it is not possible to combine ETH and WETH in the same join. Any excess ETH will be sent back to the caller (not the sender, which is important for relayers). `assets` must have the same length and order as the array returned by `getPoolTokens`. This prevents issues when interacting with Pools that register and deregister tokens frequently. If sending ETH however, the array must be sorted *before* replacing the WETH address with the ETH sentinel value (the zero address), which means the final `assets` array might not be sorted. Pools with no registered tokens cannot be joined. If `fromInternalBalance` is true, the caller's Internal Balance will be preferred: ERC20 transfers will only be made for the difference between the requested amount and Internal Balance (if any). Note that ETH cannot be withdrawn from Internal Balance: attempting to do so will trigger a revert. This causes the Vault to call the `IBasePool.onJoinPool` hook on the Pool's contract, where Pools implement their own custom logic. This typically requires additional information from the user (such as the expected number of Pool shares). This can be encoded in the `userData` argument, which is ignored by the Vault and passed directly to the Pool's contract, as is `recipient`. Emits a `PoolBalanceChanged` event.\"},\"managePoolBalance((uint8,bytes32,address,uint256)[])\":{\"details\":\"Performs a set of Pool balance operations, which may be either withdrawals, deposits or updates. Pool Balance management features batching, which means a single contract call can be used to perform multiple operations of different kinds, with different Pools and tokens, at once. For each operation, the caller must be registered as the Asset Manager for `token` in `poolId`.\"},\"manageUserBalance((uint8,address,uint256,address,address)[])\":{\"details\":\"Performs a set of user balance operations, which involve Internal Balance (deposit, withdraw or transfer) and plain ERC20 transfers using the Vault's allowance. This last feature is particularly useful for relayers, as it lets integrators reuse a user's Vault allowance. For each operation, if the caller is not `sender`, it must be an authorized relayer for them.\"},\"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))\":{\"details\":\"Simulates a call to `batchSwap`, returning an array of Vault asset deltas. Calls to `swap` cannot be simulated directly, but an equivalent `batchSwap` call can and will yield the exact same result. Each element in the array corresponds to the asset at the same index, and indicates the number of tokens (or ETH) the Vault would take from the sender (if positive) or send to the recipient (if negative). The arguments it receives are the same that an equivalent `batchSwap` call would receive. Unlike `batchSwap`, this function performs no checks on the sender or recipient field in the `funds` struct. This makes it suitable to be called by off-chain applications via eth_call without needing to hold tokens, approve them for the Vault, or even know a user's address. Note that this function is not 'view' (due to implementation details): the client code must explicitly execute eth_call instead of eth_sendTransaction.\"},\"registerPool(uint8)\":{\"details\":\"Registers the caller account as a Pool with a given specialization setting. Returns the Pool's ID, which is used in all Pool-related functions. Pools cannot be deregistered, nor can the Pool's specialization be changed. The caller is expected to be a smart contract that implements either `IGeneralPool` or `IMinimalSwapInfoPool`, depending on the chosen specialization setting. This contract is known as the Pool's contract. Note that the same contract may register itself as multiple Pools with unique Pool IDs, or in other words, multiple Pools may share the same contract. Emits a `PoolRegistered` event.\"},\"registerTokens(bytes32,address[],address[])\":{\"details\":\"Registers `tokens` for the `poolId` Pool. Must be called by the Pool's contract. Pools can only interact with tokens they have registered. Users join a Pool by transferring registered tokens, exit by receiving registered tokens, and can only swap registered tokens. Each token can only be registered once. For Pools with the Two Token specialization, `tokens` must have a length of two, that is, both tokens must be registered in the same `registerTokens` call, and they must be sorted in ascending order. The `tokens` and `assetManagers` arrays must have the same length, and each entry in these indicates the Asset Manager for the corresponding token. Asset Managers can manage a Pool's tokens via `managePoolBalance`, depositing and withdrawing them directly, and can even set their balance to arbitrary amounts. They are therefore expected to be highly secured smart contracts with sound design principles, and the decision to register an Asset Manager should not be made lightly. Pools can choose not to assign an Asset Manager to a given token by passing in the zero address. Once an Asset Manager is set, it cannot be changed except by deregistering the associated token and registering again with a different Asset Manager. Emits a `TokensRegistered` event.\"},\"setAuthorizer(address)\":{\"details\":\"Sets a new Authorizer for the Vault. The caller must be allowed by the current Authorizer to do this. Emits an `AuthorizerChanged` event.\"},\"setPaused(bool)\":{\"details\":\"Safety mechanism to pause most Vault operations in the event of an emergency - typically detection of an error in some part of the system. The Vault can only be paused during an initial time period, after which pausing is forever disabled. While the contract is paused, the following features are disabled: - depositing and transferring internal balance - transferring external balance (using the Vault's allowance) - swaps - joining Pools - Asset Manager interactions Internal Balance can still be withdrawn, and Pools exited.\"},\"setRelayerApproval(address,address,bool)\":{\"details\":\"Allows `relayer` to act as a relayer for `sender` if `approved` is true, and disallows it otherwise. Emits a `RelayerApprovalChanged` event.\"},\"swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256)\":{\"details\":\"Performs a swap with a single Pool. If the swap is 'given in' (the number of tokens to send to the Pool is known), it returns the amount of tokens taken from the Pool, which must be greater than or equal to `limit`. If the swap is 'given out' (the number of tokens to take from the Pool is known), it returns the amount of tokens sent to the Pool, which must be less than or equal to `limit`. Internal Balance usage and the recipient are determined by the `funds` struct. Emits a `Swap` event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":\"IVault\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol":{"BasePoolAuthorization":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getOwner()":"893d20e8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base authorization layer implementation for Pools. The owner account can call some of the permissioned functions - access control of the rest is delegated to the Authorizer. Note that this owner is immutable: more sophisticated permission schemes, such as multiple ownership, granular roles, etc., could be built on top of this by making the owner a smart contract. Access control of all other permissioned functions is delegated to an Authorizer. It is also possible to delegate control of *all* permissioned functions to the Authorizer by setting the owner address to `_DELEGATE_OWNER`.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":\"BasePoolAuthorization\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol":{"RecoveryMode":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RecoveryModeStateChanged","type":"event"},{"inputs":[],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disableRecoveryMode()":"b7b814fc","enableRecoveryMode()":"54a844ba","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getOwner()":"893d20e8","inRecoveryMode()":"b35056b8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RecoveryModeStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is intended to provide a safe way to exit any pool during some kind of emergency, to avoid locking funds in the event the pool enters a non-functional state (i.e., some code that normally runs during exits is causing them to revert). Recovery Mode is *not* the same as pausing the pool. The pause function is only available during a short window after factory deployment. Pausing can only be intentionally reversed during a buffer period, and the contract will permanently unpause itself thereafter. Paused pools are completely disabled, in a kind of suspended animation, until they are voluntarily or involuntarily unpaused. By contrast, a privileged account - typically a governance multisig - can place a pool in Recovery Mode at any time, and it is always reversible. The pool is *not* disabled while in this mode: though of course whatever condition prompted the transition to Recovery Mode has likely effectively disabled some functions. Rather, a special \\\"clean\\\" exit is enabled, which runs the absolute minimum code necessary to exit proportionally. In particular, stable pools do not attempt to compute the invariant (which is a complex, iterative calculation that can fail in extreme circumstances), and no protocol fees are collected. It is critical to ensure that turning on Recovery Mode would do no harm, if activated maliciously or in error.\",\"kind\":\"dev\",\"methods\":{\"disableRecoveryMode()\":{\"details\":\"Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly necessary.\"},\"enableRecoveryMode()\":{\"details\":\"Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may perform certain operations in a \\\"safer\\\" manner that is less likely to fail, in an attempt to keep the pool running, even in a pathological state. Unlike the Pause operation, which is only available during a short window after factory deployment, Recovery Mode can always be enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRecoveryMode()\":{\"notice\":\"Disable recovery mode, which disables the special safe exit path for LPs.\"},\"enableRecoveryMode()\":{\"notice\":\"Enable recovery mode, which enables a special safe exit path for LPs.\"},\"inRecoveryMode()\":{\"notice\":\"Override to check storage and return whether the pool is in Recovery Mode\"}},\"notice\":\"Handle storage and state changes for pools that support \\\"Recovery Mode\\\".\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":\"RecoveryMode\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":{\"keccak256\":\"0xb4b24f60e4d67702f4e194e44e185fa0ee3a3f695afa57240b9e8291674e89fe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d891a555a69861488faa9d51a823469e1195f8b548c40aa1b034084507a8c30d\",\"dweb:/ipfs/QmPqUT8eX9oFXDku3m18541eEsNXgVcFNEX8MjJMrAiUaq\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol":{"BasePoolFactory":{"abi":[{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCodeContracts","outputs":[{"internalType":"address","name":"contractA","type":"address"},{"internalType":"address","name":"contractB","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeePercentagesProvider","outputs":[{"internalType":"contract IProtocolFeePercentagesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getCreationCode()":"00c194db","getCreationCodeContracts()":"174481fa","getProtocolFeePercentagesProvider()":"739238d6","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCodeContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractB\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeePercentagesProvider\",\"outputs\":[{\"internalType\":\"contract IProtocolFeePercentagesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"By using the split code mechanism, we can deploy Pools with creation code so large that a regular factory contract would not be able to store it. Since we expect to release new versions of pool types regularly - and the blockchain is forever - versioning will become increasingly important. Governance can deprecate a factory by calling `disable`, which will permanently prevent the creation of any future pools from the factory.\",\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Disable the factory, preventing the creation of more pools. Already existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getCreationCode()\":{\"details\":\"Returns the creation code of the contract this factory creates.\"},\"getCreationCodeContracts()\":{\"details\":\"Returns the two addresses where the creation code of the contract crated by this factory is stored.\"},\"isDisabled()\":{\"details\":\"Check whether the derived factory has been disabled.\"},\"isPoolFromFactory(address)\":{\"details\":\"Returns true if `pool` was created by this factory.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"notice\":\"Base contract for Pool factories. Pools are deployed from factories to allow third parties to reason about them. Unknown Pools may have arbitrary logic: being able to assert that a Pool's behavior follows certain rules (those imposed by the contracts created by the factory) is very powerful.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\":\"BasePoolFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\":{\"keccak256\":\"0x89a255ca839261cb76f41000593bf370b278be0e38126bed33b99c13ef9e85ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a164fd49722a933d5e0cf5b7eb38ed1aa2368fde971398a432cb4a4b04cf052a\",\"dweb:/ipfs/Qmc5peB5CrxoBjtet1NYooGrFTZii2CerinCkuRex8HRsq\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":{\"keccak256\":\"0xc6390b858cdf8456ad71f0c4bbd9361cb8f49f4d0917eb0f9bdf762bc04447d3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://220cd28c7f8fc4f4b1082e0f831a48b6d6f998349675728f09ba93274858aa12\",\"dweb:/ipfs/QmPwjVq2mEuhaa295DYJneyMy4HFeFbrba3A2mTr3JcnXY\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol":{"Authentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Building block for performing access control on external functions. This contract is used via the `authenticate` modifier (or the `_authenticateCaller` function), which can be applied to external functions to only make them callable by authorized accounts. Derived contracts must implement the `_canPerform` function, which holds the actual access control logic.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The main purpose of the `actionIdDisambiguator` is to prevent accidental function selector collisions in multi contract systems. There are two main uses for it: - if the contract is a singleton, any unique identifier can be used to make the associated action identifiers unique. The contract's own address is a good option. - if the contract belongs to a family that shares action identifiers for the same functions, an identifier shared by the entire family (and no other contract) should be used instead.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":\"Authentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol":{"BaseSplitCodeFactory":{"abi":[{"inputs":[],"name":"getCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCodeContracts","outputs":[{"internalType":"address","name":"contractA","type":"address"},{"internalType":"address","name":"contractB","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getCreationCode()":"00c194db","getCreationCodeContracts()":"174481fa"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCodeContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractB\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base factory for contracts whose creation code is so large that the factory cannot hold it. This happens when the contract's creation code grows close to 24kB. Note that this factory cannot help with contracts that have a *runtime* (deployed) bytecode larger than 24kB.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The creation code of a contract Foo can be obtained inside Solidity with `type(Foo).creationCode`.\"},\"getCreationCode()\":{\"details\":\"Returns the creation code of the contract this factory creates.\"},\"getCreationCodeContracts()\":{\"details\":\"Returns the two addresses where the creation code of the contract crated by this factory is stored.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":\"BaseSplitCodeFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":{\"keccak256\":\"0xc6390b858cdf8456ad71f0c4bbd9361cb8f49f4d0917eb0f9bdf762bc04447d3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://220cd28c7f8fc4f4b1082e0f831a48b6d6f998349675728f09ba93274858aa12\",\"dweb:/ipfs/QmPwjVq2mEuhaa295DYJneyMy4HFeFbrba3A2mTr3JcnXY\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol":{"CodeDeployer":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205638decde04d036509143f3be983b6ad0dca13bf5d1452f395e5c122cfa51d0c64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP CODESIZE 0xDE 0xCD 0xE0 0x4D SUB PUSH6 0x9143F3BE983 0xB6 0xAD 0xD 0xCA SGT 0xBF 0x5D EQ MSTORE RETURN SWAP6 0xE5 0xC1 0x22 0xCF 0xA5 SAR 0xC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1005:3100:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205638decde04d036509143f3be983b6ad0dca13bf5d1452f395e5c122cfa51d0c64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMP CODESIZE 0xDE 0xCD 0xE0 0x4D SUB PUSH6 0x9143F3BE983 0xB6 0xAD 0xD 0xCA SGT 0xBF 0x5D EQ MSTORE RETURN SWAP6 0xE5 0xC1 0x22 0xCF 0xA5 SAR 0xC PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1005:3100:50:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library used to deploy contracts with specific code. This can be used for long-term storage of immutable data as contract code, which can be retrieved via the `extcodecopy` opcode.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":\"CodeDeployer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol":{"EOASignaturesValidator":{"abi":[{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utility for signing Solidity function calls.\",\"kind\":\"dev\",\"methods\":{\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":\"EOASignaturesValidator\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol":{"InputHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122057fe60041bbf11e428a52cf4b56e1e1c3ea78ed54bb25a41c1e2183c5d92552164736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI INVALID PUSH1 0x4 SHL 0xBF GT 0xE4 0x28 0xA5 0x2C DELEGATECALL 0xB5 PUSH15 0x1E1C3EA78ED54BB25A41C1E2183C5D SWAP3 SSTORE 0x21 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"893:1008:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122057fe60041bbf11e428a52cf4b56e1e1c3ea78ed54bb25a41c1e2183c5d92552164736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 JUMPI INVALID PUSH1 0x4 SHL 0xBF GT 0xE4 0x28 0xA5 0x2C DELEGATECALL 0xB5 PUSH15 0x1E1C3EA78ED54BB25A41C1E2183C5D SWAP3 SSTORE 0x21 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"893:1008:53:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":\"InputHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol":{"SingletonAuthentication":{"abi":[{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getVault()":"8d928af8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":\"SingletonAuthentication\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol":{"VaultHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca00420f504e5dbc6487051df0244001b1bc4c2e8573c1326e1532d1298826cb64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA STOP TIMESTAMP 0xF POP 0x4E 0x5D 0xBC PUSH5 0x87051DF024 BLOCKHASH ADD 0xB1 0xBC 0x4C 0x2E DUP6 PUSH20 0xC1326E1532D1298826CB64736F6C634300070100 CALLER ","sourceMap":"713:497:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ca00420f504e5dbc6487051df0244001b1bc4c2e8573c1326e1532d1298826cb64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA STOP TIMESTAMP 0xF POP 0x4E 0x5D 0xBC PUSH5 0x87051DF024 BLOCKHASH ADD 0xB1 0xBC 0x4C 0x2E DUP6 PUSH20 0xC1326E1532D1298826CB64736F6C634300070100 CALLER ","sourceMap":"713:497:55:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":\"VaultHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol":{"FixedPoint":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201a1f8af2a8f0381ceb2f668115c5310bd3cfae446fbfbcbb88d605785cf473e664736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE 0x1F DUP11 CALLCODE 0xA8 CREATE CODESIZE SHR 0xEB 0x2F PUSH7 0x8115C5310BD3CF 0xAE DIFFICULTY PUSH16 0xBFBCBB88D605785CF473E664736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201a1f8af2a8f0381ceb2f668115c5310bd3cfae446fbfbcbb88d605785cf473e664736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BYTE 0x1F DUP11 CALLCODE 0xA8 CREATE CODESIZE SHR 0xEB 0x2F PUSH7 0x8115C5310BD3CF 0xAE DIFFICULTY PUSH16 0xBFBCBB88D605785CF473E664736F6C63 NUMBER STOP SMOD ADD STOP CALLER ","sourceMap":"888:5321:56:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol":{"LogExpMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220493c22f4e2ce21bb83e3a894b22f28dffeda0fc9146b969bd44f2d0526f50d4664736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 EXTCODECOPY 0x22 DELEGATECALL 0xE2 0xCE 0x21 0xBB DUP4 0xE3 0xA8 SWAP5 0xB2 0x2F 0x28 0xDF INVALID 0xDA 0xF 0xC9 EQ PUSH12 0x969BD44F2D0526F50D466473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1681:19465:57:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220493c22f4e2ce21bb83e3a894b22f28dffeda0fc9146b969bd44f2d0526f50d4664736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 EXTCODECOPY 0x22 DELEGATECALL 0xE2 0xCE 0x21 0xBB DUP4 0xE3 0xA8 SWAP5 0xB2 0x2F 0x28 0xDF INVALID 0xDA 0xF 0xC9 EQ PUSH12 0x969BD44F2D0526F50D466473 PUSH16 0x6C634300070100330000000000000000 ","sourceMap":"1681:19465:57:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Fernando Martinelli - @fernandomartinelliSergio Yuhjtman - @sergioyuhjtmanDaniel Fernandez - @dmf7z\",\"details\":\"Exponentiation and logarithm functions for 18 decimal fixed point numbers (both base and exponent/argument). Exponentiation and logarithm with arbitrary bases (x^y and log_x(y)) are implemented by conversion to natural exponentiation and logarithm (where the base is Euler's number).\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":\"LogExpMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203bf05287f12bfe302da3e460beb392fde41446c46b229ab65ed0a9bf4df2be8164736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE CREATE MSTORE DUP8 CALL 0x2B INVALID ADDRESS 0x2D LOG3 0xE4 PUSH1 0xBE 0xB3 SWAP3 REVERT 0xE4 EQ CHAINID 0xC4 PUSH12 0x229AB65ED0A9BF4DF2BE8164 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"290:2995:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203bf05287f12bfe302da3e460beb392fde41446c46b229ab65ed0a9bf4df2be8164736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE CREATE MSTORE DUP8 CALL 0x2B INVALID ADDRESS 0x2D LOG3 0xE4 PUSH1 0xBE 0xB3 SWAP3 REVERT 0xE4 EQ CHAINID 0xC4 PUSH12 0x229AB65ED0A9BF4DF2BE8164 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"290:2995:58:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Adapted from OpenZeppelin's SafeMath library.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122078351c2c7cf28f85b8beda020b56d4dee3b7c51c1a0686a42f809ab88abe05bb64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x351C2C7CF28F85B8BEDA020B56D4DEE3B7C51C1A0686A42F80 SWAP11 0xB8 DUP11 0xBE SDIV 0xBB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"439:5334:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122078351c2c7cf28f85b8beda020b56d4dee3b7c51c1a0686a42f809ab88abe05bb64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0x351C2C7CF28F85B8BEDA020B56D4DEE3B7C51C1A0686A42F80 SWAP11 0xB8 DUP11 0xBE SDIV 0xBB PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"439:5334:59:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":\"Address\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol":{"EIP712":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP 712] is a standard for hashing and signing of typed structured data. The encoding specified in the EIP is very generic, and such a generic implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in their contracts using a combination of `abi.encode` and `keccak256`. This contract implements the EIP 712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP 712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610b0c380380610b0c8339818101604052604081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156100ff57600080fd5b90830190602082018581111561011457600080fd5b825164010000000081118282018810171561012e57600080fd5b82525081516020918201929091019080838360005b8381101561015b578181015183820152602001610143565b50505050905090810190601f1680156101885780820380516001836020036101000a031916815260200191505b50604052505082516101a2915060039060208501906101cb565b5080516101b69060049060208401906101cb565b50506005805460ff191660121790555061025e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061020c57805160ff1916838001178555610239565b82800160010185558215610239579182015b8281111561023957825182559160200191906001019061021e565b50610245929150610249565b5090565b5b80821115610245576000815560010161024a565b61089f8061026d6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220032aa3c5824674e915fa1f387fbf6e362e6bf30423faa640bf15b6f8371b8ea064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB0C CODESIZE SUB DUP1 PUSH2 0xB0C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x97 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x143 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x188 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD PUSH2 0x1A2 SWAP2 POP PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x1B6 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x1CB JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH2 0x25E JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x20C JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x239 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x239 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x239 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x21E JUMP JUMPDEST POP PUSH2 0x245 SWAP3 SWAP2 POP PUSH2 0x249 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24A JUMP JUMPDEST PUSH2 0x89F DUP1 PUSH2 0x26D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB 0x2A LOG3 0xC5 DUP3 CHAINID PUSH21 0xE915FA1F387FBF6E362E6BF30423FAA640BF15B6F8 CALLDATACOPY SHL DUP15 LOG0 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1427:10003:61:-:0;;;2052:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:61;;;;;;;;;;-1:-1:-1;2052:137:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:61;;;;;;;;;;-1:-1:-1;2052:137:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2052:137:61;;-1:-1:-1;;2118:13:61;;;;-1:-1:-1;2118:5:61;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:61;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:61;:14;;-1:-1:-1;;2168:14:61;2180:2;2168:14;;;-1:-1:-1;1427:10003:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1427:10003:61;;;-1:-1:-1;1427:10003:61;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610287578063a9059cbb146102c0578063dd62ed3e146102f9576100c9565b8063395093511461021357806370a082311461024c57806395d89b411461027f576100c9565b806318160ddd116100b257806318160ddd1461019857806323b872dd146101b2578063313ce567146101f5576100c9565b806306fdde03146100ce578063095ea7b31461014b575b600080fd5b6100d6610334565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101846004803603604081101561016157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103e8565b604080519115158252519081900360200190f35b6101a06103fe565b60408051918252519081900360200190f35b610184600480360360608110156101c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610404565b6101fd610465565b6040805160ff9092168252519081900360200190f35b6101846004803603604081101561022957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561046e565b6101a06004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104b1565b6100d66104d9565b6101846004803603604081101561029d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610558565b610184600480360360408110156102d657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561059e565b6101a06004803603604081101561030f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166105ab565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b820191906000526020600020905b8154815290600101906020018083116103c157829003601f168201915b5050505050905090565b60006103f53384846105e3565b50600192915050565b60025490565b6000610411848484610652565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461045b918691610456908661019e61077b565b6105e3565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f59185906104569086610791565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103de5780601f106103b3576101008083540402835291602001916103de565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103f5918590610456908661019f61077b565b60006103f5338484610652565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61067673ffffffffffffffffffffffffffffffffffffffff841615156101986107aa565b61069a73ffffffffffffffffffffffffffffffffffffffff831615156101996107aa565b6106a58383836107bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546106d890826101a061077b565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107149082610791565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061078a84841115836107aa565b5050900390565b60008282016107a384821015836107aa565b9392505050565b816107b8576107b8816107c1565b5050565b505050565b6107eb817f42414c00000000000000000000000000000000000000000000000000000000006107ee565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220032aa3c5824674e915fa1f387fbf6e362e6bf30423faa640bf15b6f8371b8ea064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2F9 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x27F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1B2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1F5 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x334 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A0 PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x404 JUMP JUMPDEST PUSH2 0x1FD PUSH2 0x465 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x46E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4B1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x558 JUMP JUMPDEST PUSH2 0x184 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x59E JUMP JUMPDEST PUSH2 0x1A0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x5AB JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3C1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x411 DUP5 DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x45B SWAP2 DUP7 SWAP2 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x77B JUMP JUMPDEST PUSH2 0x5E3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x3DE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3B3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3DE JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3F5 SWAP2 DUP6 SWAP1 PUSH2 0x456 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x77B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3F5 CALLER DUP5 DUP5 PUSH2 0x652 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x676 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x69A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x7AA JUMP JUMPDEST PUSH2 0x6A5 DUP4 DUP4 DUP4 PUSH2 0x7BC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x6D8 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x77B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x714 SWAP1 DUP3 PUSH2 0x791 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78A DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x7A3 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x7AA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x7B8 JUMPI PUSH2 0x7B8 DUP2 PUSH2 0x7C1 JUMP JUMPDEST POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x7EB DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7EE JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SUB 0x2A LOG3 0xC5 DUP3 CHAINID PUSH21 0xE915FA1F387FBF6E362E6BF30423FAA640BF15B6F8 CALLDATACOPY SHL DUP15 LOG0 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1427:10003:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:61;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:61;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:61;;;;:::i;2448:85::-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:61;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:61;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:61;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:61;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11033:3:19;5752:35:61;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:61;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11107:3:19;7143:36:61;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10629:3:19;7880:8:61;:71::i;:::-;7961:72;7970:23;;;;;10697:3:19;7961:8:61;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11175:3:19;8122:21:61;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:68:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:68;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:68:o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;11245:183:61:-;;;;:::o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}, initializes {decimals} with a default value of 18. To select a different value for {decimals}, use {_setupDecimals}. All three of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol":{"ERC20Burnable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {ERC20} that allows token holders to destroy both their own tokens and those that they have an allowance for, in a way that can be recognized off-chain (via event analysis).\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":\"ERC20Burnable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol":{"ERC20Permit":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. _Available since v3.4._\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC20 token name.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol":{"EnumerableSet":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c5fb5c3cb5d119cf22da291ab4c35053bfb00bb3a92170970b76f1eaa31c58a64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0x5F 0xB5 0xC3 0xCB 0x5D GT SWAP13 CALLCODE 0x2D LOG2 SWAP2 0xAB 0x4C CALLDATALOAD SDIV EXTCODESIZE 0xFB STOP 0xBB GASPRICE SWAP3 OR MULMOD PUSH17 0xB76F1EAA31C58A64736F6C634300070100 CALLER ","sourceMap":"1210:8346:64:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205c5fb5c3cb5d119cf22da291ab4c35053bfb00bb3a92170970b76f1eaa31c58a64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5C 0x5F 0xB5 0xC3 0xCB 0x5D GT SWAP13 CALLCODE 0x2D LOG2 SWAP2 0xAB 0x4C CALLDATALOAD SDIV EXTCODESIZE 0xFB STOP 0xBB GASPRICE SWAP3 OR MULMOD PUSH17 0xB76F1EAA31C58A64736F6C634300070100 CALLER ","sourceMap":"1210:8346:64:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ``` contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol":{"ReentrancyGuard":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol":{"SafeCast":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208435d2d5a1ab67de1e3694594ff9fee81329f8f5d22ee8540d691e38f705a84a64736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 CALLDATALOAD 0xD2 0xD5 LOG1 0xAB PUSH8 0xDE1E3694594FF9FE 0xE8 SGT 0x29 0xF8 CREATE2 0xD2 0x2E 0xE8 SLOAD 0xD PUSH10 0x1E38F705A84A64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"860:738:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208435d2d5a1ab67de1e3694594ff9fee81329f8f5d22ee8540d691e38f705a84a64736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 CALLDATALOAD 0xD2 0xD5 LOG1 0xAB PUSH8 0xDE1E3694594FF9FE 0xE8 SGT 0x29 0xF8 CREATE2 0xD2 0x2E 0xE8 SLOAD 0xD PUSH10 0x1E38F705A84A64736F6C PUSH4 0x43000701 STOP CALLER ","sourceMap":"860:738:66:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always. Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing all math on `uint256` and `int256` and then downcasting.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":{\"keccak256\":\"0x900f61d39cfbb66db432105fdd524892b4d36fd57021231a7a011ecf2e06d848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9853feb7f6ea54eed91e45cc9f833062a768365295c64867ac7e83926cb3a25\",\"dweb:/ipfs/Qmeo7jrEjenzBXQ8pSDj76CqVwHg9rhRZKiPfDpLuHk42Q\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol":{"SafeERC20":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5ebbf6b3609c7ee13eb23f3f174b598e2f21a889b1d69acbfd0ae53fcc28f3764736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xEB 0xBF PUSH12 0x3609C7EE13EB23F3F174B598 0xE2 CALLCODE BYTE DUP9 SWAP12 SAR PUSH10 0xACBFD0AE53FCC28F3764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"976:2264:67:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5ebbf6b3609c7ee13eb23f3f174b598e2f21a889b1d69acbfd0ae53fcc28f3764736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xEB 0xBF PUSH12 0x3609C7EE13EB23F3F174B598 0xE2 CALLCODE BYTE DUP9 SWAP12 SAR PUSH10 0xACBFD0AE53FCC28F3764 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"976:2264:67:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e2782923ec320f36492c6654a6e9a2619a211783a40c3c076be27b0388ac155964736f6c63430007010033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 PUSH25 0x2923EC320F36492C6654A6E9A2619A211783A40C3C076BE27B SUB DUP9 0xAC ISZERO MSIZE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e2782923ec320f36492c6654a6e9a2619a211783a40c3c076be27b0388ac155964736f6c63430007010033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE2 PUSH25 0x2923EC320F36492C6654A6E9A2619A211783A40C3C076BE27B SUB DUP9 0xAC ISZERO MSIZE PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"714:1310:68:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations with added overflow checks. Arithmetic operations in Solidity wrap on overflow. This can easily result in bugs, because programmers usually assume that an overflow raises an error, which is the standard behavior in high level programming languages. `SafeMath` restores this intuition by reverting the transaction when an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol":{"ERC20Mock":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040523480156200001157600080fd5b5060405162000d8c38038062000d8c833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604052505082518391508290620001b8906003906020850190620001e7565b508051620001ce906004906020840190620001e7565b50506005805460ff191660121790555062000283915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b610af980620002936000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146102d8578063a457c2d714610311578063a9059cbb1461034a578063dd62ed3e14610383576100df565b806340c10f191461026257806370a082311461029d57806395d89b41146102d0576100df565b806323b872dd116100bd57806323b872dd146101c8578063313ce5671461020b5780633950935114610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec6103be565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610472565b604080519115158252519081900360200190f35b6101b6610488565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561048e565b6102136104ef565b6040805160ff9092168252519081900360200190f35b61019a6004803603604081101561023f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f8565b61029b6004803603604081101561027857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053b565b005b6101b6600480360360208110156102b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610549565b6100ec610571565b61029b600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f0565b61019a6004803603604081101561032757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105fa565b61019a6004803603604081101561036057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610640565b6101b66004803603604081101561039957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661064d565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047f338484610685565b50600192915050565b60025490565b600061049b8484846106f4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546104e59186916104e0908661019e61081d565b610685565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e09086610833565b610545828261084c565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b6105458282610905565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e0908661019f61081d565b600061047f3384846106f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61071873ffffffffffffffffffffffffffffffffffffffff841615156101986109f5565b61073c73ffffffffffffffffffffffffffffffffffffffff831615156101996109f5565b610747838383610a03565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461077a90826101a061081d565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107b69082610833565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061082c84841115836109f5565b5050900390565b600082820161084584821015836109f5565b9392505050565b61085860008383610a03565b61087261086d82610867610488565b90610833565b610a08565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546108a29082610833565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61092973ffffffffffffffffffffffffffffffffffffffff8316151561019b6109f5565b61093582600083610a03565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461096890826101b261081d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556109a361086d8261099d610488565b90610a0d565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b816105455761054581610a1b565b505050565b600255565b60006108458383600161081d565b610a45817f42414c0000000000000000000000000000000000000000000000000000000000610a48565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122091bd16f1f924c2ea6811ed554ce0400fc7467d0ef1a9a8d5eb5d77edbe40f9ba64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xD8C CODESIZE SUB DUP1 PUSH3 0xD8C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP DUP3 MLOAD DUP4 SWAP2 POP DUP3 SWAP1 PUSH3 0x1B8 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x1E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1CE SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1E7 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP PUSH3 0x283 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x22A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x25A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x25A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x25A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x23D JUMP JUMPDEST POP PUSH3 0x268 SWAP3 SWAP2 POP PUSH3 0x26C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x268 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x26D JUMP JUMPDEST PUSH2 0xAF9 DUP1 PUSH3 0x293 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x9DC29FAC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x383 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x229 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x48E JUMP JUMPDEST PUSH2 0x213 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x549 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x571 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x640 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x64D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x44B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B DUP5 DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x4E5 SWAP2 DUP7 SWAP2 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x81D JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x84C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x905 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x718 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x73C PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x747 DUP4 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x77A SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B6 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82C DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x845 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x858 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x86D DUP3 PUSH2 0x867 PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8A2 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x929 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x935 DUP3 PUSH1 0x0 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x968 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x9A3 PUSH2 0x86D DUP3 PUSH2 0x99D PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0x545 JUMPI PUSH2 0x545 DUP2 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH1 0x1 PUSH2 0x81D JUMP JUMPDEST PUSH2 0xA45 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xA48 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xBD AND CALL 0xF9 0x24 0xC2 0xEA PUSH9 0x11ED554CE0400FC746 PUSH30 0xEF1A9A8D5EB5D77EDBE40F9BA64736F6C63430007010033000000000000 ","sourceMap":"750:316:69:-:0;;;784:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:69;;;;;;;;;;-1:-1:-1;784:76:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:69;;;;;;;;;;-1:-1:-1;784:76:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;784:76:69;;-1:-1:-1;;2118:13:61;;844:4:69;;-1:-1:-1;850:6:69;;2118:13:61;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;2141:17:61;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:61;:14;;-1:-1:-1;;2168:14:61;2180:2;2168:14;;;-1:-1:-1;750:316:69;;-1:-1:-1;;750:316:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;750:316:69;;;-1:-1:-1;750:316:69;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146102d8578063a457c2d714610311578063a9059cbb1461034a578063dd62ed3e14610383576100df565b806340c10f191461026257806370a082311461029d57806395d89b41146102d0576100df565b806323b872dd116100bd57806323b872dd146101c8578063313ce5671461020b5780633950935114610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec6103be565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610472565b604080519115158252519081900360200190f35b6101b6610488565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561048e565b6102136104ef565b6040805160ff9092168252519081900360200190f35b61019a6004803603604081101561023f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f8565b61029b6004803603604081101561027857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561053b565b005b6101b6600480360360208110156102b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610549565b6100ec610571565b61029b600480360360408110156102ee57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f0565b61019a6004803603604081101561032757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105fa565b61019a6004803603604081101561036057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610640565b6101b66004803603604081101561039957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661064d565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b820191906000526020600020905b81548152906001019060200180831161044b57829003601f168201915b5050505050905090565b600061047f338484610685565b50600192915050565b60025490565b600061049b8484846106f4565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546104e59186916104e0908661019e61081d565b610685565b5060019392505050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e09086610833565b610545828261084c565b5050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104685780601f1061043d57610100808354040283529160200191610468565b6105458282610905565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161047f9185906104e0908661019f61081d565b600061047f3384846106f4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b61071873ffffffffffffffffffffffffffffffffffffffff841615156101986109f5565b61073c73ffffffffffffffffffffffffffffffffffffffff831615156101996109f5565b610747838383610a03565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461077a90826101a061081d565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546107b69082610833565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061082c84841115836109f5565b5050900390565b600082820161084584821015836109f5565b9392505050565b61085860008383610a03565b61087261086d82610867610488565b90610833565b610a08565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546108a29082610833565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61092973ffffffffffffffffffffffffffffffffffffffff8316151561019b6109f5565b61093582600083610a03565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461096890826101b261081d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556109a361086d8261099d610488565b90610a0d565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b816105455761054581610a1b565b505050565b600255565b60006108458383600161081d565b610a45817f42414c0000000000000000000000000000000000000000000000000000000000610a48565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea264697066735822122091bd16f1f924c2ea6811ed554ce0400fc7467d0ef1a9a8d5eb5d77edbe40f9ba64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x9DC29FAC GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x2D8 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x383 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x29D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2D0 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x229 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x3BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x488 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x48E JUMP JUMPDEST PUSH2 0x213 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4F8 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x53B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x549 JUMP JUMPDEST PUSH2 0xEC PUSH2 0x571 JUMP JUMPDEST PUSH2 0x29B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F0 JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5FA JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x640 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x64D JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x44B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49B DUP5 DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x4E5 SWAP2 DUP7 SWAP2 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19E PUSH2 0x81D JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x833 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x84C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x468 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x43D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x468 JUMP JUMPDEST PUSH2 0x545 DUP3 DUP3 PUSH2 0x905 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP1 PUSH2 0x4E0 SWAP1 DUP7 PUSH2 0x19F PUSH2 0x81D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47F CALLER DUP5 DUP5 PUSH2 0x6F4 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x718 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x73C PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x747 DUP4 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x77A SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B6 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x82C DUP5 DUP5 GT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0x845 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0x9F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x858 PUSH1 0x0 DUP4 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH2 0x872 PUSH2 0x86D DUP3 PUSH2 0x867 PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0x833 JUMP JUMPDEST PUSH2 0xA08 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x8A2 SWAP1 DUP3 PUSH2 0x833 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x929 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0x9F5 JUMP JUMPDEST PUSH2 0x935 DUP3 PUSH1 0x0 DUP4 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x968 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0x81D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x9A3 PUSH2 0x86D DUP3 PUSH2 0x99D PUSH2 0x488 JUMP JUMPDEST SWAP1 PUSH2 0xA0D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 PUSH2 0x545 JUMPI PUSH2 0x545 DUP2 PUSH2 0xA1B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x845 DUP4 DUP4 PUSH1 0x1 PUSH2 0x81D JUMP JUMPDEST PUSH2 0xA45 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xA48 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP2 0xBD AND CALL 0xF9 0x24 0xC2 0xEA PUSH9 0x11ED554CE0400FC746 PUSH30 0xEF1A9A8D5EB5D77EDBE40F9BA64736F6C63430007010033000000000000 ","sourceMap":"750:316:69:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:61;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:61;;;;;;;;;:::i;866:99:69:-;;;;;;;;;;;;;;;;-1:-1:-1;866:99:69;;;;;;;;;:::i;:::-;;4022:117:61;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:61;;;;:::i;2448:85::-;;;:::i;971:93:69:-;;;;;;;;;;;;;;;;-1:-1:-1;971:93:69;;;;;;;;;:::i;6967:312:61:-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:61;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:61;;;;;;;;;:::i;4570:149::-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:61;;;;;;;;;;;:::i;2254:81::-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:61;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11033:3:19;5752:35:61;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:61;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;866:99:69:-;934:24;940:9;951:6;934:5;:24::i;:::-;866:99;;:::o;4022:117:61:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;971:93:69;1036:21;1042:6;1050;1036:5;:21::i;6967:312:61:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11107:3:19;7143:36:61;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;4570:149::-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10629:3:19;7880:8:61;:71::i;:::-;7961:72;7970:23;;;;;10697:3:19;7961:8:61;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11175:3:19;8122:21:61;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:68:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:68;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:68:o;8583:297:61:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10827:3:19;9275:8:61;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12271:3:19;9435:22:61;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;11245:183:61:-;;;;:::o;3870:94::-;3937:12;:20;3870:94::o;1404:121:68:-;1462:7;1488:30;1492:1;1495;5194::19;1488:3:68;:30::i;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":{\"keccak256\":\"0x8d2b8caba9d7c313b1e6d13b305f9aae9304ed533b24b56345311f175a02ccd1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://37c52b721d6a59fb11dc5fdd27a633c0af3e0cb7a1044a8f6b86e9ac3d7fe1cb\",\"dweb:/ipfs/QmdMQG1kKsZtyDgxVk3ZLHkoYi442pxf1MfAKVj2B74qLj\"]}},\"version\":1}"}},"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol":{"TestToken":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b50604051620013b0380380620013b0833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260209283015182820190915260018252603160f81b838301528651909450869350839283918791620001d6916003918501906200025e565b508051620001ec9060049060208401906200025e565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526200023f8162000248565b505050620002fa565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a157805160ff1916838001178555620002d1565b82800160010185558215620002d1579182015b82811115620002d1578251825591602001919060010190620002b4565b50620002df929150620002e3565b5090565b5b80821115620002df5760008155600101620002e4565b60805160a05160c0516110896200032760003980610d5f525080610da1525080610d8052506110896000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063a457c2d711610081578063d505accf11610066578063d505accf14610480578063dd62ed3e146104de578063ed24911d1461051957610151565b8063a457c2d71461040e578063a9059cbb1461044757610151565b80637ecebe00116100b25780637ecebe00146103a057806390193b7c146103d357806395d89b411461040657610151565b806370a082311461033457806379cc67901461036757610151565b8063313ce56711610124578063395093511161010957806339509351146102a357806340c10f19146102dc57806342966c681461031757610151565b8063313ce5671461027d5780633644e5151461029b57610151565b806306fdde0314610156578063095ea7b3146101d357806318160ddd1461022057806323b872dd1461023a575b600080fd5b61015e610521565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610198578181015183820152602001610180565b50505050905090810190601f1680156101c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020c600480360360408110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105d5565b604080519115158252519081900360200190f35b6102286105eb565b60408051918252519081900360200190f35b61020c6004803603606081101561025057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105f1565b610285610652565b6040805160ff9092168252519081900360200190f35b61022861065b565b61020c600480360360408110156102b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561066a565b610315600480360360408110156102f257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106ad565b005b6103156004803603602081101561032d57600080fd5b50356106bb565b6102286004803603602081101561034a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106c8565b6103156004803603604081101561037d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106f0565b610228600480360360208110156103b657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610726565b610228600480360360208110156103e957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610737565b61015e61075f565b61020c6004803603604081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107de565b61020c6004803603604081101561045d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610824565b610315600480360360e081101561049657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610831565b610228600480360360408110156104f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610906565b61022861093e565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b5050505050905090565b60006105e2338484610948565b50600192915050565b60025490565b60006105fe8484846109b7565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610648918691610643908661019e610ae0565b610948565b5060019392505050565b60055460ff1690565b600061066561093e565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e29185906106439086610af6565b6106b78282610b0f565b5050565b6106c53382610bc8565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070a826101a16107038633610906565b9190610ae0565b9050610717833383610948565b6107218383610bc8565b505050565b600061073182610737565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e2918590610643908661019f610ae0565b60006105e23384846109b7565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108608c610737565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506108f188826108e8878787610cb8565b886101f8610cf7565b6108fc888888610948565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610665610d5b565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6109db73ffffffffffffffffffffffffffffffffffffffff84161515610198610e26565b6109ff73ffffffffffffffffffffffffffffffffffffffff83161515610199610e26565b610a0a838383610721565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a3d90826101a0610ae0565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610a799082610af6565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610aef8484111583610e26565b5050900390565b6000828201610b088482101583610e26565b9392505050565b610b1b60008383610721565b610b35610b3082610b2a6105eb565b90610af6565b610e34565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610b659082610af6565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610bec73ffffffffffffffffffffffffffffffffffffffff8316151561019b610e26565b610bf882600083610721565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c2b90826101b2610ae0565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c66610b3082610c606105eb565b90610e39565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610d0285610e47565b9050610d18610d12878387610eae565b83610e26565b610d27428410156101b8610e26565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610dc8610fc0565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816106b7576106b781610fc4565b600255565b6000610b0883836001610ae0565b6000610e51610d5b565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610ec082516041146101b9610e26565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f39573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610fb457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526106c5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220da246b101e00bbe16da95e604b93e3b5a40627f2b3515030ca1695d72e060a5064736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x13B0 CODESIZE SUB DUP1 PUSH3 0x13B0 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP4 DUP4 ADD MSTORE DUP7 MLOAD SWAP1 SWAP5 POP DUP7 SWAP4 POP DUP4 SWAP3 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1D6 SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1EC SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x25E JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x23F DUP2 PUSH3 0x248 JUMP JUMPDEST POP POP POP PUSH3 0x2FA JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2A1 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2D1 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2D1 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2D1 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2B4 JUMP JUMPDEST POP PUSH3 0x2DF SWAP3 SWAP2 POP PUSH3 0x2E3 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2DF JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2E4 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x1089 PUSH3 0x327 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xD5F MSTORE POP DUP1 PUSH2 0xDA1 MSTORE POP DUP1 PUSH2 0xD80 MSTORE POP PUSH2 0x1089 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x151 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x519 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x447 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x406 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x367 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x317 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x29B JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x23A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15E PUSH2 0x521 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x66A JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6C8 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x726 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x737 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x75F JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x824 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x831 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x906 JUMP JUMPDEST PUSH2 0x228 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5AE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FE DUP5 DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x648 SWAP2 DUP7 SWAP2 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xAE0 JUMP JUMPDEST PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x93E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x6B7 DUP3 DUP3 PUSH2 0xB0F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x6C5 CALLER DUP3 PUSH2 0xBC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70A DUP3 PUSH2 0x1A1 PUSH2 0x703 DUP7 CALLER PUSH2 0x906 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST SWAP1 POP PUSH2 0x717 DUP4 CALLER DUP4 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x721 DUP4 DUP4 PUSH2 0xBC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 DUP3 PUSH2 0x737 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x860 DUP13 PUSH2 0x737 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x8F1 DUP9 DUP3 PUSH2 0x8E8 DUP8 DUP8 DUP8 PUSH2 0xCB8 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x8FC DUP9 DUP9 DUP9 PUSH2 0x948 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0xD5B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0x9FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xA0A DUP4 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3D SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA79 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAEF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB08 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB1B PUSH1 0x0 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH2 0xB35 PUSH2 0xB30 DUP3 PUSH2 0xB2A PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0xE34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB65 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xBEC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xBF8 DUP3 PUSH1 0x0 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC2B SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC66 PUSH2 0xB30 DUP3 PUSH2 0xC60 PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xE39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD02 DUP6 PUSH2 0xE47 JUMP JUMPDEST SWAP1 POP PUSH2 0xD18 PUSH2 0xD12 DUP8 DUP4 DUP8 PUSH2 0xEAE JUMP JUMPDEST DUP4 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xD27 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xE26 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xDC8 PUSH2 0xFC0 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x6B7 JUMPI PUSH2 0x6B7 DUP2 PUSH2 0xFC4 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP4 DUP4 PUSH1 0x1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE51 PUSH2 0xD5B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC0 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xE26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFB4 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x6C5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0x24 PUSH12 0x101E00BBE16DA95E604B93E3 0xB5 LOG4 MOD 0x27 CALLCODE 0xB3 MLOAD POP ADDRESS 0xCA AND SWAP6 0xD7 0x2E MOD EXP POP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:348:70:-:0;;;898:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:70;;;;;;;;;;-1:-1:-1;898:179:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:70;;;;;;;;;;-1:-1:-1;898:179:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;898:179:70;;;;;;;;;2020:280:60;;;;;;;;;-1:-1:-1;;;2020:280:60;;;;2118:13:61;;898:179:70;;-1:-1:-1;1030:4:70;;-1:-1:-1;1030:4:70;;;;1010:6;;2118:13:61;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:61;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:61;:14;;-1:-1:-1;;2168:14:61;2180:2;2168:14;;;-1:-1:-1;2100:22:60;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:60;2185:108;;1046:24:70::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;836:348;;10570:88:61;10630:9;:21;;-1:-1:-1;;10630:21:61;;;;;;;;;;;;10570:88::o;836:348:70:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;836:348:70;;;-1:-1:-1;836:348:70;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7034":[{"length":32,"start":3456}],"7036":[{"length":32,"start":3489}],"7038":[{"length":32,"start":3423}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd578063a457c2d711610081578063d505accf11610066578063d505accf14610480578063dd62ed3e146104de578063ed24911d1461051957610151565b8063a457c2d71461040e578063a9059cbb1461044757610151565b80637ecebe00116100b25780637ecebe00146103a057806390193b7c146103d357806395d89b411461040657610151565b806370a082311461033457806379cc67901461036757610151565b8063313ce56711610124578063395093511161010957806339509351146102a357806340c10f19146102dc57806342966c681461031757610151565b8063313ce5671461027d5780633644e5151461029b57610151565b806306fdde0314610156578063095ea7b3146101d357806318160ddd1461022057806323b872dd1461023a575b600080fd5b61015e610521565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610198578181015183820152602001610180565b50505050905090810190601f1680156101c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61020c600480360360408110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105d5565b604080519115158252519081900360200190f35b6102286105eb565b60408051918252519081900360200190f35b61020c6004803603606081101561025057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356105f1565b610285610652565b6040805160ff9092168252519081900360200190f35b61022861065b565b61020c600480360360408110156102b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561066a565b610315600480360360408110156102f257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106ad565b005b6103156004803603602081101561032d57600080fd5b50356106bb565b6102286004803603602081101561034a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106c8565b6103156004803603604081101561037d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106f0565b610228600480360360208110156103b657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610726565b610228600480360360208110156103e957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610737565b61015e61075f565b61020c6004803603604081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107de565b61020c6004803603604081101561045d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610824565b610315600480360360e081101561049657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610831565b610228600480360360408110156104f457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610906565b61022861093e565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b820191906000526020600020905b8154815290600101906020018083116105ae57829003601f168201915b5050505050905090565b60006105e2338484610948565b50600192915050565b60025490565b60006105fe8484846109b7565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610648918691610643908661019e610ae0565b610948565b5060019392505050565b60055460ff1690565b600061066561093e565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e29185906106439086610af6565b6106b78282610b0f565b5050565b6106c53382610bc8565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070a826101a16107038633610906565b9190610ae0565b9050610717833383610948565b6107218383610bc8565b505050565b600061073182610737565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105cb5780601f106105a0576101008083540402835291602001916105cb565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105e2918590610643908661019f610ae0565b60006105e23384846109b7565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108608c610737565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012090506108f188826108e8878787610cb8565b886101f8610cf7565b6108fc888888610948565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610665610d5b565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6109db73ffffffffffffffffffffffffffffffffffffffff84161515610198610e26565b6109ff73ffffffffffffffffffffffffffffffffffffffff83161515610199610e26565b610a0a838383610721565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a3d90826101a0610ae0565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610a799082610af6565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610aef8484111583610e26565b5050900390565b6000828201610b088482101583610e26565b9392505050565b610b1b60008383610721565b610b35610b3082610b2a6105eb565b90610af6565b610e34565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610b659082610af6565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610bec73ffffffffffffffffffffffffffffffffffffffff8316151561019b610e26565b610bf882600083610721565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c2b90826101b2610ae0565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610c66610b3082610c606105eb565b90610e39565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610d0285610e47565b9050610d18610d12878387610eae565b83610e26565b610d27428410156101b8610e26565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610dc8610fc0565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816106b7576106b781610fc4565b600255565b6000610b0883836001610ae0565b6000610e51610d5b565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b6000610ec082516041146101b9610e26565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610f39573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610fb457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526106c5917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220da246b101e00bbe16da95e604b93e3b5a40627f2b3515030ca1695d72e060a5064736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x151 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x519 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x447 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x406 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x367 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x39509351 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x317 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x27D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x29B JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x220 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x23A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15E PUSH2 0x521 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x198 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1C5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5D5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x5EB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x250 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x5F1 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x652 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x228 PUSH2 0x65B JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x66A JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6AD JUMP JUMPDEST STOP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x6BB JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6C8 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6F0 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x726 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x737 JUMP JUMPDEST PUSH2 0x15E PUSH2 0x75F JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7DE JUMP JUMPDEST PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x45D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x824 JUMP JUMPDEST PUSH2 0x315 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x831 JUMP JUMPDEST PUSH2 0x228 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x906 JUMP JUMPDEST PUSH2 0x228 PUSH2 0x93E JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x5AE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FE DUP5 DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x648 SWAP2 DUP7 SWAP2 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xAE0 JUMP JUMPDEST PUSH2 0x948 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0x93E JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0x6B7 DUP3 DUP3 PUSH2 0xB0F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x6C5 CALLER DUP3 PUSH2 0xBC8 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70A DUP3 PUSH2 0x1A1 PUSH2 0x703 DUP7 CALLER PUSH2 0x906 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xAE0 JUMP JUMPDEST SWAP1 POP PUSH2 0x717 DUP4 CALLER DUP4 PUSH2 0x948 JUMP JUMPDEST PUSH2 0x721 DUP4 DUP4 PUSH2 0xBC8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x731 DUP3 PUSH2 0x737 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x5CB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x5A0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x5CB JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5E2 SWAP2 DUP6 SWAP1 PUSH2 0x643 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5E2 CALLER DUP5 DUP5 PUSH2 0x9B7 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x860 DUP13 PUSH2 0x737 JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0x8F1 DUP9 DUP3 PUSH2 0x8E8 DUP8 DUP8 DUP8 PUSH2 0xCB8 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xCF7 JUMP JUMPDEST PUSH2 0x8FC DUP9 DUP9 DUP9 PUSH2 0x948 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x665 PUSH2 0xD5B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x9DB PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0x9FF PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xA0A DUP4 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA3D SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA79 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAEF DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB08 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xE26 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB1B PUSH1 0x0 DUP4 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH2 0xB35 PUSH2 0xB30 DUP3 PUSH2 0xB2A PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xAF6 JUMP JUMPDEST PUSH2 0xE34 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB65 SWAP1 DUP3 PUSH2 0xAF6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xBEC PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xBF8 DUP3 PUSH1 0x0 DUP4 PUSH2 0x721 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC2B SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xAE0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xC66 PUSH2 0xB30 DUP3 PUSH2 0xC60 PUSH2 0x5EB JUMP JUMPDEST SWAP1 PUSH2 0xE39 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD02 DUP6 PUSH2 0xE47 JUMP JUMPDEST SWAP1 POP PUSH2 0xD18 PUSH2 0xD12 DUP8 DUP4 DUP8 PUSH2 0xEAE JUMP JUMPDEST DUP4 PUSH2 0xE26 JUMP JUMPDEST PUSH2 0xD27 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xE26 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xDC8 PUSH2 0xFC0 JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x6B7 JUMPI PUSH2 0x6B7 DUP2 PUSH2 0xFC4 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB08 DUP4 DUP4 PUSH1 0x1 PUSH2 0xAE0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE51 PUSH2 0xD5B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEC0 DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xE26 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF39 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xFB4 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x6C5 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDA 0x24 PUSH12 0x101E00BBE16DA95E604B93E3 0xB5 LOG4 MOD 0x27 CALLCODE 0xB3 MLOAD POP ADDRESS 0xCA AND SWAP6 0xD7 0x2E MOD EXP POP PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"836:348:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:61;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:61;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:63;;;:::i;6269:211:61:-;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:61;;;;;;;;;:::i;1083:99:70:-;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:70;;;;;;;;;:::i;:::-;;473:87:62;;;;;;;;;;;;;;;;-1:-1:-1;473:87:62;;:::i;4022:117:61:-;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:61;;;;:::i;866:283:62:-;;;;;;;;;;;;;;;;-1:-1:-1;866:283:62;;;;;;;;;:::i;2006:113:63:-;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:63;;;;:::i;1303:121:51:-;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:51;;;;:::i;2448:85:61:-;;;:::i;6967:312::-;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:61;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:61;;;;;;;;;:::i;1437:508:63:-;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:61:-;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:61;;;;;;;;;;;:::i;1184:113:51:-;;;:::i;2254:81:61:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:61;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11033:3:19;5752:35:61;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:61;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:63:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:61:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:70:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:62:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:61:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:62:-;942:26;971:79;1006:6;11241:3:19;971:30:62;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;2006:113:63:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:63:o;1303:121:51:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:61:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11107:3:19;7143:36:61;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:63:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13132:3:19;1792:21:63;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:61:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:51:-;1244:7;1270:20;:18;:20::i;10034:213:61:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10629:3:19;7880:8:61;:71::i;:::-;7961:72;7970:23;;;;;10697:3:19;7961:8:61;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11175:3:19;8122:21:61;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:68:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:68;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:68:o;8583:297:61:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10827:3:19;9275:8:61;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12271:3:19;9435:22:61;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:51:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:51;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:51:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12598:3:19;2487:8:51;:63::i;:::-;-1:-1:-1;;;2884:19:51;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:51:o;2386:188:60:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:61:-;3937:12;:20;3870:94::o;1404:121:68:-;1462:7;1488:30;1492:1;1495;5194::19;1488:3:68;:30::i;3199:183:60:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:51:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12655:3:19;3082:8:51;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:51;;;;;;-1:-1:-1;;3728:30:51;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:51:o;3433:187:60:-;3595:9;;3570:44::o;1459:126:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":\"TestToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x6a1c952de46f46c608231dfd68986fba02d7cff3c4abfe5708497f04e6ca0358\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://82855be50bfe977a14fb684384790f19a8bbdf1937b69a89608c2ad51817e32a\",\"dweb:/ipfs/Qmbf8L4dQSFguPD4CCmEFXjDn2HBxtCbJjU2C3qYRkmkkb\"]}},\"version\":1}"}},"@balancer-labs/v2-vault/contracts/AssetHelpers.sol":{"AssetHelpers":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":\"AssetHelpers\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]}},\"version\":1}"}},"contracts/BALTokenHolder.sol":{"BALTokenHolder":{"abi":[{"inputs":[{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"},{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"string","name":"name","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sweepTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220190703275dc58000370577b8761f7646e64ae8ca4ae44e0ce770fe003b0241ac64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT SMOD SUB 0x27 0x5D 0xC5 DUP1 STOP CALLDATACOPY SDIV PUSH24 0xB8761F7646E64AE8CA4AE44E0CE770FE003B0241AC64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1563:1294:72:-:0;;;1751:465;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1751:465:72;;;;;;;;;;-1:-1:-1;1751:465:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1751:465:72;;-1:-1:-1;;1143:4:54;2049:46:48;;-1:-1:-1;;;1162:14:54;;;;;::::1;::::0;2157:30:72;;;;::::1;::::0;2197:12;;::::1;::::0;1119:31:54;;2197:12:72::1;::::0;::::1;::::0;::::1;:::i;:::-;;1751:465:::0;;;1563:1294;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1563:1294:72;;;-1:-1:-1;1563:1294:72;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3980":[{"length":32,"start":713}],"4804":[{"length":32,"start":1055}],"8810":[{"length":32,"start":830},{"length":32,"start":1219},{"length":32,"start":1287}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220190703275dc58000370577b8761f7646e64ae8ca4ae44e0ce770fe003b0241ac64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT SMOD SUB 0x27 0x5D 0xC5 DUP1 STOP CALLDATACOPY SDIV PUSH24 0xB8761F7646E64AE8CA4AE44E0CE770FE003B0241AC64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1563:1294:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2607:430:48;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:48;;;;:::i;:::-;;;;;;;;;;;;;;;;2600:255:72;;;;;;;;;;;;;;;;-1:-1:-1;2600:255:72;;;;;;;;;;;;;;;;;;:::i;:::-;;1247:79:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1386:109;;;:::i;2222:105:72:-;;;:::i;2434:160::-;;;;;;;;;;;;;;;;-1:-1:-1;2434:160:72;;;;;;;;;:::i;2333:95::-;2416:5;2409:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2384:13;;2409:12;;2416:5;;2409:12;;2416:5;2409:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2333:95;:::o;2607:430:48:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;2600:255:72:-;2276:21:48;:19;:21::i;:::-;2758:14:72::1;2749:23;;:5;:23;;;;2741:52;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;2803:45;:26;::::0;::::1;2830:9:::0;2841:6;2803:26:::1;:45::i;:::-;2600:255:::0;;;:::o;1247:79:54:-;1313:6;1247:79;:::o;1386:109::-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1462:26:54;;-1:-1:-1;1386:109:54;:::o;2222:105:72:-;2306:14;2222:105;:::o;2434:160::-;2276:21:48;:19;:21::i;:::-;2533:54:72::1;:35;2540:14;2533:35;2569:9:::0;2580:6;2533:35:::1;:54::i;:::-;2434:160:::0;;:::o;2420:181:48:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;:::-;2420:181;:::o;1514:214:67:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;1501:178:54:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1612:60:54;;1501:178;-1:-1:-1;;;1501:178:54:o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:67:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:67;3143:56;11301:3:19;3134:8:67;:97::i;:::-;2324:914;;;;:::o;1459:126:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getBalancerToken()":"c0039699","getName()":"17d7de7c","getVault()":"8d928af8","sweepTokens(address,address,uint256)":"8b6ca32c","withdrawFunds(address,uint256)":"c1075329"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"sweepTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract simply holds the BAL token and delegates to Balancer Governance the permission to withdraw it. It is intended to serve as the recipient of automated BAL minting via the liquidity mining gauges, allowing for the final recipient of the funds to be configurable without having to alter the gauges themselves. There is also a separate auxiliary function to sweep any non-BAL tokens sent here by mistake.\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BALTokenHolder.sol\":\"BALTokenHolder\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/BALTokenHolder.sol\":{\"keccak256\":\"0xb936f1fbc189eb2808ca9bcee946c49c6ad1f74bce8e0a52ca04de7d044b273c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://389a375096bb7fd2f068aec63b00add80ce7cac5f7a636d168baf6e4ce49b3e3\",\"dweb:/ipfs/QmceaHRaLRhXfsDPH7vtGekAPs3w9yWVca4jH39ipYJjWd\"]}},\"version\":1}"}},"contracts/BALTokenHolderFactory.sol":{"BALTokenHolderFactory":{"abi":[{"inputs":[{"internalType":"contract IBalancerToken","name":"balancerToken","type":"address"},{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract BALTokenHolder","name":"balTokenHolder","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"}],"name":"BALTokenHolderCreated","type":"event"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"create","outputs":[{"internalType":"contract IBALTokenHolder","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBalancerToken","outputs":[{"internalType":"contract IBalancerToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isHolderFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610f3e380380610f3e8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c610ec061007e600039806101a45250806103a45250610ec06000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806336390717146100515780638d928af814610098578063b6a46b3b146100c9578063c00396991461016f575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610177565b604080519115158252519081900360200190f35b6100a06101a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a0600480360360208110156100df57600080fd5b8101906020810181356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184600183028401116401000000008311171561012e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101c6945050505050565b6100a06103a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806101d16103a2565b6101d96101a2565b846040516101e6906103c6565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055805193845283820181815288519185019190915287519495507f59750620eb9a4ec5e0719f2a764a31cf79c10817ba43fd86384231337e71db94948694899490936060850192908601918190849084905b83811015610361578181015183820152602001610349565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ab7806103d48339019056fe60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220190703275dc58000370577b8761f7646e64ae8ca4ae44e0ce770fe003b0241ac64736f6c63430007010033a264697066735822122067072c071e26cd9a0eaa1ed55440ab447cfe6d0baac54bb1cb35e6a685d474c764736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF3E CODESIZE SUB DUP1 PUSH2 0xF3E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xEC0 PUSH2 0x7E PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1A4 MSTORE POP DUP1 PUSH2 0x3A4 MSTORE POP PUSH2 0xEC0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36390717 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0xB6A46B3B EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x16F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x3A2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH2 0x3A2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1A2 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP1 PUSH2 0x3C6 JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x285 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP3 ADD DUP2 DUP2 MSTORE DUP9 MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 MLOAD SWAP5 SWAP6 POP PUSH32 0x59750620EB9A4EC5E0719F2A764A31CF79C10817BA43FD86384231337E71DB94 SWAP5 DUP7 SWAP5 DUP10 SWAP5 SWAP1 SWAP4 PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x361 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x349 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x38E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAB7 DUP1 PUSH2 0x3D4 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT SMOD SUB 0x27 0x5D 0xC5 DUP1 STOP CALLDATACOPY SDIV PUSH24 0xB8761F7646E64AE8CA4AE44E0CE770FE003B0241AC64736F PUSH13 0x63430007010033A26469706673 PC 0x22 SLT KECCAK256 PUSH8 0x72C071E26CD9A0E 0xAA 0x1E 0xD5 SLOAD BLOCKHASH 0xAB DIFFICULTY PUSH29 0xFE6D0BAAC54BB1CB35E6A685D474C764736F6C63430007010033000000 ","sourceMap":"1071:1092:73:-:0;;;1365:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1365:127:73;;;;;;;-1:-1:-1;;;;;;1431:30:73;;;;;;;;1471:14;;;;;1071:1092;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"8909":[{"length":32,"start":932}],"8911":[{"length":32,"start":420}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061004c5760003560e01c806336390717146100515780638d928af814610098578063b6a46b3b146100c9578063c00396991461016f575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610177565b604080519115158252519081900360200190f35b6100a06101a2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100a0600480360360208110156100df57600080fd5b8101906020810181356401000000008111156100fa57600080fd5b82018360208201111561010c57600080fd5b8035906020019184600183028401116401000000008311171561012e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506101c6945050505050565b6100a06103a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000806101d16103a2565b6101d96101a2565b846040516101e6906103c6565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610258578181015183820152602001610240565b50505050905090810190601f1680156102855780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f0801580156102a8573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff811660008181526020818152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055805193845283820181815288519185019190915287519495507f59750620eb9a4ec5e0719f2a764a31cf79c10817ba43fd86384231337e71db94948694899490936060850192908601918190849084905b83811015610361578181015183820152602001610349565b50505050905090810190601f16801561038e5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a192915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610ab7806103d48339019056fe60e060405234801561001057600080fd5b50604051610ab7380380610ab78339818101604052606081101561003357600080fd5b8151602083015160408085018051915193959294830192918464010000000082111561005e57600080fd5b90830190602082018581111561007357600080fd5b825164010000000081118282018810171561008d57600080fd5b82525081516020918201929091019080838360005b838110156100ba5781810151838201526020016100a2565b50505050905090810190601f1680156100e75780820380516001836020036101000a031916815260200191505b50604052505030608052506001600160601b0319606083811b821660a05284901b1660c052805161011f906000906020840190610128565b505050506101bb565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061016957805160ff1916838001178555610196565b82800160010185558215610196579182015b8281111561019657825182559160200191906001019061017b565b506101a29291506101a6565b5090565b5b808211156101a257600081556001016101a7565b60805160a05160601c60c05160601c6108c06101f76000398061033e52806104c3528061050752508061041f5250806102c952506108c06000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638d928af81161005b5780638d928af814610195578063aaabadc5146101c6578063c0039699146101ce578063c1075329146101d65761007d565b806317d7de7c14610082578063851c1bb3146100ff5780638b6ca32c14610150575b600080fd5b61008a61020f565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100c45781810151838201526020016100ac565b50505050905090810190601f1680156100f15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61013e6004803603602081101561011557600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b60408051918252519081900360200190f35b6101936004803603606081101561016657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610334565b005b61019d61041d565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61019d610441565b61019d6104c1565b610193600480360360408110156101ec57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104e5565b60008054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b61033c610532565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f43616e6e6f742073776565702042414c00000000000000000000000000000000604482015290519081900360640190fd5b61041873ffffffffffffffffffffffffffffffffffffffff8416838361057b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061044b61041d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b6104ed610532565b61052e73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016838361057b565b5050565b60006105616000357fffffffff00000000000000000000000000000000000000000000000000000000166102c3565b90506105786105708233610608565b6101916106d1565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104189084906106df565b6000610612610441565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561069e57600080fd5b505afa1580156106b2573d6000803e3d6000fd5b505050506040513d60208110156106c857600080fd5b50519392505050565b8161052e5761052e816107fb565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b6020831061074857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161070b565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146107aa576040519150601f19603f3d011682016040523d82523d6000602084013e6107af565b606091505b509150915060008214156107c7573d6000803e3d6000fd5b6107f58151600014806107ed57508180602001905160208110156107ea57600080fd5b50515b6101a26106d1565b50505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610578917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220190703275dc58000370577b8761f7646e64ae8ca4ae44e0ce770fe003b0241ac64736f6c63430007010033a264697066735822122067072c071e26cd9a0eaa1ed55440ab447cfe6d0baac54bb1cb35e6a685d474c764736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x36390717 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0xB6A46B3B EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x16F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x177 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x1A2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x10C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1C6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA0 PUSH2 0x3A2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH2 0x3A2 JUMP JUMPDEST PUSH2 0x1D9 PUSH2 0x1A2 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x1E6 SWAP1 PUSH2 0x3C6 JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x240 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x285 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE DUP1 MLOAD SWAP4 DUP5 MSTORE DUP4 DUP3 ADD DUP2 DUP2 MSTORE DUP9 MLOAD SWAP2 DUP6 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP8 MLOAD SWAP5 SWAP6 POP PUSH32 0x59750620EB9A4EC5E0719F2A764A31CF79C10817BA43FD86384231337E71DB94 SWAP5 DUP7 SWAP5 DUP10 SWAP5 SWAP1 SWAP4 PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 DUP7 ADD SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x361 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x349 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x38E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xAB7 DUP1 PUSH2 0x3D4 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xAB7 CODESIZE SUB DUP1 PUSH2 0xAB7 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP1 DUP6 ADD DUP1 MLOAD SWAP2 MLOAD SWAP4 SWAP6 SWAP3 SWAP5 DUP4 ADD SWAP3 SWAP2 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x11F SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x128 JUMP JUMPDEST POP POP POP POP PUSH2 0x1BB JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x169 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x196 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x196 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x196 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x17B JUMP JUMPDEST POP PUSH2 0x1A2 SWAP3 SWAP2 POP PUSH2 0x1A6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1A2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1A7 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x8C0 PUSH2 0x1F7 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x33E MSTORE DUP1 PUSH2 0x4C3 MSTORE DUP1 PUSH2 0x507 MSTORE POP DUP1 PUSH2 0x41F MSTORE POP DUP1 PUSH2 0x2C9 MSTORE POP PUSH2 0x8C0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC0039699 EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0xC1075329 EQ PUSH2 0x1D6 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x17D7DE7C EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0x8B6CA32C EQ PUSH2 0x150 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x20F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAC JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF1 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x13E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x115 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x334 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x19D PUSH2 0x41D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19D PUSH2 0x441 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x4C1 JUMP JUMPDEST PUSH2 0x193 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x2B9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x28E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2B9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x29C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x33C PUSH2 0x532 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x3F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x43616E6E6F742073776565702042414C00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x418 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x44B PUSH2 0x41D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x490 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x4ED PUSH2 0x532 JUMP JUMPDEST PUSH2 0x52E PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP4 DUP4 PUSH2 0x57B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x561 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2C3 JUMP JUMPDEST SWAP1 POP PUSH2 0x578 PUSH2 0x570 DUP3 CALLER PUSH2 0x608 JUMP JUMPDEST PUSH2 0x191 PUSH2 0x6D1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0x418 SWAP1 DUP5 SWAP1 PUSH2 0x6DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x612 PUSH2 0x441 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x69E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x52E JUMPI PUSH2 0x52E DUP2 PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x748 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x70B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x7C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7F5 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7ED JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0x6D1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x578 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 NOT SMOD SUB 0x27 0x5D 0xC5 DUP1 STOP CALLDATACOPY SDIV PUSH24 0xB8761F7646E64AE8CA4AE44E0CE770FE003B0241AC64736F PUSH13 0x63430007010033A26469706673 PC 0x22 SLT KECCAK256 PUSH8 0x72C071E26CD9A0E 0xAA 0x1E 0xD5 SLOAD BLOCKHASH 0xAB DIFFICULTY PUSH29 0xFE6D0BAAC54BB1CB35E6A685D474C764736F6C63430007010033000000 ","sourceMap":"1071:1092:73:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:137;;;;;;;;;;;;;;;;-1:-1:-1;1710:137:73;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1616:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1853:308;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1853:308:73;;-1:-1:-1;1853:308:73;;-1:-1:-1;;;;;1853:308:73:i;1498:112::-;;;:::i;1710:137::-;1810:30;;1787:4;1810:30;;;;;;;;;;;;;;1710:137::o;1616:88::-;1691:6;1616:88;:::o;1853:308::-;1916:15;1943:21;1986:18;:16;:18::i;:::-;2006:10;:8;:10::i;:::-;2018:4;1967:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2034:39:73;;;:22;:39;;;;;;;;;;;:46;;;;2076:4;2034:46;;;2095:35;;;;;;;;;;;;;;;;;;;;;;1943:80;;-1:-1:-1;2095:35:73;;1943:80;;2125:4;;2095:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2148:6;1853:308;-1:-1:-1;;1853:308:73:o;1498:112::-;1589:14;1498:112;:::o;-1:-1:-1:-;;;;;;;;:::o"},"methodIdentifiers":{"create(string)":"b6a46b3b","getBalancerToken()":"c0039699","getVault()":"8d928af8","isHolderFromFactory(address)":"36390717"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"balancerToken\",\"type\":\"address\"},{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract BALTokenHolder\",\"name\":\"balTokenHolder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"BALTokenHolderCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"contract IBALTokenHolder\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBalancerToken\",\"outputs\":[{\"internalType\":\"contract IBalancerToken\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"}],\"name\":\"isHolderFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BALTokenHolderFactory.sol\":\"BALTokenHolderFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolder.sol\":{\"keccak256\":\"0x4cc57be220fc81a3f3526d1047ddd5d5f92a6b3c51a215d2d3241049918804a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6751b20c83197a80caab65a1a61e3852580cb193b52c6d00d462766c16e55064\",\"dweb:/ipfs/Qmev4gz6NG2VnQshb1mVKsnN6MYMUp8v1Xi727rD6W7utZ\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBALTokenHolderFactory.sol\":{\"keccak256\":\"0x3ea8fab66b0ca4ee8aeb4c84bbca9d365f34ea929f249244d3f9080c8dc9dc1b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://659d93d04dc7b5ba34f7da7bed2da9644ae9e1c1d7aec740bbf097eceb741c23\",\"dweb:/ipfs/QmcHaoRzRZGJeT5UyxqpXNPFis23kMhS4Nj39RBuAveRG5\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/BALTokenHolder.sol\":{\"keccak256\":\"0xb936f1fbc189eb2808ca9bcee946c49c6ad1f74bce8e0a52ca04de7d044b273c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://389a375096bb7fd2f068aec63b00add80ce7cac5f7a636d168baf6e4ce49b3e3\",\"dweb:/ipfs/QmceaHRaLRhXfsDPH7vtGekAPs3w9yWVca4jH39ipYJjWd\"]},\"contracts/BALTokenHolderFactory.sol\":{\"keccak256\":\"0x6a39b4ba36883fccffb7aba968f47506f9da34fbba13083359b24ff6d87ee987\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6a3e7b85da409b6f08ecdd33e6c0bf5e16e8f7c5646a0432e038a0d5181581a0\",\"dweb:/ipfs/QmYiGqYU4Gf8UgtinQa6VGjzQ6FEQ8XtouVXAxTaCAYiqh\"]}},\"version\":1}"}},"contracts/BalancerQueries.sol":{"BalancerQueries":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"queryBatchSwap","outputs":[{"internalType":"int256[]","name":"assetDeltas","type":"int256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"}],"name":"queryExit","outputs":[{"internalType":"uint256","name":"bptIn","type":"uint256"},{"internalType":"uint256[]","name":"amountsOut","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"}],"name":"queryJoin","outputs":[{"internalType":"uint256","name":"bptOut","type":"uint256"},{"internalType":"uint256[]","name":"amountsIn","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"}],"name":"querySwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200187c3803806200187c8339810160408190526200003491620000c9565b806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200006e57600080fd5b505afa15801562000083573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a99190620000c9565b6001600160601b0319606091821b811660805291901b1660a05262000108565b600060208284031215620000db578081fd5b8151620000e881620000ef565b9392505050565b6001600160a01b03811681146200010557600080fd5b50565b60805160601c60a05160601c611727620001556000398061010652806101c9528061039c528061045f5280610693528061080b52806108a75280610919525080610bf852506117276000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e969f6b311610050578063e969f6b3146100a9578063f84d066e146100c9578063fbfa77cf146100e957610067565b80639ebbf05d1461006c578063c7b2c52c14610096575b600080fd5b61007f61007a3660046110ad565b6100fe565b60405161008d92919061165d565b60405180910390f35b61007f6100a43660046110ad565b610394565b6100bc6100b7366004611270565b610564565b60405161008d91906114e9565b6100dc6100d736600461113a565b6107cb565b60405161008d91906114a5565b6100f16108a5565b60405161008d919061155d565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b815260040161015d91906114e9565b604080518083038186803b15801561017457600080fd5b505afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610f15565b509050606060006101c18987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190611117565b90508373ffffffffffffffffffffffffffffffffffffffff166387ec68178b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b505afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610306919061133a565b8e604001516040518863ffffffff1660e01b815260040161032d97969594939291906114f2565b600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611352565b909b909a5098505050505050505050565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b81526004016103f391906114e9565b604080518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190610f15565b509050606060006104578987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c357600080fd5b505afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611117565b90508373ffffffffffffffffffffffffffffffffffffffff16636028bfd48b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b604080516002808252606080830184526000939092919060208301908036833701905050905083604001518160008151811061059c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360600151816001815181106105e857fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020015b61062d610c1a565b8152602001906001900390816106255790505090506040518060a00160405280866000015181526020016000815260200160018152602001866080015181526020018660a001518152508160008151811061068457fe5b602002602001018190525060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f84d066e87602001518486896040518563ffffffff1660e01b81526004016106f4949392919061157e565b600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074a919081019061101d565b905060008660200151600181111561075e57fe5b14156107aa5761078860008260018151811061077657fe5b602002602001015113156103e7610a3d565b8060018151811061079557fe5b602002602001015160000393505050506107c5565b806000815181106107b757fe5b602002602001015193505050505b92915050565b6040517ff84d066e00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f84d066e9061084690889088908890889060040161157e565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089c919081019061101d565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060006060806108d985610a4f565b6040517ff94d466800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f94d46689061094e9089906004016114e9565b60006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a29190810190610f51565b825184519297509095509193506109b99190610aff565b60005b8251811015610a335760008382815181106109d357fe5b60200260200101519050610a2a8383815181106109ec57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610208610a3d565b506001016109bc565b5050509250929050565b81610a4b57610a4b81610b0c565b5050565b606080825167ffffffffffffffff81118015610a6a57600080fd5b50604051908082528060200260200182016040528015610a94578160200160208202803683370190505b50905060005b8351811015610af857610abf848281518110610ab257fe5b6020026020010151610b39565b828281518110610acb57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a9a565b5092915050565b610a4b8183146067610a3d565b610b36817f42414c0000000000000000000000000000000000000000000000000000000000610b5e565b50565b6000610b4482610bd9565b610b5657610b5182610bf3565b6107c5565b6107c5610bf6565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b73ffffffffffffffffffffffffffffffffffffffff161590565b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112610c5c578081fd5b8135610c6f610c6a826116a5565b61167e565b818152915060208083019084810181840286018201871015610c9057600080fd5b60005b84811015610cb8578135610ca6816116cf565b84529282019290820190600101610c93565b505050505092915050565b600082601f830112610cd3578081fd5b8135610ce1610c6a826116a5565b818152915060208083019084810181840286018201871015610d0257600080fd5b60005b84811015610cb857813584529282019290820190600101610d05565b600082601f830112610d31578081fd5b8151610d3f610c6a826116a5565b818152915060208083019084810181840286018201871015610d6057600080fd5b60005b84811015610cb857815184529282019290820190600101610d63565b803580151581146107c557600080fd5b600082601f830112610d9f578081fd5b813567ffffffffffffffff811115610db5578182fd5b610dc86020601f19601f8401160161167e565b9150808252836020828501011115610ddf57600080fd5b8060208401602084013760009082016020015292915050565b80356107c5816116cf565b8035600281106107c557600080fd5b600060808284031215610e23578081fd5b610e2d608061167e565b9050813567ffffffffffffffff80821115610e4757600080fd5b610e5385838601610c4c565b83526020840135915080821115610e6957600080fd5b610e7585838601610cc3565b60208401526040840135915080821115610e8e57600080fd5b50610e9b84828501610d8f565b604083015250610eae8360608401610d7f565b606082015292915050565b600060808284031215610eca578081fd5b610ed4608061167e565b90508135610ee1816116cf565b8152610ef08360208401610d7f565b60208201526040820135610f03816116cf565b6040820152610eae8360608401610d7f565b60008060408385031215610f27578182fd5b8251610f32816116cf565b602084015190925060038110610f46578182fd5b809150509250929050565b600080600060608486031215610f65578081fd5b835167ffffffffffffffff80821115610f7c578283fd5b818601915086601f830112610f8f578283fd5b8151610f9d610c6a826116a5565b80828252602080830192508086018b828387028901011115610fbd578788fd5b8796505b84871015610fe8578051610fd4816116cf565b845260019690960195928101928101610fc1565b508901519097509350505080821115610fff578283fd5b5061100c86828701610d21565b925050604084015190509250925092565b6000602080838503121561102f578182fd5b825167ffffffffffffffff811115611045578283fd5b8301601f81018513611055578283fd5b8051611063610c6a826116a5565b818152838101908385018584028501860189101561107f578687fd5b8694505b838510156110a1578051835260019490940193918501918501611083565b50979650505050505050565b600080600080608085870312156110c2578182fd5b8435935060208501356110d4816116cf565b925060408501356110e4816116cf565b9150606085013567ffffffffffffffff8111156110ff578182fd5b61110b87828801610e12565b91505092959194509250565b600060208284031215611128578081fd5b8151611133816116cf565b9392505050565b60008060008060e0858703121561114f578182fd5b6111598686610e03565b9350602085013567ffffffffffffffff80821115611175578384fd5b818701915087601f830112611188578384fd5b611195610c6a83356116a5565b82358152602080820191908401865b853581101561122f578135860160a0601f19828f030112156111c4578889fd5b6111ce60a061167e565b6020820135815260408201356020820152606082013560408201526080820135606082015260a082013587811115611204578a8bfd5b6112138f602083860101610d8f565b60808301525085525060209384019391909101906001016111a4565b5090965050506040870135915080821115611248578384fd5b5061125587828801610c4c565b9250506112658660608701610eb9565b905092959194509250565b60008060a08385031215611282578182fd5b823567ffffffffffffffff80821115611299578384fd5b9084019060c082870312156112ac578384fd5b6112b660c061167e565b823581526112c78760208501610e03565b602082015260408301356112da816116cf565b60408201526112ec8760608501610df8565b60608201526080830135608082015260a08301358281111561130c578586fd5b61131888828601610d8f565b60a0830152508094505050506113318460208501610eb9565b90509250929050565b60006020828403121561134b578081fd5b5051919050565b60008060408385031215611364578182fd5b82519150602083015167ffffffffffffffff811115611381578182fd5b61138d85828601610d21565b9150509250929050565b6000815180845260208085019450808401835b838110156113dc57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016113aa565b509495945050505050565b6000815180845260208085019450808401835b838110156113dc578151875295820195908201906001016113fa565b60008151808452815b8181101561143b5760208185018101518683018201520161141f565b8181111561144c5782602083870101525b50601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b6020808252825182820181905260009190848201906040850190845b818110156114dd578351835292840192918401916001016114c1565b50909695505050505050565b90815260200190565b600088825273ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060e0606083015261153160e08301876113e7565b8560808401528460a084015282810360c084015261154f8185611416565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060e0820161158d876116c5565b868352602060e08185015281875180845261010093508386019150838382028701019350828901855b82811015611636578786037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000184528151805187528581015186880152604080820151908801526060808201519088015260809081015160a09188018290529061162281890183611416565b9750505092840192908401906001016115b6565b5050505050828103604084015261164d8186611397565b91505061089c6060830184611461565b60008382526040602083015261167660408301846113e7565b949350505050565b60405181810167ffffffffffffffff8111828210171561169d57600080fd5b604052919050565b600067ffffffffffffffff8211156116bb578081fd5b5060209081020190565b60028110610b3657fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3657600080fdfea2646970667358221220defcf97c6e973dfdea71924aa5f5662465d99216eaa445ea43bbfd467e0c658d64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x187C CODESIZE SUB DUP1 PUSH3 0x187C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xC9 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x83 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xA9 SWAP2 SWAP1 PUSH3 0xC9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH3 0x108 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xDB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xE8 DUP2 PUSH3 0xEF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1727 PUSH3 0x155 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x106 MSTORE DUP1 PUSH2 0x1C9 MSTORE DUP1 PUSH2 0x39C MSTORE DUP1 PUSH2 0x45F MSTORE DUP1 PUSH2 0x693 MSTORE DUP1 PUSH2 0x80B MSTORE DUP1 PUSH2 0x8A7 MSTORE DUP1 PUSH2 0x919 MSTORE POP DUP1 PUSH2 0xBF8 MSTORE POP PUSH2 0x1727 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE969F6B3 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xE969F6B3 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF84D066E EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0xE9 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x9EBBF05D EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xC7B2C52C EQ PUSH2 0x96 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP3 SWAP2 SWAP1 PUSH2 0x165D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113A JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14A5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x155D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x1C1 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x265 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x87EC6817 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x306 SWAP2 SWAP1 PUSH2 0x133A JUMP JUMPDEST DUP15 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x383 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1352 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x457 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6028BFD4 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x59C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x62D PUSH2 0xC1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x625 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF84D066E DUP8 PUSH1 0x20 ADD MLOAD DUP5 DUP7 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x74A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x75E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7AA JUMPI PUSH2 0x788 PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x776 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SGT ISZERO PUSH2 0x3E7 PUSH2 0xA3D JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x795 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 SUB SWAP4 POP POP POP POP PUSH2 0x7C5 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF84D066E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF84D066E SWAP1 PUSH2 0x846 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x89C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH2 0x8D9 DUP6 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF94D466800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF94D4668 SWAP1 PUSH2 0x94E SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x97A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF51 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP2 SWAP4 POP PUSH2 0x9B9 SWAP2 SWAP1 PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xA2A DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x208 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x9BC JUMP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xA4B JUMPI PUSH2 0xA4B DUP2 PUSH2 0xB0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA94 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH2 0xABF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB39 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xACB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA4B DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xB36 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xB5E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xB56 JUMPI PUSH2 0xB51 DUP3 PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x7C5 PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC6F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xC90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD PUSH2 0xCA6 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE1 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD05 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD31 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD3F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD63 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDC8 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x167E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7C5 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE23 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE53 DUP6 DUP4 DUP7 ADD PUSH2 0xC4C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE75 DUP6 DUP4 DUP7 ADD PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9B DUP5 DUP3 DUP6 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xECA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xED4 PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP2 MSTORE PUSH2 0xEF0 DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH2 0xF03 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF27 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xF32 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x3 DUP2 LT PUSH2 0xF46 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF7C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF8F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF9D PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0xFBD JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xFE8 JUMPI DUP1 MLOAD PUSH2 0xFD4 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0xFC1 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xFFF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x100C DUP7 DUP3 DUP8 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1045 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1055 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1063 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x107F JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x10A1 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x1083 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10D4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x10E4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x110B DUP8 DUP3 DUP9 ADD PUSH2 0xE12 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1133 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x114F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1159 DUP7 DUP7 PUSH2 0xE03 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1175 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1188 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1195 PUSH2 0xC6A DUP4 CALLDATALOAD PUSH2 0x16A5 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 DUP5 ADD DUP7 JUMPDEST DUP6 CALLDATALOAD DUP2 LT ISZERO PUSH2 0x122F JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP16 SUB ADD SLT ISZERO PUSH2 0x11C4 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH2 0x11CE PUSH1 0xA0 PUSH2 0x167E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1204 JUMPI DUP11 DUP12 REVERT JUMPDEST PUSH2 0x1213 DUP16 PUSH1 0x20 DUP4 DUP7 ADD ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP DUP6 MSTORE POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x11A4 JUMP JUMPDEST POP SWAP1 SWAP7 POP POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1248 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x1255 DUP8 DUP3 DUP9 ADD PUSH2 0xC4C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1265 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1299 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0xC0 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x12AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x12B6 PUSH1 0xC0 PUSH2 0x167E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x12C7 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x12DA DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x12EC DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x130C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1318 DUP9 DUP3 DUP7 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP5 POP POP POP POP PUSH2 0x1331 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1364 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1381 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x138D DUP6 DUP3 DUP7 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x143B JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x141F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x144C JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14DD JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14C1 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1531 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x13E7 JUMP JUMPDEST DUP6 PUSH1 0x80 DUP5 ADD MSTORE DUP5 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x154F DUP2 DUP6 PUSH2 0x1416 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD PUSH2 0x158D DUP8 PUSH2 0x16C5 JUMP JUMPDEST DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0xE0 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH2 0x100 SWAP4 POP DUP4 DUP7 ADD SWAP2 POP DUP4 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP10 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP8 DUP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x1622 DUP2 DUP10 ADD DUP4 PUSH2 0x1416 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15B6 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x164D DUP2 DUP7 PUSH2 0x1397 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x89C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1461 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1676 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x169D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BB JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xFC 0xF9 PUSH29 0x6E973DFDEA71924AA5F5662465D99216EAA445EA43BBFD467E0C658D64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"1600:4665:74:-:0;;;1701:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1741:6;-1:-1:-1;;;;;1741:11:74;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:71;;;;;;;;1766:14:74;;;;::::1;::::0;1600:4665;;345:293:-1;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1394:147::-;-1:-1;;;;;1328:54;;1468:50;;1458:2;;1532:1;;1522:12;1458:2;1452:89;:::o;:::-;1600:4665:74;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"8670":[{"length":32,"start":3064}],"9022":[{"length":32,"start":262},{"length":32,"start":457},{"length":32,"start":924},{"length":32,"start":1119},{"length":32,"start":1683},{"length":32,"start":2059},{"length":32,"start":2215},{"length":32,"start":2329}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100675760003560e01c8063e969f6b311610050578063e969f6b3146100a9578063f84d066e146100c9578063fbfa77cf146100e957610067565b80639ebbf05d1461006c578063c7b2c52c14610096575b600080fd5b61007f61007a3660046110ad565b6100fe565b60405161008d92919061165d565b60405180910390f35b61007f6100a43660046110ad565b610394565b6100bc6100b7366004611270565b610564565b60405161008d91906114e9565b6100dc6100d736600461113a565b6107cb565b60405161008d91906114a5565b6100f16108a5565b60405161008d919061155d565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b815260040161015d91906114e9565b604080518083038186803b15801561017457600080fd5b505afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac9190610f15565b509050606060006101c18987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190611117565b90508373ffffffffffffffffffffffffffffffffffffffff166387ec68178b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b505afa1580156102e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610306919061133a565b8e604001516040518863ffffffff1660e01b815260040161032d97969594939291906114f2565b600060405180830381600087803b15801561034757600080fd5b505af115801561035b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103839190810190611352565b909b909a5098505050505050505050565b6000606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927886040518263ffffffff1660e01b81526004016103f391906114e9565b604080518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104429190610f15565b509050606060006104578987600001516108c9565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104c357600080fd5b505afa1580156104d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fb9190611117565b90508373ffffffffffffffffffffffffffffffffffffffff16636028bfd48b8b8b87878773ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b1580156102ce57600080fd5b604080516002808252606080830184526000939092919060208301908036833701905050905083604001518160008151811061059c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508360600151816001815181106105e857fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020015b61062d610c1a565b8152602001906001900390816106255790505090506040518060a00160405280866000015181526020016000815260200160018152602001866080015181526020018660a001518152508160008151811061068457fe5b602002602001018190525060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f84d066e87602001518486896040518563ffffffff1660e01b81526004016106f4949392919061157e565b600060405180830381600087803b15801561070e57600080fd5b505af1158015610722573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261074a919081019061101d565b905060008660200151600181111561075e57fe5b14156107aa5761078860008260018151811061077657fe5b602002602001015113156103e7610a3d565b8060018151811061079557fe5b602002602001015160000393505050506107c5565b806000815181106107b757fe5b602002602001015193505050505b92915050565b6040517ff84d066e00000000000000000000000000000000000000000000000000000000815260609073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f84d066e9061084690889088908890889060040161157e565b600060405180830381600087803b15801561086057600080fd5b505af1158015610874573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261089c919081019061101d565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060006060806108d985610a4f565b6040517ff94d466800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f94d46689061094e9089906004016114e9565b60006040518083038186803b15801561096657600080fd5b505afa15801561097a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109a29190810190610f51565b825184519297509095509193506109b99190610aff565b60005b8251811015610a335760008382815181106109d357fe5b60200260200101519050610a2a8383815181106109ec57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610208610a3d565b506001016109bc565b5050509250929050565b81610a4b57610a4b81610b0c565b5050565b606080825167ffffffffffffffff81118015610a6a57600080fd5b50604051908082528060200260200182016040528015610a94578160200160208202803683370190505b50905060005b8351811015610af857610abf848281518110610ab257fe5b6020026020010151610b39565b828281518110610acb57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a9a565b5092915050565b610a4b8183146067610a3d565b610b36817f42414c0000000000000000000000000000000000000000000000000000000000610b5e565b50565b6000610b4482610bd9565b610b5657610b5182610bf3565b6107c5565b6107c5610bf6565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b73ffffffffffffffffffffffffffffffffffffffff161590565b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b6040518060a0016040528060008019168152602001600081526020016000815260200160008152602001606081525090565b600082601f830112610c5c578081fd5b8135610c6f610c6a826116a5565b61167e565b818152915060208083019084810181840286018201871015610c9057600080fd5b60005b84811015610cb8578135610ca6816116cf565b84529282019290820190600101610c93565b505050505092915050565b600082601f830112610cd3578081fd5b8135610ce1610c6a826116a5565b818152915060208083019084810181840286018201871015610d0257600080fd5b60005b84811015610cb857813584529282019290820190600101610d05565b600082601f830112610d31578081fd5b8151610d3f610c6a826116a5565b818152915060208083019084810181840286018201871015610d6057600080fd5b60005b84811015610cb857815184529282019290820190600101610d63565b803580151581146107c557600080fd5b600082601f830112610d9f578081fd5b813567ffffffffffffffff811115610db5578182fd5b610dc86020601f19601f8401160161167e565b9150808252836020828501011115610ddf57600080fd5b8060208401602084013760009082016020015292915050565b80356107c5816116cf565b8035600281106107c557600080fd5b600060808284031215610e23578081fd5b610e2d608061167e565b9050813567ffffffffffffffff80821115610e4757600080fd5b610e5385838601610c4c565b83526020840135915080821115610e6957600080fd5b610e7585838601610cc3565b60208401526040840135915080821115610e8e57600080fd5b50610e9b84828501610d8f565b604083015250610eae8360608401610d7f565b606082015292915050565b600060808284031215610eca578081fd5b610ed4608061167e565b90508135610ee1816116cf565b8152610ef08360208401610d7f565b60208201526040820135610f03816116cf565b6040820152610eae8360608401610d7f565b60008060408385031215610f27578182fd5b8251610f32816116cf565b602084015190925060038110610f46578182fd5b809150509250929050565b600080600060608486031215610f65578081fd5b835167ffffffffffffffff80821115610f7c578283fd5b818601915086601f830112610f8f578283fd5b8151610f9d610c6a826116a5565b80828252602080830192508086018b828387028901011115610fbd578788fd5b8796505b84871015610fe8578051610fd4816116cf565b845260019690960195928101928101610fc1565b508901519097509350505080821115610fff578283fd5b5061100c86828701610d21565b925050604084015190509250925092565b6000602080838503121561102f578182fd5b825167ffffffffffffffff811115611045578283fd5b8301601f81018513611055578283fd5b8051611063610c6a826116a5565b818152838101908385018584028501860189101561107f578687fd5b8694505b838510156110a1578051835260019490940193918501918501611083565b50979650505050505050565b600080600080608085870312156110c2578182fd5b8435935060208501356110d4816116cf565b925060408501356110e4816116cf565b9150606085013567ffffffffffffffff8111156110ff578182fd5b61110b87828801610e12565b91505092959194509250565b600060208284031215611128578081fd5b8151611133816116cf565b9392505050565b60008060008060e0858703121561114f578182fd5b6111598686610e03565b9350602085013567ffffffffffffffff80821115611175578384fd5b818701915087601f830112611188578384fd5b611195610c6a83356116a5565b82358152602080820191908401865b853581101561122f578135860160a0601f19828f030112156111c4578889fd5b6111ce60a061167e565b6020820135815260408201356020820152606082013560408201526080820135606082015260a082013587811115611204578a8bfd5b6112138f602083860101610d8f565b60808301525085525060209384019391909101906001016111a4565b5090965050506040870135915080821115611248578384fd5b5061125587828801610c4c565b9250506112658660608701610eb9565b905092959194509250565b60008060a08385031215611282578182fd5b823567ffffffffffffffff80821115611299578384fd5b9084019060c082870312156112ac578384fd5b6112b660c061167e565b823581526112c78760208501610e03565b602082015260408301356112da816116cf565b60408201526112ec8760608501610df8565b60608201526080830135608082015260a08301358281111561130c578586fd5b61131888828601610d8f565b60a0830152508094505050506113318460208501610eb9565b90509250929050565b60006020828403121561134b578081fd5b5051919050565b60008060408385031215611364578182fd5b82519150602083015167ffffffffffffffff811115611381578182fd5b61138d85828601610d21565b9150509250929050565b6000815180845260208085019450808401835b838110156113dc57815173ffffffffffffffffffffffffffffffffffffffff16875295820195908201906001016113aa565b509495945050505050565b6000815180845260208085019450808401835b838110156113dc578151875295820195908201906001016113fa565b60008151808452815b8181101561143b5760208185018101518683018201520161141f565b8181111561144c5782602083870101525b50601f01601f19169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b6020808252825182820181905260009190848201906040850190845b818110156114dd578351835292840192918401916001016114c1565b50909695505050505050565b90815260200190565b600088825273ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525060e0606083015261153160e08301876113e7565b8560808401528460a084015282810360c084015261154f8185611416565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060e0820161158d876116c5565b868352602060e08185015281875180845261010093508386019150838382028701019350828901855b82811015611636578786037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000184528151805187528581015186880152604080820151908801526060808201519088015260809081015160a09188018290529061162281890183611416565b9750505092840192908401906001016115b6565b5050505050828103604084015261164d8186611397565b91505061089c6060830184611461565b60008382526040602083015261167660408301846113e7565b949350505050565b60405181810167ffffffffffffffff8111828210171561169d57600080fd5b604052919050565b600067ffffffffffffffff8211156116bb578081fd5b5060209081020190565b60028110610b3657fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610b3657600080fdfea2646970667358221220defcf97c6e973dfdea71924aa5f5662465d99216eaa445ea43bbfd467e0c658d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x67 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xE969F6B3 GT PUSH2 0x50 JUMPI DUP1 PUSH4 0xE969F6B3 EQ PUSH2 0xA9 JUMPI DUP1 PUSH4 0xF84D066E EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0xFBFA77CF EQ PUSH2 0xE9 JUMPI PUSH2 0x67 JUMP JUMPDEST DUP1 PUSH4 0x9EBBF05D EQ PUSH2 0x6C JUMPI DUP1 PUSH4 0xC7B2C52C EQ PUSH2 0x96 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7F PUSH2 0x7A CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0xFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP3 SWAP2 SWAP1 PUSH2 0x165D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x7F PUSH2 0xA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x10AD JUMP JUMPDEST PUSH2 0x394 JUMP JUMPDEST PUSH2 0xBC PUSH2 0xB7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1270 JUMP JUMPDEST PUSH2 0x564 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH2 0xDC PUSH2 0xD7 CALLDATASIZE PUSH1 0x4 PUSH2 0x113A JUMP JUMPDEST PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x14A5 JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x8A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x8D SWAP2 SWAP1 PUSH2 0x155D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x15D SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x188 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AC SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x1C1 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x241 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x265 SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x87EC6817 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x306 SWAP2 SWAP1 PUSH2 0x133A JUMP JUMPDEST DUP15 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x32D SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x14F2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x347 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x383 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x1352 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3F3 SWAP2 SWAP1 PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x41E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x442 SWAP2 SWAP1 PUSH2 0xF15 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x60 PUSH1 0x0 PUSH2 0x457 DUP10 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x8C9 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4FB SWAP2 SWAP1 PUSH2 0x1117 JUMP JUMPDEST SWAP1 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6028BFD4 DUP12 DUP12 DUP12 DUP8 DUP8 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE PUSH1 0x0 SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x40 ADD MLOAD DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x59C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x5E8 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x62D PUSH2 0xC1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x625 JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH1 0x0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x80 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x684 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x60 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF84D066E DUP8 PUSH1 0x20 ADD MLOAD DUP5 DUP7 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6F4 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x74A SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x75E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7AA JUMPI PUSH2 0x788 PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x776 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SGT ISZERO PUSH2 0x3E7 PUSH2 0xA3D JUMP JUMPDEST DUP1 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x795 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 SUB SWAP4 POP POP POP POP PUSH2 0x7C5 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP4 POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF84D066E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF84D066E SWAP1 PUSH2 0x846 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x157E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x874 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x89C SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x101D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP1 PUSH2 0x8D9 DUP6 PUSH2 0xA4F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF94D466800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF94D4668 SWAP1 PUSH2 0x94E SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x14E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x966 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x97A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x9A2 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xF51 JUMP JUMPDEST DUP3 MLOAD DUP5 MLOAD SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP2 SWAP4 POP PUSH2 0x9B9 SWAP2 SWAP1 PUSH2 0xAFF JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xA33 JUMPI PUSH1 0x0 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x9D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xA2A DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x208 PUSH2 0xA3D JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x9BC JUMP JUMPDEST POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xA4B JUMPI PUSH2 0xA4B DUP2 PUSH2 0xB0C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA94 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0xAF8 JUMPI PUSH2 0xABF DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB39 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xACB JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0xA9A JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA4B DUP2 DUP4 EQ PUSH1 0x67 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0xB36 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xB5E JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB44 DUP3 PUSH2 0xBD9 JUMP JUMPDEST PUSH2 0xB56 JUMPI PUSH2 0xB51 DUP3 PUSH2 0xBF3 JUMP JUMPDEST PUSH2 0x7C5 JUMP JUMPDEST PUSH2 0x7C5 PUSH2 0xBF6 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP1 NOT AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC5C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC6F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST PUSH2 0x167E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xC90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD PUSH2 0xCA6 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xC93 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCD3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xCE1 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD05 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD31 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD3F PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xCB8 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xD63 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDB5 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDC8 PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x167E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x7C5 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x7C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE23 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE2D PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE53 DUP6 DUP4 DUP7 ADD PUSH2 0xC4C JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE75 DUP6 DUP4 DUP7 ADD PUSH2 0xCC3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9B DUP5 DUP3 DUP6 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xECA JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xED4 PUSH1 0x80 PUSH2 0x167E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH2 0xEE1 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP2 MSTORE PUSH2 0xEF0 DUP4 PUSH1 0x20 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH2 0xF03 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0xEAE DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0xD7F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF27 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0xF32 DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x3 DUP2 LT PUSH2 0xF46 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xF65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF7C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xF8F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xF9D PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP12 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0xFBD JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0xFE8 JUMPI DUP1 MLOAD PUSH2 0xFD4 DUP2 PUSH2 0x16CF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0xFC1 JUMP JUMPDEST POP DUP10 ADD MLOAD SWAP1 SWAP8 POP SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0xFFF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x100C DUP7 DUP3 DUP8 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1045 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x1055 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x1063 PUSH2 0xC6A DUP3 PUSH2 0x16A5 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x107F JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x10A1 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x1083 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x10D4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x10E4 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10FF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x110B DUP8 DUP3 DUP9 ADD PUSH2 0xE12 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1128 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1133 DUP2 PUSH2 0x16CF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x114F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1159 DUP7 DUP7 PUSH2 0xE03 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1175 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1188 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1195 PUSH2 0xC6A DUP4 CALLDATALOAD PUSH2 0x16A5 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 DUP5 ADD DUP7 JUMPDEST DUP6 CALLDATALOAD DUP2 LT ISZERO PUSH2 0x122F JUMPI DUP2 CALLDATALOAD DUP7 ADD PUSH1 0xA0 PUSH1 0x1F NOT DUP3 DUP16 SUB ADD SLT ISZERO PUSH2 0x11C4 JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH2 0x11CE PUSH1 0xA0 PUSH2 0x167E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD DUP8 DUP2 GT ISZERO PUSH2 0x1204 JUMPI DUP11 DUP12 REVERT JUMPDEST PUSH2 0x1213 DUP16 PUSH1 0x20 DUP4 DUP7 ADD ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP DUP6 MSTORE POP PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x11A4 JUMP JUMPDEST POP SWAP1 SWAP7 POP POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1248 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x1255 DUP8 DUP3 DUP9 ADD PUSH2 0xC4C JUMP JUMPDEST SWAP3 POP POP PUSH2 0x1265 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xA0 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1282 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1299 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0xC0 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x12AC JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x12B6 PUSH1 0xC0 PUSH2 0x167E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x12C7 DUP8 PUSH1 0x20 DUP6 ADD PUSH2 0xE03 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x12DA DUP2 PUSH2 0x16CF JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x12EC DUP8 PUSH1 0x60 DUP6 ADD PUSH2 0xDF8 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x130C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1318 DUP9 DUP3 DUP7 ADD PUSH2 0xD8F JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP5 POP POP POP POP PUSH2 0x1331 DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xEB9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x134B JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1364 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1381 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x138D DUP6 DUP3 DUP7 ADD PUSH2 0xD21 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13AA JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x13DC JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x13FA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x143B JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x141F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x144C JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 MLOAD AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP4 ADD MLOAD AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x60 DUP2 ADD MLOAD ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14DD JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x14C1 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP9 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0xE0 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1531 PUSH1 0xE0 DUP4 ADD DUP8 PUSH2 0x13E7 JUMP JUMPDEST DUP6 PUSH1 0x80 DUP5 ADD MSTORE DUP5 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 DUP2 SUB PUSH1 0xC0 DUP5 ADD MSTORE PUSH2 0x154F DUP2 DUP6 PUSH2 0x1416 JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 ADD PUSH2 0x158D DUP8 PUSH2 0x16C5 JUMP JUMPDEST DUP7 DUP4 MSTORE PUSH1 0x20 PUSH1 0xE0 DUP2 DUP6 ADD MSTORE DUP2 DUP8 MLOAD DUP1 DUP5 MSTORE PUSH2 0x100 SWAP4 POP DUP4 DUP7 ADD SWAP2 POP DUP4 DUP4 DUP3 MUL DUP8 ADD ADD SWAP4 POP DUP3 DUP10 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1636 JUMPI DUP8 DUP7 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP8 MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP9 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP9 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x1622 DUP2 DUP10 ADD DUP4 PUSH2 0x1416 JUMP JUMPDEST SWAP8 POP POP POP SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x15B6 JUMP JUMPDEST POP POP POP POP POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x164D DUP2 DUP7 PUSH2 0x1397 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x89C PUSH1 0x60 DUP4 ADD DUP5 PUSH2 0x1461 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP3 MSTORE PUSH1 0x40 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x1676 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x13E7 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x169D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x16BB JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB36 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xFC 0xF9 PUSH29 0x6E973DFDEA71924AA5F5662465D99216EAA445EA43BBFD467E0C658D64 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"1600:4665:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4107:736;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4849;;;;;;:::i;:::-;;:::i;1793:1993::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3792:309::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1665:29::-;;;:::i;:::-;;;;;;;:::i;4107:736::-;4281:14;4297:26;4336:12;4354:5;:13;;;4368:6;4354:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4335:40;;;4386:25;4413:23;4440:53;4470:6;4478:7;:14;;;4440:29;:53::i;:::-;4385:108;;;;4503:36;4542:5;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4503:71;;4617:4;4607:25;;;4646:6;4666;4686:9;4709:8;4731:15;4760:13;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4810:7;:16;;;4607:229;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4607:229:74;;;;;;;;;;;;:::i;:::-;4585:251;;;;-1:-1:-1;4107:736:74;-1:-1:-1;;;;;;;;;4107:736:74:o;4849:::-;5023:13;5038:27;5078:12;5096:5;:13;;;5110:6;5096:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5077:40;;;5128:25;5155:23;5182:53;5212:6;5220:7;:14;;;5182:29;:53::i;:::-;5127:108;;;;5245:36;5284:5;:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5245:71;;5359:4;5349:25;;;5388:6;5408;5428:9;5451:8;5473:15;5502:13;:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1793:1993;2337:15;;;2350:1;2337:15;;;2312:22;2337:15;;;;;1936:7;;2312:22;;2337:15;2350:1;2337:15;;;;;;;;;;-1:-1:-1;2337:15:74;2312:40;;2374:10;:18;;;2362:6;2369:1;2362:9;;;;;;;;;;;;;:30;;;;;;;;;;;2414:10;:19;;;2402:6;2409:1;2402:9;;;;;;;;:31;;;;;:9;;;;;;;;;;;:31;2482:29;;;2509:1;2482:29;;;;;;;;;2444:35;;2482:29;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2444:67;;2532:212;;;;;;;;2575:10;:17;;;2532:212;;;;2620:1;2532:212;;;;2650:1;2532:212;;;;2673:10;:17;;;2532:212;;;;2714:10;:19;;;2532:212;;;2521:5;2527:1;2521:8;;;;;;;;;;;;;:223;;;;2755:27;2785:5;:20;;;2806:10;:15;;;2823:5;2830:6;2838:5;2785:59;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2785:59:74;;;;;;;;;;;;:::i;:::-;2755:89;-1:-1:-1;3191:24:74;3172:10;:15;;;:43;;;;;;;;;3168:612;;;3432:55;3459:1;3441:11;3453:1;3441:14;;;;;;;;;;;;;;:19;;15031:3:19;3432:8:74;:55::i;:::-;3517:11;3529:1;3517:14;;;;;;;;;;;;;;3516:15;;3501:31;;;;;;;3168:612;3754:11;3766:1;3754:14;;;;;;;;;;;;;;3739:30;;;;;1793:1993;;;;;:::o;3792:309::-;4046:48;;;;;4000:27;;4046:20;:5;:20;;;;:48;;4067:4;;4073:5;;4080:6;;4088:5;;4046:48;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4046:48:74;;;;;;;;;;;;:::i;:::-;4039:55;3792:309;-1:-1:-1;;;;;3792:309:74:o;1665:29::-;;;:::o;5591:672::-;5725:25;5752:23;5791:28;5829:30;5862:34;5881:14;5862:18;:34::i;:::-;5951:27;;;;;5829:67;;-1:-1:-1;5951:19:74;:5;:19;;;;:27;;5971:6;;5951:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5951:27:74;;;;;;;;;;;;:::i;:::-;6024:19;;6045:21;;5907:71;;-1:-1:-1;5907:71:74;;-1:-1:-1;5907:71:74;;-1:-1:-1;5988:79:74;;6024:19;5988:35;:79::i;:::-;6083:9;6078:179;6102:12;:19;6098:1;:23;6078:179;;;6142:12;6157;6170:1;6157:15;;;;;;;;;;;;;;6142:30;;6186:60;6204:14;6219:1;6204:17;;;;;;;;;;;;;;6195:26;;:5;:26;;;14057:3:19;6186:8:74;:60::i;:::-;-1:-1:-1;6123:3:74;;6078:179;;;;5591:672;;;;;;;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;2218:303:71:-;2293:15;2320:22;2358:6;:13;2345:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2345:27:71;;2320:52;;2387:9;2382:110;2406:6;:13;2402:1;:17;2382:110;;;2452:29;2471:6;2478:1;2471:9;;;;;;;;;;;;;;2452:18;:29::i;:::-;2440:6;2447:1;2440:9;;;;;;;;:41;;;;:9;;;;;;;;;;;:41;2421:3;;2382:110;;;-1:-1:-1;2508:6:71;2218:303;-1:-1:-1;;2218:303:71:o;920:131:53:-;998:46;1012:1;1007;:6;5826:3:19;998:8:53;:46::i;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1982:139:71:-;2047:6;2072:13;2079:5;2072:6;:13::i;:::-;:42;;2098:16;2108:5;2098:9;:16::i;:::-;2072:42;;;2088:7;:5;:7::i;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1705:105:71;1781:22;;;;1705:105::o;2762:110::-;2858:5;2762:110::o;1528:76::-;1592:5;1528:76;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;462:752::-;;594:3;587:4;579:6;575:17;571:27;561:2;;-1:-1;;602:12;561:2;649:6;636:20;671:95;686:79;758:6;686:79;:::i;:::-;671:95;:::i;:::-;794:21;;;662:104;-1:-1;838:4;851:14;;;;826:17;;;940;;;931:27;;;;928:36;-1:-1;925:2;;;977:1;;967:12;925:2;1002:1;987:221;1012:6;1009:1;1006:13;987:221;;;5877:6;5864:20;5889:48;5931:5;5889:48;:::i;:::-;1080:65;;1159:14;;;;1187;;;;1034:1;1027:9;987:221;;;991:14;;;;;554:660;;;;:::o;3602:707::-;;3719:3;3712:4;3704:6;3700:17;3696:27;3686:2;;-1:-1;;3727:12;3686:2;3774:6;3761:20;3796:80;3811:64;3868:6;3811:64;:::i;3796:80::-;3904:21;;;3787:89;-1:-1;3948:4;3961:14;;;;3936:17;;;4050;;;4041:27;;;;4038:36;-1:-1;4035:2;;;4087:1;;4077:12;4035:2;4112:1;4097:206;4122:6;4119:1;4116:13;4097:206;;;12353:20;;4190:50;;4254:14;;;;4282;;;;4144:1;4137:9;4097:206;;4335:722;;4463:3;4456:4;4448:6;4444:17;4440:27;4430:2;;-1:-1;;4471:12;4430:2;4511:6;4505:13;4533:80;4548:64;4605:6;4548:64;:::i;4533:80::-;4641:21;;;4524:89;-1:-1;4685:4;4698:14;;;;4673:17;;;4787;;;4778:27;;;;4775:36;-1:-1;4772:2;;;4824:1;;4814:12;4772:2;4849:1;4834:217;4859:6;4856:1;4853:13;4834:217;;;12501:13;;4927:61;;5002:14;;;;5030;;;;4881:1;4874:9;4834:217;;5065:124;5129:20;;36496:13;;36489:21;39062:32;;39052:2;;39108:1;;39098:12;5334:440;;5435:3;5428:4;5420:6;5416:17;5412:27;5402:2;;-1:-1;;5443:12;5402:2;5490:6;5477:20;33000:18;32992:6;32989:30;32986:2;;;-1:-1;;33022:12;32986:2;5512:64;33163:4;-1:-1;;5428:4;33080:6;33076:17;33072:33;33153:15;5512:64;:::i;:::-;5503:73;;5596:6;5589:5;5582:21;5700:3;33163:4;5691:6;5624;5682:16;;5679:25;5676:2;;;5717:1;;5707:12;5676:2;38177:6;33163:4;5624:6;5620:17;33163:4;5658:5;5654:16;38154:30;38233:1;38215:16;;;33163:4;38215:16;38208:27;5658:5;5395:379;-1:-1;;5395:379::o;5782:160::-;5864:20;;5889:48;5864:20;5889:48;:::i;6510:156::-;6590:20;;39948:1;39938:12;;39928:2;;39964:1;;39954:12;7915:1120;;8037:4;8025:9;8020:3;8016:19;8012:30;8009:2;;;-1:-1;;8045:12;8009:2;8073:20;8037:4;8073:20;:::i;:::-;8064:29;;8158:17;8145:31;8196:18;;8188:6;8185:30;8182:2;;;8173:1;;8218:12;8182:2;8263:89;8348:3;8339:6;8328:9;8324:22;8263:89;:::i;:::-;8245:16;8238:115;8451:2;8440:9;8436:18;8423:32;8409:46;;8196:18;8467:6;8464:30;8461:2;;;8173:1;;8497:12;8461:2;8542:74;8612:3;8603:6;8592:9;8588:22;8542:74;:::i;:::-;8451:2;8528:5;8524:16;8517:100;8710:2;8699:9;8695:18;8682:32;8668:46;;8196:18;8726:6;8723:30;8720:2;;;8173:1;;8756:12;8720:2;;8801:58;8855:3;8846:6;8835:9;8831:22;8801:58;:::i;:::-;8710:2;8787:5;8783:16;8776:84;;8967:46;9009:3;8934:2;8989:9;8985:22;8967:46;:::i;:::-;8934:2;8953:5;8949:16;8942:72;8003:1032;;;;:::o;9077:799::-;;9198:4;9186:9;9181:3;9177:19;9173:30;9170:2;;;-1:-1;;9206:12;9170:2;9234:20;9198:4;9234:20;:::i;:::-;9225:29;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9313:75;;9497:46;9539:3;9464:2;9515:22;;9497:46;:::i;:::-;9464:2;9483:5;9479:16;9472:72;9610:2;9676:9;9672:22;358:20;383:41;418:5;383:41;:::i;:::-;9610:2;9625:16;;9618:83;9808:46;9850:3;9775:2;9826:22;;9808:46;:::i;12564:445::-;;;12719:2;12707:9;12698:7;12694:23;12690:32;12687:2;;;-1:-1;;12725:12;12687:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;12888:2;12961:22;;6424:13;12777:74;;-1:-1;39834:1;39824:12;;39814:2;;-1:-1;;39840:12;39814:2;12896:97;;;;12681:328;;;;;:::o;13016:823::-;;;;13230:2;13218:9;13209:7;13205:23;13201:32;13198:2;;;-1:-1;;13236:12;13198:2;13287:17;13281:24;13325:18;;13317:6;13314:30;13311:2;;;-1:-1;;13347:12;13311:2;13464:6;13453:9;13449:22;;;1391:3;1384:4;1376:6;1372:17;1368:27;1358:2;;-1:-1;;1399:12;1358:2;1439:6;1433:13;1461:95;1476:79;1548:6;1476:79;:::i;1461:95::-;1562:16;1598:6;1591:5;1584:21;1628:4;;1645:3;1641:14;1634:21;;1628:4;1620:6;1616:17;1750:3;1628:4;;1734:6;1730:17;1620:6;1721:27;;1718:36;1715:2;;;-1:-1;;1757:12;1715:2;-1:-1;1783:10;;1777:232;1802:6;1799:1;1796:13;1777:232;;;6048:6;6042:13;6060:48;6102:5;6060:48;:::i;:::-;1870:76;;1824:1;1817:9;;;;;1960:14;;;;1988;;1777:232;;;-1:-1;13524:18;;13518:25;13367:114;;-1:-1;13518:25;-1:-1;;;13552:30;;;13549:2;;;-1:-1;;13585:12;13549:2;;13615:89;13696:7;13687:6;13676:9;13672:22;13615:89;:::i;:::-;13605:99;;;13741:2;13795:9;13791:22;12501:13;13749:74;;13192:647;;;;;:::o;13846:390::-;;13985:2;;13973:9;13964:7;13960:23;13956:32;13953:2;;;-1:-1;;13991:12;13953:2;14042:17;14036:24;14080:18;14072:6;14069:30;14066:2;;;-1:-1;;14102:12;14066:2;14188:22;;2160:4;2148:17;;2144:27;-1:-1;2134:2;;-1:-1;;2175:12;2134:2;2215:6;2209:13;2237:79;2252:63;2308:6;2252:63;:::i;2237:79::-;2344:21;;;2401:14;;;;2376:17;;;2490;;;2481:27;;;;2478:36;-1:-1;2475:2;;;-1:-1;;2517:12;2475:2;-1:-1;2543:10;;2537:216;2562:6;2559:1;2556:13;2537:216;;;6750:13;;2630:60;;2584:1;2577:9;;;;;2704:14;;;;2732;;2537:216;;;-1:-1;14122:98;13947:289;-1:-1;;;;;;;13947:289::o;14243:769::-;;;;;14431:3;14419:9;14410:7;14406:23;14402:33;14399:2;;;-1:-1;;14438:12;14399:2;5276:6;5263:20;14490:63;;14590:2;14633:9;14629:22;72:20;97:33;124:5;97:33;:::i;:::-;14598:63;-1:-1;14698:2;14737:22;;72:20;97:33;72:20;97:33;:::i;:::-;14706:63;-1:-1;14834:2;14819:18;;14806:32;14858:18;14847:30;;14844:2;;;-1:-1;;14880:12;14844:2;14910:86;14988:7;14979:6;14968:9;14964:22;14910:86;:::i;:::-;14900:96;;;14393:619;;;;;;;:::o;15795:325::-;;15941:2;15929:9;15920:7;15916:23;15912:32;15909:2;;;-1:-1;;15947:12;15909:2;6235:6;6229:13;6247:64;6305:5;6247:64;:::i;:::-;15999:105;15903:217;-1:-1;;;15903:217::o;16127:1071::-;;;;;16423:3;16411:9;16402:7;16398:23;16394:33;16391:2;;;-1:-1;;16430:12;16391:2;16492:66;16550:7;16526:22;16492:66;:::i;:::-;16482:76;;16623:2;16612:9;16608:18;16595:32;16647:18;;16639:6;16636:30;16633:2;;;-1:-1;;16669:12;16633:2;16791:6;16780:9;16776:22;;;2953:3;2946:4;2938:6;2934:17;2930:27;2920:2;;-1:-1;;2961:12;2920:2;3030:111;3045:95;3008:6;2995:20;3045:95;:::i;3030:111::-;2995:20;;3169:21;;16623:2;3226:14;;;;3147:16;3201:17;;-1:-1;3306:264;3008:6;2995:20;3328:1;3325:13;3306:264;;;3414:3;3401:17;3205:6;3389:30;6966:4;-1:-1;;3389:30;6949:3;6945:19;;6941:30;6938:2;;;-1:-1;;6974:12;6938:2;7002:20;6966:4;7002:20;:::i;:::-;16623:2;3389:30;;5263:20;7088:16;7081:75;7279:22;3389:30;7279:22;12353:20;16623:2;7244:5;7240:16;7233:75;7432:22;3389:30;7432:22;12353:20;7279:22;7397:5;7393:16;7386:75;7578:22;3389:30;7578:22;12353:20;7432:22;7543:5;7539:16;7532:75;6966:4;3389:30;7685:19;7672:33;16647:18;7717:6;7714:30;7711:2;;;-1:-1;;7747:12;7711:2;7792:58;7846:3;16623:2;7837:6;3389:30;7822:22;;7792:58;:::i;:::-;7578:22;7774:16;;7767:84;-1:-1;3426:81;;-1:-1;16623:2;3521:14;;;;3549;;;;;3353:1;3346:9;3306:264;;;-1:-1;16689:119;;-1:-1;;;7279:22;16858:18;;16845:32;;-1:-1;16886:30;;;16883:2;;;-1:-1;;16919:12;16883:2;;16949:93;17034:7;17025:6;17014:9;17010:22;16949:93;:::i;:::-;16939:103;;;17097:85;17174:7;7432:22;17154:9;17150:22;17097:85;:::i;:::-;17087:95;;16385:813;;;;;;;:::o;17205:573::-;;;17386:3;17374:9;17365:7;17361:23;17357:33;17354:2;;;-1:-1;;17393:12;17354:2;17451:17;17438:31;17489:18;;17481:6;17478:30;17475:2;;;-1:-1;;17511:12;17475:2;17590:22;;;;11195:4;11174:19;;;11170:30;11167:2;;;-1:-1;;11203:12;11167:2;11231:20;11195:4;11231:20;:::i;:::-;5276:6;5263:20;11317:16;11310:75;11479:62;11537:3;11446:2;11517:9;11513:22;11479:62;:::i;:::-;11446:2;11465:5;11461:16;11454:88;11606:2;11679:9;11675:22;5864:20;5889:48;5931:5;5889:48;:::i;:::-;11606:2;11621:16;;11614:90;11802:64;11862:3;11769:2;11838:22;;11802:64;:::i;:::-;11769:2;11788:5;11784:16;11777:90;11930:3;11989:9;11985:22;12353:20;11930:3;11950:5;11946:16;11939:75;17386:3;12096:9;12092:19;12079:33;17489:18;12124:6;12121:30;12118:2;;;-1:-1;;12154:12;12118:2;12199:58;12253:3;12244:6;12233:9;12229:22;12199:58;:::i;:::-;17386:3;12185:5;12181:16;12174:84;;17531:91;;;;;;17677:85;17754:7;11446:2;17734:9;17730:22;17677:85;:::i;:::-;17667:95;;17348:430;;;;;:::o;17785:263::-;;17900:2;17888:9;17879:7;17875:23;17871:32;17868:2;;;-1:-1;;17906:12;17868:2;-1:-1;12501:13;;17862:186;-1:-1;17862:186::o;18055:528::-;;;18212:2;18200:9;18191:7;18187:23;18183:32;18180:2;;;-1:-1;;18218:12;18180:2;12507:6;12501:13;18270:74;;18402:2;18391:9;18387:18;18381:25;18426:18;18418:6;18415:30;18412:2;;;-1:-1;;18448:12;18412:2;18478:89;18559:7;18550:6;18539:9;18535:22;18478:89;:::i;:::-;18468:99;;;18174:409;;;;;:::o;19851:765::-;;20074:5;33980:12;35247:6;35242:3;35235:19;35284:4;;35279:3;35275:14;20086:93;;35284:4;20265:5;33315:14;-1:-1;20304:290;20329:6;20326:1;20323:13;20304:290;;;20390:13;;37246:42;37235:54;24334:65;;18774:14;;;;34715;;;;20351:1;20344:9;20304:290;;;-1:-1;20600:10;;19990:626;-1:-1;;;;;19990:626::o;22549:690::-;;22742:5;33980:12;35247:6;35242:3;35235:19;35284:4;;35279:3;35275:14;22754:93;;35284:4;22918:5;33315:14;-1:-1;22957:260;22982:6;22979:1;22976:13;22957:260;;;23043:13;;23409:37;;19420:14;;;;34715;;;;23004:1;22997:9;22957:260;;23578:323;;23710:5;33980:12;35247:6;35242:3;35235:19;-1:-1;38322:101;38336:6;38333:1;38330:13;38322:101;;;35284:4;38403:11;;;;;38397:18;38384:11;;;;;38377:39;38351:10;38322:101;;;38438:6;38435:1;38432:13;38429:2;;;-1:-1;35284:4;38494:6;35279:3;38485:16;;38478:27;38429:2;-1:-1;38614:2;38594:14;-1:-1;;38590:28;23857:39;;;;35284:4;23857:39;;23658:243;-1:-1;;23658:243::o;26033:837::-;37246:42;;26264:16;26258:23;37235:54;19532:3;19525:45;26444:4;26437:5;26433:16;26427:23;36496:13;36489:21;26444:4;26502:3;26498:14;23302:34;37246:42;26597:4;26590:5;26586:16;26580:23;37235:54;26597:4;26677:3;26673:14;19525:45;;26780:4;26773:5;26769:16;26763:23;36496:13;36489:21;26780:4;26838:3;26834:14;23302:34;26163:707;;:::o;27107:366::-;27282:2;27296:47;;;33980:12;;27267:18;;;35235:19;;;27107:366;;27282:2;33315:14;;;;35275;;;;27107:366;21056:257;21081:6;21078:1;21075:13;21056:257;;;21142:13;;23409:37;;34715:14;;;;18952;;;;21103:1;21096:9;21056:257;;;-1:-1;27349:114;;27253:220;-1:-1;;;;;;27253:220::o;27480:222::-;23409:37;;;27607:2;27592:18;;27578:124::o;27709:1124::-;;23439:5;23416:3;23409:37;37246:42;;36306:5;37235:54;28237:2;28226:9;28222:18;19525:45;37246:42;36306:5;37235:54;28320:2;28309:9;28305:18;19525:45;;28072:3;28357:2;28346:9;28342:18;28335:48;28397:108;28072:3;28061:9;28057:19;28491:6;28397:108;:::i;:::-;23439:5;28584:3;28573:9;28569:19;23409:37;23439:5;28668:3;28657:9;28653:19;23409:37;28722:9;28716:4;28712:20;28706:3;28695:9;28691:19;28684:49;28747:76;28818:4;28809:6;28747:76;:::i;:::-;28739:84;28043:790;-1:-1;;;;;;;;;;28043:790::o;28840:252::-;37246:42;37235:54;;;;24334:65;;28982:2;28967:18;;28953:139::o;29099:1156::-;;29562:3;29551:9;29547:19;37037:46;37077:5;37037:46;:::i;:::-;38046:37;24663:3;24656:61;29692:2;29562:3;29692:2;29681:9;29677:18;29670:48;29732:170;21700:5;33980:12;35247:6;35242:3;35235:19;35275:14;;;;29551:9;35275:14;21712:124;;35275:14;29692:2;21893:6;21889:17;29551:9;21880:27;;21868:39;;29692:2;22009:5;33315:14;-1:-1;22048:423;22073:6;22070:1;22067:13;22048:423;;;22125:20;;;;;22113:33;;22174:13;;25122:23;;23409:37;;25290:16;;;25284:23;25361:14;;;23409:37;25464:4;25453:16;;;25447:23;25524:14;;;23409:37;25620:4;25609:16;;;25603:23;25680:14;;;23409:37;25778:4;25767:16;;;25761:23;25054:4;25804:14;;;25797:38;;;25761:23;25850:71;25045:14;;;25761:23;25850:71;:::i;:::-;22194:134;-1:-1;;;22450:14;;;;34715;;;;22095:1;22088:9;22048:423;;;22052:14;;;;;29950:9;29944:4;29940:20;25464:4;29924:9;29920:18;29913:48;29975:123;30093:4;30084:6;29975:123;:::i;:::-;29967:131;;;30109:136;25620:4;30230:9;30226:18;30217:6;30109:136;:::i;30491:481::-;;23439:5;23416:3;23409:37;30696:2;30814;30803:9;30799:18;30792:48;30854:108;30696:2;30685:9;30681:18;30948:6;30854:108;:::i;:::-;30846:116;30667:305;-1:-1;;;;30667:305::o;30979:256::-;31041:2;31035:9;31067:17;;;31142:18;31127:34;;31163:22;;;31124:62;31121:2;;;31199:1;;31189:12;31121:2;31041;31208:22;31019:216;;-1:-1;31019:216::o;31242:319::-;;31416:18;31408:6;31405:30;31402:2;;;-1:-1;;31438:12;31402:2;-1:-1;31483:4;31471:17;;;31536:15;;31339:222::o;38631:104::-;38713:1;38706:5;38703:12;38693:2;;38719:9;38742:117;37246:42;38829:5;37235:54;38804:5;38801:35;38791:2;;38850:1;;38840:12"},"methodIdentifiers":{"queryBatchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool))":"f84d066e","queryExit(bytes32,address,address,(address[],uint256[],bytes,bool))":"c7b2c52c","queryJoin(bytes32,address,address,(address[],uint256[],bytes,bool))":"9ebbf05d","querySwap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool))":"e969f6b3","vault()":"fbfa77cf"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"_vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"queryBatchSwap\",\"outputs\":[{\"internalType\":\"int256[]\",\"name\":\"assetDeltas\",\"type\":\"int256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryExit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsOut\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"queryJoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bptOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"amountsIn\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"}],\"name\":\"querySwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract simply builds on top of the Balancer V2 architecture to provide useful helpers to users. It connects different functionalities of the protocol components to allow accessing information that would have required a more cumbersome setup if we wanted to provide these already built-in.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BalancerQueries.sol\":\"BalancerQueries\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerQueries.sol\":{\"keccak256\":\"0x745fc8ab86d691812bf311fe0f94acf09d31b18d6b48784dcdfa96096100b1c5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://870d659f080fe5c87d0f18df21cf4777ebf93de9214aeae5ec6034ea796bd3c5\",\"dweb:/ipfs/QmU3HeamVBq7WoQvyWDeWbQYjueBU96Qrn69LQmZyCRwLV\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IBasePool.sol\":{\"keccak256\":\"0x4673e08f6b8e76ffa89155d704a0682a6a98e3c60ca5f28e0c4b964f26b65dbe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://eef030243d480fb6e84943d88c19cfc2b7e17bee800ece7b7be840061f3cc4bb\",\"dweb:/ipfs/QmYCLn4pspMRBdKAhtjc7EjnHQURHrzp844M5722LEbL8D\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IPoolSwapStructs.sol\":{\"keccak256\":\"0xbe4815478a942261e6e2416632342b0e55ff2b0f75c2551ffd79ad9b2326be38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccc137d00935cace955e552f238130a01a9468c2d80c725e4625a25debc5c54b\",\"dweb:/ipfs/QmexvRpcaeERPyZt9BzHZViFb8GevhhhoUBQ3wgDqFUwJx\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BalancerQueries.sol\":{\"keccak256\":\"0x7dc3b7e866b3b1161d30c2529350dca0faa580eadde1bc3f2c2f6e3f30fdb926\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1232040c6b1ee0492ac4b612fa0ffdd48cf69c510bc50cf612707bfd16b97f7\",\"dweb:/ipfs/QmeX4RU2cnZVD36ZmKyPBUJubQSjD5tDsC3gmZBzY21g9G\"]}},\"version\":1}"}},"contracts/BatchRelayerLibrary.sol":{"BatchRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"wstETH","type":"address"},{"internalType":"contract IBalancerMinter","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101606040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b506040516200562d3803806200562d833981016040819052620000599162000209565b818184806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009657600080fd5b505afa158015620000ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d191906200025c565b6001600160601b0319606091821b81166080529082901b1660a05260405181903090620000fe90620001fb565b6200010b92919062000282565b604051809103906000f08015801562000128573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05292901b90911661010052506001600160a01b0381166200015e576000620001d5565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200019a57600080fd5b505af1158015620001af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d591906200025c565b6001600160601b0319606091821b81166101205291901b166101405250620002b5915050565b6107878062004ea683390190565b6000806000606084860312156200021e578283fd5b83516200022b816200029c565b60208501519093506200023e816200029c565b604085015190925062000251816200029c565b809150509250925092565b6000602082840312156200026e578081fd5b81516200027b816200029c565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0381168114620002b257600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160601c6101405160601c614b4f620003576000398061051952806105ad52806105f052806108e4528061093c52806109e2528061243d528061249552508061089052806108c25280610a465280610b02528061253b525080610c85528061172c525080612e515250806115d65250806116d65280611823525050614b4f6000f3fe6080604052600436106101c25760003560e01c806380db15bd116100f7578063b6d2473711610095578063e8210e3c11610064578063e8210e3c146103cb578063ecc02637146103de578063efe69108146103f1578063f3cab68514610404576101c2565b8063b6d2473714610372578063d293f29014610392578063d80952d5146103a5578063db4c0e91146103b8576101c2565b80638d928af8116100d15780638d928af8146103245780638fe4624f14610339578063959fc17a1461034c578063abf6d3991461035f576101c2565b806380db15bd146102eb5780638c57198b146102fe5780638d64cfbc14610311576101c2565b8063433b0865116101645780636d307ea81161013e5780636d307ea8146102875780637ab6e03c1461029a5780637bc008f5146102ad5780637fd0e5d5146102c0576101c2565b8063433b08651461024e578063611b90dd1461026157806365ca480414610274576101c2565b80631c982441116101a05780631c982441146102025780632cbec84e146102155780632e6272ea146102285780633f85d3901461023b576101c2565b80630e248fea146101c75780631089e5e3146101dc57806318369446146101ef575b600080fd5b6101da6101d53660046138cf565b610431565b005b6101da6101ea366004613851565b6104cc565b6101da6101fd366004613f29565b61062f565b6101da61021036600461377f565b610838565b6101da610223366004613851565b610a28565b6101da610236366004614025565b610b29565b6101da610249366004613885565b610c52565b6101da61025c366004613dca565b610d1b565b6101da61026f366004613d20565b610f44565b6101da610282366004613d7a565b61105f565b6101da610295366004613d20565b6111cc565b6101da6102a8366004613dca565b611368565b6101da6102bb366004613d7a565b61146e565b3480156102cc57600080fd5b506102d56115d4565b6040516102e2919061438b565b60405180910390f35b6101da6102f93660046137c4565b6115f8565b6101da61030c366004613a6c565b6116fc565b6101da61031f366004613c87565b6117a7565b34801561033057600080fd5b506102d5611821565b6101da610347366004613b77565b611845565b6101da61035a366004613c06565b611a6f565b6101da61036d366004613d20565b611aec565b34801561037e57600080fd5b506101da61038d366004613cf5565b611c1c565b6101da6103a0366004613d20565b611c56565b6101da6103b3366004613acf565b611e57565b6101da6103c636600461377f565b6123e5565b6101da6103d9366004613d20565b612562565b6101da6103ec36600461399f565b61276d565b6101da6103ff366004613d20565b612865565b34801561041057600080fd5b5061042461041f366004614113565b61290e565b6040516102e29190614a0c565b8060005b818110156104c65783838281811061044957fe5b905060200201602081019061045e9190613747565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b8152600401610489919061438b565b600060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050806001019050610435565b50505050565b6104d582612920565b156104e6576104e38261296b565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e389009061054e908690600401614a0c565b60206040518083038186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e919061412b565b90506105d36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612996565b6001600160a01b0384163014610617576106176001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b61062082612920565b156104c6576104c68282612a98565b3361063d6020890189613747565b6001600160a01b0316148061066657503061065b6020890189613747565b6001600160a01b0316145b61068b5760405162461bcd60e51b8152600401610682906148dc565b60405180910390fd5b60005b8a518110156106f05760008b82815181106106a557fe5b60200260200101516060015190506106bc81612920565b156106e7576106ca8161296b565b8c83815181106106d657fe5b602002602001015160600181815250505b5060010161068e565b5060606106fb611821565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b81526004016107359897969594939291906147d3565b6000604051808303818588803b15801561074e57600080fd5b505af1158015610762573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261078b919081019061390f565b905060005b82811015610829576107b68484838181106107a757fe5b90506040020160200135612920565b6107d25760405162461bcd60e51b81526004016106829061494a565b6108218484838181106107e157fe5b9050604002016020013561081c848787868181106107fb57fe5b905060400201600001358151811061080f57fe5b6020026020010151612aab565b612a98565b600101610790565b50505050505050505050505050565b61084182612920565b156108525761084f8261296b565b91505b6001600160a01b03841630146108b5576001600160a01b038416331461088a5760405162461bcd60e51b8152600401610682906148dc565b6108b5847f000000000000000000000000000000000000000000000000000000000000000084612ab7565b6109096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084612b53565b6040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610971908690600401614a0c565b602060405180830381600087803b15801561098b57600080fd5b505af115801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c3919061412b565b90506001600160a01b0384163014610a0957610a096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b610a1282612920565b15610a2157610a218282612a98565b5050505050565b610a3182612920565b15610a4257610a3f8261296b565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610a91919061438b565b6020604051808303818588803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae3919061412b565b90506001600160a01b0384163014610617576106176001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b33610b376020870187613747565b6001600160a01b03161480610b60575030610b556020870187613747565b6001600160a01b0316145b610b7c5760405162461bcd60e51b8152600401610682906148dc565b610b898660800151612920565b15610ba157610b9b866080015161296b565b60808701525b6000610bab611821565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610bdd9493929190614981565b6020604051808303818588803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c2f919061412b565b9050610c3a82612920565b15610c4957610c498282612a98565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610cbe90879087903390600401614589565b602060405180830381600087803b158015610cd857600080fd5b505af1158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d10919061412b565b905061062082612920565b610d2483612920565b15610d3557610d328361296b565b92505b600082610db457866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190613763565b610e27565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e279190613763565b90506001600160a01b0386163014610e6c576001600160a01b0386163314610e615760405162461bcd60e51b8152600401610682906148dc565b610e6c868286612ab7565b610e806001600160a01b0382168886612b53565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790610ece908990899086908a9060040161455d565b602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f20919061412b565b9050610f2b83612920565b15610f3a57610f3a8382612a98565b5050505050505050565b610f4d82612920565b15610f5e57610f5b8261296b565b91505b6001600160a01b0384163014610fa1576001600160a01b0384163314610f965760405162461bcd60e51b8152600401610682906148dc565b610fa1848684612ab7565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e90610feb9087908790600401614521565b602060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d919061412b565b905061104882612920565b15611057576110578282612a98565b505050505050565b61106881612920565b15611079576110768161296b565b90505b6001600160a01b03831630146110bc576001600160a01b03831633146110b15760405162461bcd60e51b8152600401610682906148dc565b6110bc838583612ab7565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d90611101908490600401614a0c565b600060405180830381600087803b15801561111b57600080fd5b505af115801561112f573d6000803e3d6000fd5b505050506001600160a01b03821630146104c6576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190613763565b9050610a216001600160a01b0382168484612a15565b6111d582612920565b156111e6576111e38261296b565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190613763565b90506001600160a01b038516301461129e576001600160a01b03851633146112935760405162461bcd60e51b8152600401610682906148dc565b61129e858285612ab7565b6112b26001600160a01b0382168785612b53565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906112fc9087908990600401614a15565b602060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134e919061412b565b905061135983612920565b15610c4957610c498382612a98565b61137183612920565b156113825761137f8361296b565b92505b6001600160a01b03851630146113c5576001600160a01b03851633146113ba5760405162461bcd60e51b8152600401610682906148dc565b6113c5858785612ab7565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906114119088908890889060040161453a565b6040805180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190614143565b915050610c3a82612920565b61147781612920565b15611488576114858161296b565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613763565b90506001600160a01b0384163014611540576001600160a01b03841633146115355760405162461bcd60e51b8152600401610682906148dc565b611540848284612ab7565b6115546001600160a01b0382168684612b53565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f659061159b9085908790600401614a15565b600060405180830381600087803b1580156115b557600080fd5b505af11580156115c9573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03841630148061160d575082155b6116295760405162461bcd60e51b815260040161068290614913565b606063fa6e671d60e01b3386866040516024016116489392919061439f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352516116b7928691869101614358565b60408051601f1981840301815291905290506110576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682612c3b565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c65427949061176d9030908a908a908a908a908a908a906004016144c1565b600060405180830381600087803b15801561178757600080fd5b505af115801561179b573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf876117bf611821565b88888888886040518863ffffffff1660e01b81526004016117e69796959493929190614480565b600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03851633148061186457506001600160a01b03851630145b6118805760405162461bcd60e51b8152600401610682906148dc565b600061188b88612cb5565b9050600061189883612920565b6118a3576000611938565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a08231906118e890899060040161438b565b60206040518083038186803b15801561190057600080fd5b505afa158015611914573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611938919061412b565b9050611948888660400151612cbb565b6040860152611955611821565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611987949392919061472d565b6000604051808303818588803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b50505050506119c283612920565b156115c9576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611a0f908a9060040161438b565b60206040518083038186803b158015611a2757600080fd5b505afa158015611a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5f919061412b565b905061179b8461081c8385612ce9565b876001600160a01b0316638fcbaf0c88611a87611821565b8989898989896040518963ffffffff1660e01b8152600401611ab0989796959493929190614437565b600060405180830381600087803b158015611aca57600080fd5b505af1158015611ade573d6000803e3d6000fd5b505050505050505050505050565b611af582612920565b15611b0657611b038261296b565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4157600080fd5b505afa158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190613763565b90506001600160a01b0385163014611bbe576001600160a01b0385163314611bb35760405162461bcd60e51b8152600401610682906148dc565b611bbe858285612ab7565b611bd26001600160a01b0382168785612b53565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e2906112fc9088908890600401614521565b611c2581612920565b15611c3657611c338161296b565b90505b611c52611c41611821565b6001600160a01b0384169083612b53565b5050565b611c5f82612920565b15611c7057611c6d8261296b565b91505b6001600160a01b0384163014611cb3576001600160a01b0384163314611ca85760405162461bcd60e51b8152600401610682906148dc565b611cb3848684612ab7565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d269190613763565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d90611d6e908690600401614a0c565b600060405180830381600087803b158015611d8857600080fd5b505af1158015611d9c573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a0823190611de890309060040161438b565b60206040518083038186803b158015611e0057600080fd5b505afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e38919061412b565b9050611e4e6001600160a01b0383168683612a15565b61135983612920565b6001600160a01b038516331480611e7657506001600160a01b03851630145b611e925760405162461bcd60e51b8152600401610682906148dc565b60608167ffffffffffffffff81118015611eab57600080fd5b50604051908082528060200260200182016040528015611ed5578160200160208202803683370190505b50905060608267ffffffffffffffff81118015611ef157600080fd5b50604051908082528060200260200182016040528015611f1b578160200160208202803683370190505b50905060005b8381101561208b57611f388585838181106107a757fe5b611f545760405162461bcd60e51b81526004016106829061494a565b8551600090868684818110611f6557fe5b9050604002016000013581518110611f7957fe5b60200260200101519050866060015115611fc757611f9681612cff565b848381518110611fa257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612082565b611fd081612d02565b61205d57611fdd81612cff565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612008919061438b565b60206040518083038186803b15801561202057600080fd5b505afa158015612034573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612058919061412b565b612069565b876001600160a01b0316315b83838151811061207557fe5b6020026020010181815250505b50600101611f21565b508460600151156121225761209e611821565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016120cb9291906143c3565b60006040518083038186803b1580156120e357600080fd5b505afa1580156120f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211f9190810190613a15565b90505b612130888660400151612d0f565b604086015261213d611821565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161216e949392919061472d565b600060405180830381600087803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156121bb57600080fd5b506040519080825280602002602001820160405280156121e5578160200160208202803683370190505b509050856060015115612282576121fa611821565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b81526004016122279291906143c3565b60006040518083038186803b15801561223f57600080fd5b505afa158015612253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261227b9190810190613a15565b9050612380565b60005b8481101561237e57865160009087878481811061229e57fe5b90506040020160000135815181106122b257fe5b602002602001015190506122c581612d02565b612352576122d281612cff565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016122fd919061438b565b60206040518083038186803b15801561231557600080fd5b505afa158015612329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234d919061412b565b61235e565b886001600160a01b0316315b83838151811061236a57fe5b602090810291909101015250600101612285565b505b60005b84811015611814576123dd86868381811061239a57fe5b9050604002016020013561081c8584815181106123b357fe5b60200260200101518585815181106123c757fe5b6020026020010151612ce990919063ffffffff16565b600101612383565b6123ee82612920565b156123ff576123fc8261296b565b91505b6001600160a01b0384163014612462576001600160a01b03841633146124375760405162461bcd60e51b8152600401610682906148dc565b612462847f000000000000000000000000000000000000000000000000000000000000000084612ab7565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e906124ca908690600401614a0c565b602060405180830381600087803b1580156124e457600080fd5b505af11580156124f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251c919061412b565b90506001600160a01b0384163014610a0957610a096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b61256b82612920565b1561257c576125798261296b565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b757600080fd5b505afa1580156125cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ef9190613763565b90506001600160a01b0385163014612634576001600160a01b03851633146126295760405162461bcd60e51b8152600401610682906148dc565b612634858285612ab7565b6126486001600160a01b0382168785612b53565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f259061268d908690600401614a0c565b600060405180830381600087803b1580156126a757600080fd5b505af11580156126bb573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a082319061270790309060040161438b565b60206040518083038186803b15801561271f57600080fd5b505afa158015612733573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612757919061412b565b9050611e4e6001600160a01b0388168683612a15565b60005b82811015612801573384848381811061278557fe5b905060a00201606001602081019061279d9190613747565b6001600160a01b031614806127dd5750308484838181106127ba57fe5b905060a0020160600160208101906127d29190613747565b6001600160a01b0316145b6127f95760405162461bcd60e51b8152600401610682906148dc565b600101612770565b5061280a611821565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b81526004016128389291906145e9565b6000604051808303818588803b15801561285157600080fd5b505af1158015610f3a573d6000803e3d6000fd5b61286e82612920565b1561287f5761287c8261296b565b91505b6001600160a01b03841630146128c2576001600160a01b03841633146128b75760405162461bcd60e51b8152600401610682906148dc565b6128c2848684612ab7565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba08765290610feb90869088903090600401614a2c565b600061291982612d36565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b600080600061297984612d36565b9150915061298684612d4d565b1561291957600082559392505050565b6129a5814710156101a3612d94565b6000826001600160a01b0316826040516129be90612cff565b60006040518083038185875af1925050503d80600081146129fb576040519150601f19603f3d011682016040523d82523d6000602084013e612a00565b606091505b50509050612a10816101a4612d94565b505050565b612a108363a9059cbb60e01b8484604051602401612a34929190614521565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612da2565b6000612aa383612e42565b919091555050565b60ff81901d9081180390565b80612ac157612a10565b604080516001808252818301909252606091602080830190803683370190505090508281600081518110612af157fe5b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508281600081518110612b3c57fe5b602002602001018181525050610a21858383612ea0565b8015801590612bf757506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e90612ba4903090869060040161441d565b60206040518083038186803b158015612bbc57600080fd5b505afa158015612bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf4919061412b565b15155b15612c1c57612c1c8363095ea7b360e01b846000604051602401612a34929190614505565b612a108363095ea7b360e01b8484604051602401612a34929190614521565b606060006060846001600160a01b031684604051612c59919061433c565b6000604051808303816000865af19150503d8060008114612c96576040519150601f19603f3d011682016040523d82523d6000602084013e612c9b565b606091505b5091509150612caa8282612fda565b925050505b92915050565b60601c90565b60606000838015612cc857fe5b1415612cde57612cd782613004565b9050612caf565b612caf610136613041565b6000612cf9838311156001612d94565b50900390565b90565b6001600160a01b03161590565b60606000838015612d1c57fe5b1415612d2b57612cd78261306e565b612caf610150613041565b600080612d4283612e42565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b81611c5257611c5281613041565b60006060836001600160a01b031683604051612dbe919061433c565b6000604051808303816000865af19150503d8060008114612dfb576040519150601f19603f3d011682016040523d82523d6000602084013e612e00565b606091505b50915091506000821415612e18573d6000803e3d6000fd5b6104c6815160001480612e3a575081806020019051810190612e3a9190613a50565b6101a2612d94565b60006001612e4f836130b7565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001612e8192919061437d565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015612eba57600080fd5b50604051908082528060200260200182016040528015612ef457816020015b612ee161331c565b815260200190600190039081612ed95790505b50905060005b8351811015612f8c576040805160a081019091528060038152602001858381518110612f2257fe5b60200260200101516001600160a01b03168152602001848381518110612f4457fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110612f7957fe5b6020908102919091010152600101612efa565b50612f95611821565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401612fc09190614697565b600060405180830381600087803b15801561285157600080fd5b60608215612fe9575080612caf565b815115612ff95781518083602001fd5b612caf6101ae613041565b60606000613011836130da565b9050600181600381111561302157fe5b141561303857613030836130f0565b915050612966565b82915050612966565b61306b817f42414c000000000000000000000000000000000000000000000000000000000061319f565b50565b6060600061307b83613200565b9050600081600281111561308b57fe5b141561309a5761303083613216565b60018160028111156130a857fe5b14156130385761303083613279565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600081806020019051810190612caf9190613eb5565b60608060006130fe846132cc565b915091506000805b835181101561316457600084828151811061311d57fe5b6020026020010151905061313081612920565b1561315b5761313e8161296b565b85838151811061314a57fe5b602002602001018181525050600192505b50600101613106565b50806131705784613196565b60018383604051602001613186939291906147a1565b6040516020818303038152906040525b95945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600081806020019051810190612caf9190613e39565b6060600080613224846132ef565b9150915061323182612920565b1561326f5761323f8261296b565b91506000828260405160200161325793929190614780565b60405160208183030381529060405292505050612966565b8392505050612966565b6060600061328683613306565b905061329181612920565b156130385761329f8161296b565b90506001816040516020016132b5929190614769565b604051602081830303815290604052915050612966565b60606000828060200190518101906132e49190613ed1565b909590945092505050565b600080828060200190518101906132e49190613e80565b6000818060200190518101906129199190613e54565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035612caf81614ae9565b60008083601f840112613368578182fd5b50813567ffffffffffffffff81111561337f578182fd5b602083019150836020808302850101111561339957600080fd5b9250929050565b600082601f8301126133b0578081fd5b81356133c36133be82614a72565b614a4b565b8181529150602080830190848101818402860182018710156133e457600080fd5b60005b8481101561340c5781356133fa81614ae9565b845292820192908201906001016133e7565b505050505092915050565b600082601f830112613427578081fd5b81356134356133be82614a72565b818152915060208083019084810160005b8481101561340c578135870160a080601f19838c0301121561346757600080fd5b61347081614a4b565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156134b257600080fd5b6134c08c88858701016135e2565b90820152865250509282019290820190600101613446565b60008083601f8401126134e9578182fd5b50813567ffffffffffffffff811115613500578182fd5b60208301915083602060408302850101111561339957600080fd5b600082601f83011261352b578081fd5b81356135396133be82614a72565b81815291506020808301908481018184028601820187101561355a57600080fd5b60005b8481101561340c5781358452928201929082019060010161355d565b600082601f830112613589578081fd5b81516135976133be82614a72565b8181529150602080830190848101818402860182018710156135b857600080fd5b60005b8481101561340c578151845292820192908201906001016135bb565b8035612caf81614afe565b600082601f8301126135f2578081fd5b813567ffffffffffffffff811115613608578182fd5b61361b6020601f19601f84011601614a4b565b915080825283602082850101111561363257600080fd5b8060208401602084013760009082016020015292915050565b805160038110612caf57600080fd5b803560018110612caf57600080fd5b803560028110612caf57600080fd5b600060808284031215613689578081fd5b6136936080614a4b565b9050813567ffffffffffffffff808211156136ad57600080fd5b6136b9858386016133a0565b835260208401359150808211156136cf57600080fd5b6136db8583860161351b565b602084015260408401359150808211156136f457600080fd5b50613701848285016135e2565b60408301525061371483606084016135d7565b606082015292915050565b600060808284031215613730578081fd5b50919050565b803560ff81168114612caf57600080fd5b600060208284031215613758578081fd5b813561291981614ae9565b600060208284031215613774578081fd5b815161291981614ae9565b60008060008060808587031215613794578283fd5b843561379f81614ae9565b935060208501356137af81614ae9565b93969395505050506040820135916060013590565b600080600080606085870312156137d9578182fd5b84356137e481614ae9565b935060208501356137f481614afe565b9250604085013567ffffffffffffffff80821115613810578384fd5b818701915087601f830112613823578384fd5b813581811115613831578485fd5b886020828501011115613842578485fd5b95989497505060200194505050565b600080600060608486031215613865578081fd5b833561387081614ae9565b95602085013595506040909401359392505050565b600080600060408486031215613899578081fd5b833567ffffffffffffffff8111156138af578182fd5b6138bb86828701613357565b909790965060209590950135949350505050565b600080602083850312156138e1578182fd5b823567ffffffffffffffff8111156138f7578283fd5b61390385828601613357565b90969095509350505050565b60006020808385031215613921578182fd5b825167ffffffffffffffff811115613937578283fd5b8301601f81018513613947578283fd5b80516139556133be82614a72565b8181528381019083850185840285018601891015613971578687fd5b8694505b83851015613993578051835260019490940193918501918501613975565b50979650505050505050565b6000806000604084860312156139b3578081fd5b833567ffffffffffffffff808211156139ca578283fd5b818601915086601f8301126139dd578283fd5b8135818111156139eb578384fd5b87602060a0830285010111156139ff578384fd5b6020928301989097509590910135949350505050565b600060208284031215613a26578081fd5b815167ffffffffffffffff811115613a3c578182fd5b613a4884828501613579565b949350505050565b600060208284031215613a61578081fd5b815161291981614afe565b60008060008060008060c08789031215613a84578384fd5b8635613a8f81614afe565b95506020870135613a9f81614ae9565b945060408701359350613ab58860608901613736565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613ae9578485fd5b87359650613afa8960208a0161365a565b95506040880135613b0a81614ae9565b94506060880135613b1a81614ae9565b9350608088013567ffffffffffffffff80821115613b36578283fd5b613b428b838c01613678565b945060a08a0135915080821115613b57578283fd5b50613b648a828b016134d8565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613b91578081fd5b87359650613ba28960208a0161365a565b95506040880135613bb281614ae9565b94506060880135613bc281614ae9565b9350608088013567ffffffffffffffff811115613bdd578182fd5b613be98a828b01613678565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215613c22578182fd5b8835613c2d81614ae9565b97506020890135613c3d81614ae9565b965060408901359550606089013594506080890135613c5b81614afe565b9350613c6a8a60a08b01613736565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215613ca1578081fd5b8735613cac81614ae9565b96506020880135613cbc81614ae9565b95506040880135945060608801359350613cd98960808a01613736565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613d07578182fd5b8235613d1281614ae9565b946020939093013593505050565b600080600080600060a08688031215613d37578283fd5b8535613d4281614ae9565b94506020860135613d5281614ae9565b93506040860135613d6281614ae9565b94979396509394606081013594506080013592915050565b60008060008060808587031215613d8f578182fd5b8435613d9a81614ae9565b93506020850135613daa81614ae9565b92506040850135613dba81614ae9565b9396929550929360600135925050565b60008060008060008060c08789031215613de2578384fd5b8635613ded81614ae9565b95506020870135613dfd81614ae9565b94506040870135613e0d81614ae9565b9350606087013592506080870135613e2481614afe565b8092505060a087013590509295509295509295565b600060208284031215613e4a578081fd5b612919838361364b565b60008060408385031215613e66578182fd5b613e70848461364b565b9150602083015190509250929050565b600080600060608486031215613e94578081fd5b613e9e858561364b565b925060208401519150604084015190509250925092565b600060208284031215613ec6578081fd5b815161291981614b0c565b600080600060608486031215613ee5578081fd5b8351613ef081614b0c565b602085015190935067ffffffffffffffff811115613f0c578182fd5b613f1886828701613579565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215613f4a578485fd5b613f548d8d613669565b9a5067ffffffffffffffff8060208e01351115613f6f578586fd5b613f7f8e60208f01358f01613417565b9a508060408e01351115613f91578586fd5b613fa18e60408f01358f01613357565b909a509850613fb38e60608f0161371f565b97508060e08e01351115613fc5578586fd5b613fd58e60e08f01358f01613357565b90975095506101008d013594506101208d013593506101408d0135811015613ffb578283fd5b5061400d8d6101408e01358e016134d8565b81935080925050509295989b509295989b9093969950565b600080600080600080610120878903121561403e578384fd5b863567ffffffffffffffff80821115614055578586fd5b9088019060c0828b031215614068578586fd5b61407260c0614a4b565b823581526140838b60208501613669565b6020820152604083013561409681614ae9565b60408201526140a88b6060850161334c565b60608201526080830135608082015260a0830135828111156140c8578788fd5b6140d48c8286016135e2565b60a0830152508098505050506140ed886020890161371f565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b600060208284031215614124578081fd5b5035919050565b60006020828403121561413c578081fd5b5051919050565b60008060408385031215614155578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b858110156141b057813561419581614ae9565b6001600160a01b031687529582019590820190600101614182565b509495945050505050565b60008284526020808501945082825b858110156141b0578135875295820195908201906001016141ca565b6000815180845260208085019450808401835b838110156141b0578151875295820195908201906001016141f9565b15159052565b60008151808452614233816020860160208601614a9f565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561428c5783516001600160a01b031683529284019291840191600101614267565b5050828501519150858103838701526142a581836141e6565b92505050604083015184820360408601526142c0828261421b565b91505060608301516142d56060860182614215565b509392505050565b80356142e881614ae9565b6001600160a01b03908116835260208201359061430482614afe565b901515602084015260408201359061431b82614ae9565b166040830152606081013561432f81614afe565b8015156060840152505050565b6000825161434e818460208701614a9f565b9190910192915050565b6000845161436a818460208901614a9f565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b8181101561440f5785518516835294830194918301916001016143f1565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b868110156145cc57602083356145b181614ae9565b6001600160a01b03168352928301929091019060010161459c565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b8781101561468a57813561461281614b0c565b61461b81614ad5565b83528185013561462a81614ae9565b6001600160a01b0316838601528184013584840152606061464d81840184614a92565b61465982860182614166565b5050608061466981840184614a92565b61467582860182614166565b505060a09283019291909101906001016145ff565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561472057815180516146c981614ad5565b8552808701516001600160a01b03168786015285810151868601526060808201516146f682880182614166565b50506080908101519061470b86820183614166565b505060a09390930192908501906001016146b4565b5091979650505050505050565b60008582526001600160a01b0380861660208401528085166040840152506080606083015261475f6080830184614247565b9695505050505050565b6040810161477684614acb565b9281526020015290565b6060810161478d85614acb565b938152602081019290925260409091015290565b60006147ac85614ad5565b848252606060208301526147c360608301856141e6565b9050826040830152949350505050565b60006101208083016147e48c614adf565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b8281101561488b578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a0918701829052906148778188018361421b565b97860197965050509083019060010161480b565b5050505083810360408501526148a2818a8c614173565b9150506148b260608401886142dd565b82810360e08401526148c58186886141bb565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e0830152602086015161499c81614adf565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c06101808401526149ea6101a084018261421b565b9150506149fa60208301866142dd565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614a6a57600080fd5b604052919050565b600067ffffffffffffffff821115614a88578081fd5b5060209081020190565b6000823561291981614ae9565b60005b83811015614aba578181015183820152602001614aa2565b838111156104c65750506000910152565b6003811061306b57fe5b6004811061306b57fe5b6002811061306b57fe5b6001600160a01b038116811461306b57600080fd5b801515811461306b57600080fd5b6004811061306b57600080fdfea26469706673582212205411e741447ac033dcfe1af38550cf9588ad22af3fab87ad208456a48a82972564736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220ae2986d189807b7f562b5667a0dc32043a64b5fc57d1cf73ab6628ca3f8dd6a864736f6c63430007010033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x562D CODESIZE SUB DUP1 PUSH3 0x562D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x209 JUMP JUMPDEST DUP2 DUP2 DUP5 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD1 SWAP2 SWAP1 PUSH3 0x25C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH3 0xFE SWAP1 PUSH3 0x1FB JUMP JUMPDEST PUSH3 0x10B SWAP3 SWAP2 SWAP1 PUSH3 0x282 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x128 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP3 SWAP1 SHL SWAP1 SWAP2 AND PUSH2 0x100 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x15E JUMPI PUSH1 0x0 PUSH3 0x1D5 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1FE3E48 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x19A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1D5 SWAP2 SWAP1 PUSH3 0x25C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x140 MSTORE POP PUSH3 0x2B5 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH3 0x4EA6 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x21E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x22B DUP2 PUSH3 0x29C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x23E DUP2 PUSH3 0x29C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x251 DUP2 PUSH3 0x29C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x26E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x27B DUP2 PUSH3 0x29C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x4B4F PUSH3 0x357 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x519 MSTORE DUP1 PUSH2 0x5AD MSTORE DUP1 PUSH2 0x5F0 MSTORE DUP1 PUSH2 0x8E4 MSTORE DUP1 PUSH2 0x93C MSTORE DUP1 PUSH2 0x9E2 MSTORE DUP1 PUSH2 0x243D MSTORE DUP1 PUSH2 0x2495 MSTORE POP DUP1 PUSH2 0x890 MSTORE DUP1 PUSH2 0x8C2 MSTORE DUP1 PUSH2 0xA46 MSTORE DUP1 PUSH2 0xB02 MSTORE DUP1 PUSH2 0x253B MSTORE POP DUP1 PUSH2 0xC85 MSTORE DUP1 PUSH2 0x172C MSTORE POP DUP1 PUSH2 0x2E51 MSTORE POP DUP1 PUSH2 0x15D6 MSTORE POP DUP1 PUSH2 0x16D6 MSTORE DUP1 PUSH2 0x1823 MSTORE POP POP PUSH2 0x4B4F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xB6D24737 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x404 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x3B8 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x35F JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x311 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2C0 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x274 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x23B JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x1EF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x38CF JUMP JUMPDEST PUSH2 0x431 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x1EA CALLDATASIZE PUSH1 0x4 PUSH2 0x3851 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3F29 JUMP JUMPDEST PUSH2 0x62F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0x377F JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0x3851 JUMP JUMPDEST PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x3885 JUMP JUMPDEST PUSH2 0xC52 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x3DCA JUMP JUMPDEST PUSH2 0xD1B JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D7A JUMP JUMPDEST PUSH2 0x105F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DCA JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2BB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D7A JUMP JUMPDEST PUSH2 0x146E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x15D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DA PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C4 JUMP JUMPDEST PUSH2 0x15F8 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x3A6C JUMP JUMPDEST PUSH2 0x16FC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C87 JUMP JUMPDEST PUSH2 0x17A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x1821 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x347 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B77 JUMP JUMPDEST PUSH2 0x1845 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x3C06 JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x1AEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF5 JUMP JUMPDEST PUSH2 0x1C1C JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x1C56 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ACF JUMP JUMPDEST PUSH2 0x1E57 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x377F JUMP JUMPDEST PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x2562 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x399F JUMP JUMPDEST PUSH2 0x276D JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x2865 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x424 PUSH2 0x41F CALLDATASIZE PUSH1 0x4 PUSH2 0x4113 JUMP JUMPDEST PUSH2 0x290E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x4A0C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x449 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x45E SWAP2 SWAP1 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x489 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x435 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4D5 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x4E6 JUMPI PUSH2 0x4E3 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x54E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x59E SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x5D3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x617 JUMPI PUSH2 0x617 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x620 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C6 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST CALLER PUSH2 0x63D PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x666 JUMPI POP ADDRESS PUSH2 0x65B PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x68B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x6BC DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x6E7 JUMPI PUSH2 0x6CA DUP2 PUSH2 0x296B JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x68E JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x6FB PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x735 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x762 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x78B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x390F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x829 JUMPI PUSH2 0x7B6 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2920 JUMP JUMPDEST PUSH2 0x7D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x494A JUMP JUMPDEST PUSH2 0x821 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x7E1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x81C DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x7FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x80F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2AAB JUMP JUMPDEST PUSH2 0x2A98 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x790 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x841 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x852 JUMPI PUSH2 0x84F DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x8B5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x88A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x8B5 DUP5 PUSH32 0x0 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x909 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH32 0x0 DUP5 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0x971 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C3 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA09 JUMPI PUSH2 0xA09 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0xA12 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xA21 JUMPI PUSH2 0xA21 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA31 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xA42 JUMPI PUSH2 0xA3F DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA91 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xABE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAE3 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x617 JUMPI PUSH2 0x617 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST CALLER PUSH2 0xB37 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xB60 JUMPI POP ADDRESS PUSH2 0xB55 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xB7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0xB89 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xBA1 JUMPI PUSH2 0xB9B DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x296B JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xBAB PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4981 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2F SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0xC3A DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xC49 JUMPI PUSH2 0xC49 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xCBE SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD10 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x620 DUP3 PUSH2 0x2920 JUMP JUMPDEST PUSH2 0xD24 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD32 DUP4 PUSH2 0x296B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xDB4 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDAF SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST PUSH2 0xE27 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE27 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0xE6C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0xE61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0xE6C DUP7 DUP3 DUP7 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0xE80 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0xECE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x455D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF20 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0xF2B DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xF3A JUMPI PUSH2 0xF3A DUP4 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF4D DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xF5E JUMPI PUSH2 0xF5B DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xFA1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0xF96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0xFA1 DUP5 DUP7 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0xFEB SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4521 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1019 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103D SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1048 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1057 JUMPI PUSH2 0x1057 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1068 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1079 JUMPI PUSH2 0x1076 DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x10BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x10B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x10BC DUP4 DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1101 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x112F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1192 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B6 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH2 0xA21 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x11D5 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x11E6 JUMPI PUSH2 0x11E3 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1235 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1259 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x129E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1293 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x129E DUP6 DUP3 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x12B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x12FC SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A15 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x132A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134E SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1359 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xC49 JUMPI PUSH2 0xC49 DUP4 DUP3 PUSH2 0x2A98 JUMP JUMPDEST PUSH2 0x1371 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1382 JUMPI PUSH2 0x137F DUP4 PUSH2 0x296B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x13C5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x13BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x13C5 DUP6 DUP8 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x1411 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x453A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x143E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1462 SWAP2 SWAP1 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC3A DUP3 PUSH2 0x2920 JUMP JUMPDEST PUSH2 0x1477 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1488 JUMPI PUSH2 0x1485 DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14FB SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1540 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1535 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x1540 DUP5 DUP3 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x1554 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP7 DUP5 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x159B SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x160D JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x1629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x4913 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1648 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x439F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x16B7 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x4358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x1057 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x2C3B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x176D SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1787 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x179B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x17BF PUSH2 0x1821 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17E6 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4480 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1800 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1814 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1864 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188B DUP9 PUSH2 0x2CB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1898 DUP4 PUSH2 0x2920 JUMP JUMPDEST PUSH2 0x18A3 JUMPI PUSH1 0x0 PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x18E8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1938 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1948 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2CBB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1955 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1987 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x472D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x19C2 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x15C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1A0F SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A5F SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x179B DUP5 PUSH2 0x81C DUP4 DUP6 PUSH2 0x2CE9 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1A87 PUSH2 0x1821 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AB0 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4437 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1ADE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1AF5 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1B06 JUMPI PUSH2 0x1B03 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B55 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B79 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1BBE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1BB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x1BBE DUP6 DUP3 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x1BD2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x12FC SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4521 JUMP JUMPDEST PUSH2 0x1C25 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1C36 JUMPI PUSH2 0x1C33 DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1C52 PUSH2 0x1C41 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x2B53 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1C5F DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1C70 JUMPI PUSH2 0x1C6D DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1CB3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1CA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x1CB3 DUP5 DUP7 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D26 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1D6E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1DE8 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E38 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1E4E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP7 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x1359 DUP4 PUSH2 0x2920 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1E76 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1E92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1ED5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F1B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x208B JUMPI PUSH2 0x1F38 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST PUSH2 0x1F54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x494A JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1F65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x1F79 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x1FC7 JUMPI PUSH2 0x1F96 DUP2 PUSH2 0x2CFF JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FA2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2082 JUMP JUMPDEST PUSH2 0x1FD0 DUP2 PUSH2 0x2D02 JUMP JUMPDEST PUSH2 0x205D JUMPI PUSH2 0x1FDD DUP2 PUSH2 0x2CFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2008 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2020 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2034 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2058 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST PUSH2 0x2069 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2075 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1F21 JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2122 JUMPI PUSH2 0x209E PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20CB SWAP3 SWAP2 SWAP1 PUSH2 0x43C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x211F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3A15 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2130 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x213D PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x472D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x21BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21E5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2282 JUMPI PUSH2 0x21FA PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2227 SWAP3 SWAP2 SWAP1 PUSH2 0x43C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x223F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2253 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x227B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3A15 JUMP JUMPDEST SWAP1 POP PUSH2 0x2380 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x237E JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x229E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x22B2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x22C5 DUP2 PUSH2 0x2D02 JUMP JUMPDEST PUSH2 0x2352 JUMPI PUSH2 0x22D2 DUP2 PUSH2 0x2CFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22FD SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x234D SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST PUSH2 0x235E JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x236A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x2285 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1814 JUMPI PUSH2 0x23DD DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x239A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x81C DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x23B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x23C7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2CE9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2383 JUMP JUMPDEST PUSH2 0x23EE DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x23FF JUMPI PUSH2 0x23FC DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2462 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2437 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x2462 DUP5 PUSH32 0x0 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x24CA SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x251C SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA09 JUMPI PUSH2 0xA09 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x256B DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x257C JUMPI PUSH2 0x2579 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25EF SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2634 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x2629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x2634 DUP6 DUP3 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2648 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x268D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x2707 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x271F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2733 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2757 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1E4E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP7 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2801 JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2785 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x279D SWAP2 SWAP1 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x27DD JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x27BA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x27D2 SWAP2 SWAP1 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2770 JUMP JUMPDEST POP PUSH2 0x280A PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2838 SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x286E DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x287F JUMPI PUSH2 0x287C DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x28C2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x28B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x28C2 DUP5 DUP7 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0xFEB SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4A2C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2919 DUP3 PUSH2 0x2D36 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2979 DUP5 PUSH2 0x2D36 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2986 DUP5 PUSH2 0x2D4D JUMP JUMPDEST ISZERO PUSH2 0x2919 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x29A5 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x2D94 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x29BE SWAP1 PUSH2 0x2CFF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x29FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x2A10 DUP2 PUSH2 0x1A4 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2A10 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A34 SWAP3 SWAP2 SWAP1 PUSH2 0x4521 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2DA2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA3 DUP4 PUSH2 0x2E42 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2AC1 JUMPI PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2AF1 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B3C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xA21 DUP6 DUP4 DUP4 PUSH2 0x2EA0 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2BF7 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x2BA4 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x441D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BF4 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2C1C JUMPI PUSH2 0x2C1C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A34 SWAP3 SWAP2 SWAP1 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x2A10 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A34 SWAP3 SWAP2 SWAP1 PUSH2 0x4521 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x433C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C96 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C9B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2CAA DUP3 DUP3 PUSH2 0x2FDA JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2CC8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2CDE JUMPI PUSH2 0x2CD7 DUP3 PUSH2 0x3004 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CAF JUMP JUMPDEST PUSH2 0x2CAF PUSH2 0x136 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF9 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x2D94 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2D1C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2D2B JUMPI PUSH2 0x2CD7 DUP3 PUSH2 0x306E JUMP JUMPDEST PUSH2 0x2CAF PUSH2 0x150 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D42 DUP4 PUSH2 0x2E42 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1C52 JUMPI PUSH2 0x1C52 DUP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x433C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DFB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x2E18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4C6 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x2E3A JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2E3A SWAP2 SWAP1 PUSH2 0x3A50 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2D94 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x2E4F DUP4 PUSH2 0x30B7 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2E81 SWAP3 SWAP2 SWAP1 PUSH2 0x437D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2EBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2EF4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2EE1 PUSH2 0x331C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2ED9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2F8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F44 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F79 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2EFA JUMP JUMPDEST POP PUSH2 0x2F95 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FC0 SWAP2 SWAP1 PUSH2 0x4697 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x2FE9 JUMPI POP DUP1 PUSH2 0x2CAF JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2FF9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2CAF PUSH2 0x1AE PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3011 DUP4 PUSH2 0x30DA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3021 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3038 JUMPI PUSH2 0x3030 DUP4 PUSH2 0x30F0 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2966 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x2966 JUMP JUMPDEST PUSH2 0x306B DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x319F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x307B DUP4 PUSH2 0x3200 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x308B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x309A JUMPI PUSH2 0x3030 DUP4 PUSH2 0x3216 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x30A8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3038 JUMPI PUSH2 0x3030 DUP4 PUSH2 0x3279 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2CAF SWAP2 SWAP1 PUSH2 0x3EB5 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x30FE DUP5 PUSH2 0x32CC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3164 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x311D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3130 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x315B JUMPI PUSH2 0x313E DUP2 PUSH2 0x296B JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x314A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3106 JUMP JUMPDEST POP DUP1 PUSH2 0x3170 JUMPI DUP5 PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3186 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2CAF SWAP2 SWAP1 PUSH2 0x3E39 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x3224 DUP5 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3231 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x326F JUMPI PUSH2 0x323F DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3257 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4780 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x2966 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x2966 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3286 DUP4 PUSH2 0x3306 JUMP JUMPDEST SWAP1 POP PUSH2 0x3291 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x3038 JUMPI PUSH2 0x329F DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x32B5 SWAP3 SWAP2 SWAP1 PUSH2 0x4769 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2966 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x32E4 SWAP2 SWAP1 PUSH2 0x3ED1 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x32E4 SWAP2 SWAP1 PUSH2 0x3E80 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2919 SWAP2 SWAP1 PUSH2 0x3E54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CAF DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3368 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x337F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33B0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x33C3 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST PUSH2 0x4A4B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x33E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 CALLDATALOAD PUSH2 0x33FA DUP2 PUSH2 0x4AE9 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x33E7 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3427 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3435 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3470 DUP2 PUSH2 0x4A4B JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x34B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x34C0 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x35E2 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3446 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x34E9 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3500 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x352B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3539 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x355A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x355D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3589 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3597 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x35B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x35BB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CAF DUP2 PUSH2 0x4AFE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x35F2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3608 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x361B PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4A4B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3689 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3693 PUSH1 0x80 PUSH2 0x4A4B JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x36AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36B9 DUP6 DUP4 DUP7 ADD PUSH2 0x33A0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x36CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36DB DUP6 DUP4 DUP7 ADD PUSH2 0x351B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x36F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3701 DUP5 DUP3 DUP6 ADD PUSH2 0x35E2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x3714 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x35D7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3730 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3758 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2919 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3774 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2919 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3794 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x379F DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x37AF DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x37D9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x37E4 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x37F4 DUP2 PUSH2 0x4AFE JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3810 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3823 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3831 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3842 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3865 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3870 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3899 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38AF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x38BB DUP7 DUP3 DUP8 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38E1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38F7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3903 DUP6 DUP3 DUP7 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3921 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3937 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3947 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3955 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3971 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3993 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3975 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x39B3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x39CA JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39DD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x39EB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x39FF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A26 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3A3C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3A48 DUP5 DUP3 DUP6 ADD PUSH2 0x3579 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A61 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2919 DUP2 PUSH2 0x4AFE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3A84 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3A8F DUP2 PUSH2 0x4AFE JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3A9F DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3AB5 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x3736 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3AE9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3AFA DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x365A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3B0A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3B1A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B36 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3B42 DUP12 DUP4 DUP13 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B57 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3B64 DUP11 DUP3 DUP12 ADD PUSH2 0x34D8 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3B91 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3BA2 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x365A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3BB2 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3BC2 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BDD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3BE9 DUP11 DUP3 DUP12 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3C22 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x3C2D DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3C3D DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x3C5B DUP2 PUSH2 0x4AFE JUMP JUMPDEST SWAP4 POP PUSH2 0x3C6A DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x3736 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3CA1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3CAC DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3CBC DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3CD9 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x3736 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D07 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D12 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3D37 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D42 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3D52 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3D62 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D8F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3D9A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DAA DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3DBA DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3DED DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3DFD DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x3E0D DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3E24 DUP2 PUSH2 0x4AFE JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E4A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2919 DUP4 DUP4 PUSH2 0x364B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E66 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3E70 DUP5 DUP5 PUSH2 0x364B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3E94 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3E9E DUP6 DUP6 PUSH2 0x364B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EC6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2919 DUP2 PUSH2 0x4B0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3EE5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x3EF0 DUP2 PUSH2 0x4B0C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F0C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F18 DUP7 DUP3 DUP8 ADD PUSH2 0x3579 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x3F4A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x3F54 DUP14 DUP14 PUSH2 0x3669 JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x3F6F JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x3F7F DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3417 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x3F91 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x3FA1 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x3FB3 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x371F JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x3FC5 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x3FD5 DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x3FFB JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x400D DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x34D8 JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x403E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4055 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x4068 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4072 PUSH1 0xC0 PUSH2 0x4A4B JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x4083 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x3669 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x4096 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x40A8 DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x334C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x40C8 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x40D4 DUP13 DUP3 DUP7 ADD PUSH2 0x35E2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x40ED DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x371F JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4124 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x413C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4155 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41B0 JUMPI DUP2 CALLDATALOAD PUSH2 0x4195 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4182 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41B0 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x41B0 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41F9 JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4233 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4A9F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x428C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4267 JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x42A5 DUP2 DUP4 PUSH2 0x41E6 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x42C0 DUP3 DUP3 PUSH2 0x421B JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x42D5 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4215 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x42E8 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x4304 DUP3 PUSH2 0x4AFE JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x431B DUP3 PUSH2 0x4AE9 JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x432F DUP2 PUSH2 0x4AFE JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x434E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4A9F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x436A DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4A9F JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x440F JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x43F1 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x45CC JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x45B1 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x459C JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x468A JUMPI DUP2 CALLDATALOAD PUSH2 0x4612 DUP2 PUSH2 0x4B0C JUMP JUMPDEST PUSH2 0x461B DUP2 PUSH2 0x4AD5 JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x462A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x464D DUP2 DUP5 ADD DUP5 PUSH2 0x4A92 JUMP JUMPDEST PUSH2 0x4659 DUP3 DUP7 ADD DUP3 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x4669 DUP2 DUP5 ADD DUP5 PUSH2 0x4A92 JUMP JUMPDEST PUSH2 0x4675 DUP3 DUP7 ADD DUP3 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45FF JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4720 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x46C9 DUP2 PUSH2 0x4AD5 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x46F6 DUP3 DUP9 ADD DUP3 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x470B DUP7 DUP3 ADD DUP4 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46B4 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x475F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4247 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4776 DUP5 PUSH2 0x4ACB JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x478D DUP6 PUSH2 0x4ACB JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47AC DUP6 PUSH2 0x4AD5 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x47C3 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x41E6 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x47E4 DUP13 PUSH2 0x4ADF JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x488B JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x4877 DUP2 DUP9 ADD DUP4 PUSH2 0x421B JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x480B JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x48A2 DUP2 DUP11 DUP13 PUSH2 0x4173 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x48B2 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x42DD JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x48C5 DUP2 DUP7 DUP9 PUSH2 0x41BB JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x499C DUP2 PUSH2 0x4ADF JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x49EA PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x421B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x49FA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x42DD JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4A88 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x2919 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4ABA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4AA2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4C6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x306B JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x306B JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x306B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x306B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x306B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x306B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD GT 0xE7 COINBASE DIFFICULTY PUSH27 0xC033DCFE1AF38550CF9588AD22AF3FAB87AD208456A48A82972564 PUSH20 0x6F6C6343000701003360C0604052348015610010 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0x29 DUP7 0xD1 DUP10 DUP1 PUSH28 0x7F562B5667A0DC32043A64B5FC57D1CF73AB6628CA3F8DD6A864736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1310:442:75:-:0;;;7822:42:82;7773:91;;1523:227:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1657:6;1678;1637:5;2122::82;-1:-1:-1;;;;;2122:10:82;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:71;;;;;;;;2146:14:82;;;;;::::1;::::0;2184:41:::1;::::0;2155:5;;2219:4:::1;::::0;2184:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;2170:55:82::1;::::0;;;;;::::1;::::0;1697:32:84;;;;;;;;-1:-1:-1;;;;;;1840:19:86;;:66;;1904:1;1840:66;;;1878:6;-1:-1:-1;;;;;1862:30:86;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1831:75:86;;;;;;;;1916:34;;;;;;-1:-1:-1;1310:442:75;;-1:-1:-1;;1310:442:75;;;;;;;;;:::o;874:641:-1:-;;;;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;-1:-1;;1082:12;1044:2;462:6;456:13;474:48;516:5;474:48;:::i;:::-;1260:2;1325:22;;285:13;1134:89;;-1:-1;303:48;285:13;303:48;:::i;:::-;1394:2;1467:22;;106:13;1268:89;;-1:-1;124:56;106:13;124:56;:::i;:::-;1402:97;;;;1038:477;;;;;:::o;1522:291::-;;1651:2;1639:9;1630:7;1626:23;1622:32;1619:2;;;-1:-1;;1657:12;1619:2;632:6;626:13;644:47;685:5;644:47;:::i;:::-;1709:88;1613:200;-1:-1;;;1613:200::o;2403:363::-;-1:-1;;;;;3505:54;;;2326:65;;3505:54;;2752:2;2737:18;;2191:37;2573:2;2558:18;;2544:222::o;3859:163::-;-1:-1;;;;;3505:54;;3941:58;;3931:2;;4013:1;;4003:12;3931:2;3925:97;:::o;:::-;1310:442:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11191":[{"length":32,"start":5846},{"length":32,"start":6179}],"11193":[{"length":32,"start":5590}],"11561":[{"length":32,"start":11857}],"11792":[{"length":32,"start":3205},{"length":32,"start":5932}],"12134":[{"length":32,"start":2192},{"length":32,"start":2242},{"length":32,"start":2630},{"length":32,"start":2818},{"length":32,"start":9531}],"12136":[{"length":32,"start":1305},{"length":32,"start":1453},{"length":32,"start":1520},{"length":32,"start":2276},{"length":32,"start":2364},{"length":32,"start":2530},{"length":32,"start":9277},{"length":32,"start":9365}]},"linkReferences":{},"object":"6080604052600436106101c25760003560e01c806380db15bd116100f7578063b6d2473711610095578063e8210e3c11610064578063e8210e3c146103cb578063ecc02637146103de578063efe69108146103f1578063f3cab68514610404576101c2565b8063b6d2473714610372578063d293f29014610392578063d80952d5146103a5578063db4c0e91146103b8576101c2565b80638d928af8116100d15780638d928af8146103245780638fe4624f14610339578063959fc17a1461034c578063abf6d3991461035f576101c2565b806380db15bd146102eb5780638c57198b146102fe5780638d64cfbc14610311576101c2565b8063433b0865116101645780636d307ea81161013e5780636d307ea8146102875780637ab6e03c1461029a5780637bc008f5146102ad5780637fd0e5d5146102c0576101c2565b8063433b08651461024e578063611b90dd1461026157806365ca480414610274576101c2565b80631c982441116101a05780631c982441146102025780632cbec84e146102155780632e6272ea146102285780633f85d3901461023b576101c2565b80630e248fea146101c75780631089e5e3146101dc57806318369446146101ef575b600080fd5b6101da6101d53660046138cf565b610431565b005b6101da6101ea366004613851565b6104cc565b6101da6101fd366004613f29565b61062f565b6101da61021036600461377f565b610838565b6101da610223366004613851565b610a28565b6101da610236366004614025565b610b29565b6101da610249366004613885565b610c52565b6101da61025c366004613dca565b610d1b565b6101da61026f366004613d20565b610f44565b6101da610282366004613d7a565b61105f565b6101da610295366004613d20565b6111cc565b6101da6102a8366004613dca565b611368565b6101da6102bb366004613d7a565b61146e565b3480156102cc57600080fd5b506102d56115d4565b6040516102e2919061438b565b60405180910390f35b6101da6102f93660046137c4565b6115f8565b6101da61030c366004613a6c565b6116fc565b6101da61031f366004613c87565b6117a7565b34801561033057600080fd5b506102d5611821565b6101da610347366004613b77565b611845565b6101da61035a366004613c06565b611a6f565b6101da61036d366004613d20565b611aec565b34801561037e57600080fd5b506101da61038d366004613cf5565b611c1c565b6101da6103a0366004613d20565b611c56565b6101da6103b3366004613acf565b611e57565b6101da6103c636600461377f565b6123e5565b6101da6103d9366004613d20565b612562565b6101da6103ec36600461399f565b61276d565b6101da6103ff366004613d20565b612865565b34801561041057600080fd5b5061042461041f366004614113565b61290e565b6040516102e29190614a0c565b8060005b818110156104c65783838281811061044957fe5b905060200201602081019061045e9190613747565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b8152600401610489919061438b565b600060405180830381600087803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050806001019050610435565b50505050565b6104d582612920565b156104e6576104e38261296b565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e389009061054e908690600401614a0c565b60206040518083038186803b15801561056657600080fd5b505afa15801561057a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059e919061412b565b90506105d36001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612996565b6001600160a01b0384163014610617576106176001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b61062082612920565b156104c6576104c68282612a98565b3361063d6020890189613747565b6001600160a01b0316148061066657503061065b6020890189613747565b6001600160a01b0316145b61068b5760405162461bcd60e51b8152600401610682906148dc565b60405180910390fd5b60005b8a518110156106f05760008b82815181106106a557fe5b60200260200101516060015190506106bc81612920565b156106e7576106ca8161296b565b8c83815181106106d657fe5b602002602001015160600181815250505b5060010161068e565b5060606106fb611821565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b81526004016107359897969594939291906147d3565b6000604051808303818588803b15801561074e57600080fd5b505af1158015610762573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261078b919081019061390f565b905060005b82811015610829576107b68484838181106107a757fe5b90506040020160200135612920565b6107d25760405162461bcd60e51b81526004016106829061494a565b6108218484838181106107e157fe5b9050604002016020013561081c848787868181106107fb57fe5b905060400201600001358151811061080f57fe5b6020026020010151612aab565b612a98565b600101610790565b50505050505050505050505050565b61084182612920565b156108525761084f8261296b565b91505b6001600160a01b03841630146108b5576001600160a01b038416331461088a5760405162461bcd60e51b8152600401610682906148dc565b6108b5847f000000000000000000000000000000000000000000000000000000000000000084612ab7565b6109096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084612b53565b6040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb090610971908690600401614a0c565b602060405180830381600087803b15801561098b57600080fd5b505af115801561099f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c3919061412b565b90506001600160a01b0384163014610a0957610a096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b610a1282612920565b15610a2157610a218282612a98565b5050505050565b610a3182612920565b15610a4257610a3f8261296b565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610a91919061438b565b6020604051808303818588803b158015610aaa57600080fd5b505af1158015610abe573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae3919061412b565b90506001600160a01b0384163014610617576106176001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b33610b376020870187613747565b6001600160a01b03161480610b60575030610b556020870187613747565b6001600160a01b0316145b610b7c5760405162461bcd60e51b8152600401610682906148dc565b610b898660800151612920565b15610ba157610b9b866080015161296b565b60808701525b6000610bab611821565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610bdd9493929190614981565b6020604051808303818588803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c2f919061412b565b9050610c3a82612920565b15610c4957610c498282612a98565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610cbe90879087903390600401614589565b602060405180830381600087803b158015610cd857600080fd5b505af1158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d10919061412b565b905061062082612920565b610d2483612920565b15610d3557610d328361296b565b92505b600082610db457866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610daf9190613763565b610e27565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610def57600080fd5b505af1158015610e03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e279190613763565b90506001600160a01b0386163014610e6c576001600160a01b0386163314610e615760405162461bcd60e51b8152600401610682906148dc565b610e6c868286612ab7565b610e806001600160a01b0382168886612b53565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790610ece908990899086908a9060040161455d565b602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f20919061412b565b9050610f2b83612920565b15610f3a57610f3a8382612a98565b5050505050505050565b610f4d82612920565b15610f5e57610f5b8261296b565b91505b6001600160a01b0384163014610fa1576001600160a01b0384163314610f965760405162461bcd60e51b8152600401610682906148dc565b610fa1848684612ab7565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e90610feb9087908790600401614521565b602060405180830381600087803b15801561100557600080fd5b505af1158015611019573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103d919061412b565b905061104882612920565b15611057576110578282612a98565b505050505050565b61106881612920565b15611079576110768161296b565b90505b6001600160a01b03831630146110bc576001600160a01b03831633146110b15760405162461bcd60e51b8152600401610682906148dc565b6110bc838583612ab7565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d90611101908490600401614a0c565b600060405180830381600087803b15801561111b57600080fd5b505af115801561112f573d6000803e3d6000fd5b505050506001600160a01b03821630146104c6576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190613763565b9050610a216001600160a01b0382168484612a15565b6111d582612920565b156111e6576111e38261296b565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561122157600080fd5b505afa158015611235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112599190613763565b90506001600160a01b038516301461129e576001600160a01b03851633146112935760405162461bcd60e51b8152600401610682906148dc565b61129e858285612ab7565b6112b26001600160a01b0382168785612b53565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906112fc9087908990600401614a15565b602060405180830381600087803b15801561131657600080fd5b505af115801561132a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134e919061412b565b905061135983612920565b15610c4957610c498382612a98565b61137183612920565b156113825761137f8361296b565b92505b6001600160a01b03851630146113c5576001600160a01b03851633146113ba5760405162461bcd60e51b8152600401610682906148dc565b6113c5858785612ab7565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906114119088908890889060040161453a565b6040805180830381600087803b15801561142a57600080fd5b505af115801561143e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114629190614143565b915050610c3a82612920565b61147781612920565b15611488576114858161296b565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b1580156114c357600080fd5b505afa1580156114d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fb9190613763565b90506001600160a01b0384163014611540576001600160a01b03841633146115355760405162461bcd60e51b8152600401610682906148dc565b611540848284612ab7565b6115546001600160a01b0382168684612b53565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f659061159b9085908790600401614a15565b600060405180830381600087803b1580156115b557600080fd5b505af11580156115c9573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03841630148061160d575082155b6116295760405162461bcd60e51b815260040161068290614913565b606063fa6e671d60e01b3386866040516024016116489392919061439f565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090951694909417909352516116b7928691869101614358565b60408051601f1981840301815291905290506110576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682612c3b565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c65427949061176d9030908a908a908a908a908a908a906004016144c1565b600060405180830381600087803b15801561178757600080fd5b505af115801561179b573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf876117bf611821565b88888888886040518863ffffffff1660e01b81526004016117e69796959493929190614480565b600060405180830381600087803b15801561180057600080fd5b505af1158015611814573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b03851633148061186457506001600160a01b03851630145b6118805760405162461bcd60e51b8152600401610682906148dc565b600061188b88612cb5565b9050600061189883612920565b6118a3576000611938565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a08231906118e890899060040161438b565b60206040518083038186803b15801561190057600080fd5b505afa158015611914573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611938919061412b565b9050611948888660400151612cbb565b6040860152611955611821565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611987949392919061472d565b6000604051808303818588803b1580156119a057600080fd5b505af11580156119b4573d6000803e3d6000fd5b50505050506119c283612920565b156115c9576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611a0f908a9060040161438b565b60206040518083038186803b158015611a2757600080fd5b505afa158015611a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5f919061412b565b905061179b8461081c8385612ce9565b876001600160a01b0316638fcbaf0c88611a87611821565b8989898989896040518963ffffffff1660e01b8152600401611ab0989796959493929190614437565b600060405180830381600087803b158015611aca57600080fd5b505af1158015611ade573d6000803e3d6000fd5b505050505050505050505050565b611af582612920565b15611b0657611b038261296b565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611b4157600080fd5b505afa158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b799190613763565b90506001600160a01b0385163014611bbe576001600160a01b0385163314611bb35760405162461bcd60e51b8152600401610682906148dc565b611bbe858285612ab7565b611bd26001600160a01b0382168785612b53565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e2906112fc9088908890600401614521565b611c2581612920565b15611c3657611c338161296b565b90505b611c52611c41611821565b6001600160a01b0384169083612b53565b5050565b611c5f82612920565b15611c7057611c6d8261296b565b91505b6001600160a01b0384163014611cb3576001600160a01b0384163314611ca85760405162461bcd60e51b8152600401610682906148dc565b611cb3848684612ab7565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611cee57600080fd5b505afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d269190613763565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d90611d6e908690600401614a0c565b600060405180830381600087803b158015611d8857600080fd5b505af1158015611d9c573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a0823190611de890309060040161438b565b60206040518083038186803b158015611e0057600080fd5b505afa158015611e14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e38919061412b565b9050611e4e6001600160a01b0383168683612a15565b61135983612920565b6001600160a01b038516331480611e7657506001600160a01b03851630145b611e925760405162461bcd60e51b8152600401610682906148dc565b60608167ffffffffffffffff81118015611eab57600080fd5b50604051908082528060200260200182016040528015611ed5578160200160208202803683370190505b50905060608267ffffffffffffffff81118015611ef157600080fd5b50604051908082528060200260200182016040528015611f1b578160200160208202803683370190505b50905060005b8381101561208b57611f388585838181106107a757fe5b611f545760405162461bcd60e51b81526004016106829061494a565b8551600090868684818110611f6557fe5b9050604002016000013581518110611f7957fe5b60200260200101519050866060015115611fc757611f9681612cff565b848381518110611fa257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612082565b611fd081612d02565b61205d57611fdd81612cff565b6001600160a01b03166370a08231896040518263ffffffff1660e01b8152600401612008919061438b565b60206040518083038186803b15801561202057600080fd5b505afa158015612034573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612058919061412b565b612069565b876001600160a01b0316315b83838151811061207557fe5b6020026020010181815250505b50600101611f21565b508460600151156121225761209e611821565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b81526004016120cb9291906143c3565b60006040518083038186803b1580156120e357600080fd5b505afa1580156120f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261211f9190810190613a15565b90505b612130888660400151612d0f565b604086015261213d611821565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161216e949392919061472d565b600060405180830381600087803b15801561218857600080fd5b505af115801561219c573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff811180156121bb57600080fd5b506040519080825280602002602001820160405280156121e5578160200160208202803683370190505b509050856060015115612282576121fa611821565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b81526004016122279291906143c3565b60006040518083038186803b15801561223f57600080fd5b505afa158015612253573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261227b9190810190613a15565b9050612380565b60005b8481101561237e57865160009087878481811061229e57fe5b90506040020160000135815181106122b257fe5b602002602001015190506122c581612d02565b612352576122d281612cff565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b81526004016122fd919061438b565b60206040518083038186803b15801561231557600080fd5b505afa158015612329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234d919061412b565b61235e565b886001600160a01b0316315b83838151811061236a57fe5b602090810291909101015250600101612285565b505b60005b84811015611814576123dd86868381811061239a57fe5b9050604002016020013561081c8584815181106123b357fe5b60200260200101518585815181106123c757fe5b6020026020010151612ce990919063ffffffff16565b600101612383565b6123ee82612920565b156123ff576123fc8261296b565b91505b6001600160a01b0384163014612462576001600160a01b03841633146124375760405162461bcd60e51b8152600401610682906148dc565b612462847f000000000000000000000000000000000000000000000000000000000000000084612ab7565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e906124ca908690600401614a0c565b602060405180830381600087803b1580156124e457600080fd5b505af11580156124f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251c919061412b565b90506001600160a01b0384163014610a0957610a096001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612a15565b61256b82612920565b1561257c576125798261296b565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b757600080fd5b505afa1580156125cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ef9190613763565b90506001600160a01b0385163014612634576001600160a01b03851633146126295760405162461bcd60e51b8152600401610682906148dc565b612634858285612ab7565b6126486001600160a01b0382168785612b53565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f259061268d908690600401614a0c565b600060405180830381600087803b1580156126a757600080fd5b505af11580156126bb573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a082319061270790309060040161438b565b60206040518083038186803b15801561271f57600080fd5b505afa158015612733573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612757919061412b565b9050611e4e6001600160a01b0388168683612a15565b60005b82811015612801573384848381811061278557fe5b905060a00201606001602081019061279d9190613747565b6001600160a01b031614806127dd5750308484838181106127ba57fe5b905060a0020160600160208101906127d29190613747565b6001600160a01b0316145b6127f95760405162461bcd60e51b8152600401610682906148dc565b600101612770565b5061280a611821565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b81526004016128389291906145e9565b6000604051808303818588803b15801561285157600080fd5b505af1158015610f3a573d6000803e3d6000fd5b61286e82612920565b1561287f5761287c8261296b565b91505b6001600160a01b03841630146128c2576001600160a01b03841633146128b75760405162461bcd60e51b8152600401610682906148dc565b6128c2848684612ab7565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba08765290610feb90869088903090600401614a2c565b600061291982612d36565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b600080600061297984612d36565b9150915061298684612d4d565b1561291957600082559392505050565b6129a5814710156101a3612d94565b6000826001600160a01b0316826040516129be90612cff565b60006040518083038185875af1925050503d80600081146129fb576040519150601f19603f3d011682016040523d82523d6000602084013e612a00565b606091505b50509050612a10816101a4612d94565b505050565b612a108363a9059cbb60e01b8484604051602401612a34929190614521565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612da2565b6000612aa383612e42565b919091555050565b60ff81901d9081180390565b80612ac157612a10565b604080516001808252818301909252606091602080830190803683370190505090508281600081518110612af157fe5b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508281600081518110612b3c57fe5b602002602001018181525050610a21858383612ea0565b8015801590612bf757506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e90612ba4903090869060040161441d565b60206040518083038186803b158015612bbc57600080fd5b505afa158015612bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf4919061412b565b15155b15612c1c57612c1c8363095ea7b360e01b846000604051602401612a34929190614505565b612a108363095ea7b360e01b8484604051602401612a34929190614521565b606060006060846001600160a01b031684604051612c59919061433c565b6000604051808303816000865af19150503d8060008114612c96576040519150601f19603f3d011682016040523d82523d6000602084013e612c9b565b606091505b5091509150612caa8282612fda565b925050505b92915050565b60601c90565b60606000838015612cc857fe5b1415612cde57612cd782613004565b9050612caf565b612caf610136613041565b6000612cf9838311156001612d94565b50900390565b90565b6001600160a01b03161590565b60606000838015612d1c57fe5b1415612d2b57612cd78261306e565b612caf610150613041565b600080612d4283612e42565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b81611c5257611c5281613041565b60006060836001600160a01b031683604051612dbe919061433c565b6000604051808303816000865af19150503d8060008114612dfb576040519150601f19603f3d011682016040523d82523d6000602084013e612e00565b606091505b50915091506000821415612e18573d6000803e3d6000fd5b6104c6815160001480612e3a575081806020019051810190612e3a9190613a50565b6101a2612d94565b60006001612e4f836130b7565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001612e8192919061437d565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015612eba57600080fd5b50604051908082528060200260200182016040528015612ef457816020015b612ee161331c565b815260200190600190039081612ed95790505b50905060005b8351811015612f8c576040805160a081019091528060038152602001858381518110612f2257fe5b60200260200101516001600160a01b03168152602001848381518110612f4457fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b0316815250828281518110612f7957fe5b6020908102919091010152600101612efa565b50612f95611821565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401612fc09190614697565b600060405180830381600087803b15801561285157600080fd5b60608215612fe9575080612caf565b815115612ff95781518083602001fd5b612caf6101ae613041565b60606000613011836130da565b9050600181600381111561302157fe5b141561303857613030836130f0565b915050612966565b82915050612966565b61306b817f42414c000000000000000000000000000000000000000000000000000000000061319f565b50565b6060600061307b83613200565b9050600081600281111561308b57fe5b141561309a5761303083613216565b60018160028111156130a857fe5b14156130385761303083613279565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600081806020019051810190612caf9190613eb5565b60608060006130fe846132cc565b915091506000805b835181101561316457600084828151811061311d57fe5b6020026020010151905061313081612920565b1561315b5761313e8161296b565b85838151811061314a57fe5b602002602001018181525050600192505b50600101613106565b50806131705784613196565b60018383604051602001613186939291906147a1565b6040516020818303038152906040525b95945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600081806020019051810190612caf9190613e39565b6060600080613224846132ef565b9150915061323182612920565b1561326f5761323f8261296b565b91506000828260405160200161325793929190614780565b60405160208183030381529060405292505050612966565b8392505050612966565b6060600061328683613306565b905061329181612920565b156130385761329f8161296b565b90506001816040516020016132b5929190614769565b604051602081830303815290604052915050612966565b60606000828060200190518101906132e49190613ed1565b909590945092505050565b600080828060200190518101906132e49190613e80565b6000818060200190518101906129199190613e54565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035612caf81614ae9565b60008083601f840112613368578182fd5b50813567ffffffffffffffff81111561337f578182fd5b602083019150836020808302850101111561339957600080fd5b9250929050565b600082601f8301126133b0578081fd5b81356133c36133be82614a72565b614a4b565b8181529150602080830190848101818402860182018710156133e457600080fd5b60005b8481101561340c5781356133fa81614ae9565b845292820192908201906001016133e7565b505050505092915050565b600082601f830112613427578081fd5b81356134356133be82614a72565b818152915060208083019084810160005b8481101561340c578135870160a080601f19838c0301121561346757600080fd5b61347081614a4b565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff8311156134b257600080fd5b6134c08c88858701016135e2565b90820152865250509282019290820190600101613446565b60008083601f8401126134e9578182fd5b50813567ffffffffffffffff811115613500578182fd5b60208301915083602060408302850101111561339957600080fd5b600082601f83011261352b578081fd5b81356135396133be82614a72565b81815291506020808301908481018184028601820187101561355a57600080fd5b60005b8481101561340c5781358452928201929082019060010161355d565b600082601f830112613589578081fd5b81516135976133be82614a72565b8181529150602080830190848101818402860182018710156135b857600080fd5b60005b8481101561340c578151845292820192908201906001016135bb565b8035612caf81614afe565b600082601f8301126135f2578081fd5b813567ffffffffffffffff811115613608578182fd5b61361b6020601f19601f84011601614a4b565b915080825283602082850101111561363257600080fd5b8060208401602084013760009082016020015292915050565b805160038110612caf57600080fd5b803560018110612caf57600080fd5b803560028110612caf57600080fd5b600060808284031215613689578081fd5b6136936080614a4b565b9050813567ffffffffffffffff808211156136ad57600080fd5b6136b9858386016133a0565b835260208401359150808211156136cf57600080fd5b6136db8583860161351b565b602084015260408401359150808211156136f457600080fd5b50613701848285016135e2565b60408301525061371483606084016135d7565b606082015292915050565b600060808284031215613730578081fd5b50919050565b803560ff81168114612caf57600080fd5b600060208284031215613758578081fd5b813561291981614ae9565b600060208284031215613774578081fd5b815161291981614ae9565b60008060008060808587031215613794578283fd5b843561379f81614ae9565b935060208501356137af81614ae9565b93969395505050506040820135916060013590565b600080600080606085870312156137d9578182fd5b84356137e481614ae9565b935060208501356137f481614afe565b9250604085013567ffffffffffffffff80821115613810578384fd5b818701915087601f830112613823578384fd5b813581811115613831578485fd5b886020828501011115613842578485fd5b95989497505060200194505050565b600080600060608486031215613865578081fd5b833561387081614ae9565b95602085013595506040909401359392505050565b600080600060408486031215613899578081fd5b833567ffffffffffffffff8111156138af578182fd5b6138bb86828701613357565b909790965060209590950135949350505050565b600080602083850312156138e1578182fd5b823567ffffffffffffffff8111156138f7578283fd5b61390385828601613357565b90969095509350505050565b60006020808385031215613921578182fd5b825167ffffffffffffffff811115613937578283fd5b8301601f81018513613947578283fd5b80516139556133be82614a72565b8181528381019083850185840285018601891015613971578687fd5b8694505b83851015613993578051835260019490940193918501918501613975565b50979650505050505050565b6000806000604084860312156139b3578081fd5b833567ffffffffffffffff808211156139ca578283fd5b818601915086601f8301126139dd578283fd5b8135818111156139eb578384fd5b87602060a0830285010111156139ff578384fd5b6020928301989097509590910135949350505050565b600060208284031215613a26578081fd5b815167ffffffffffffffff811115613a3c578182fd5b613a4884828501613579565b949350505050565b600060208284031215613a61578081fd5b815161291981614afe565b60008060008060008060c08789031215613a84578384fd5b8635613a8f81614afe565b95506020870135613a9f81614ae9565b945060408701359350613ab58860608901613736565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613ae9578485fd5b87359650613afa8960208a0161365a565b95506040880135613b0a81614ae9565b94506060880135613b1a81614ae9565b9350608088013567ffffffffffffffff80821115613b36578283fd5b613b428b838c01613678565b945060a08a0135915080821115613b57578283fd5b50613b648a828b016134d8565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613b91578081fd5b87359650613ba28960208a0161365a565b95506040880135613bb281614ae9565b94506060880135613bc281614ae9565b9350608088013567ffffffffffffffff811115613bdd578182fd5b613be98a828b01613678565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215613c22578182fd5b8835613c2d81614ae9565b97506020890135613c3d81614ae9565b965060408901359550606089013594506080890135613c5b81614afe565b9350613c6a8a60a08b01613736565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215613ca1578081fd5b8735613cac81614ae9565b96506020880135613cbc81614ae9565b95506040880135945060608801359350613cd98960808a01613736565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613d07578182fd5b8235613d1281614ae9565b946020939093013593505050565b600080600080600060a08688031215613d37578283fd5b8535613d4281614ae9565b94506020860135613d5281614ae9565b93506040860135613d6281614ae9565b94979396509394606081013594506080013592915050565b60008060008060808587031215613d8f578182fd5b8435613d9a81614ae9565b93506020850135613daa81614ae9565b92506040850135613dba81614ae9565b9396929550929360600135925050565b60008060008060008060c08789031215613de2578384fd5b8635613ded81614ae9565b95506020870135613dfd81614ae9565b94506040870135613e0d81614ae9565b9350606087013592506080870135613e2481614afe565b8092505060a087013590509295509295509295565b600060208284031215613e4a578081fd5b612919838361364b565b60008060408385031215613e66578182fd5b613e70848461364b565b9150602083015190509250929050565b600080600060608486031215613e94578081fd5b613e9e858561364b565b925060208401519150604084015190509250925092565b600060208284031215613ec6578081fd5b815161291981614b0c565b600080600060608486031215613ee5578081fd5b8351613ef081614b0c565b602085015190935067ffffffffffffffff811115613f0c578182fd5b613f1886828701613579565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215613f4a578485fd5b613f548d8d613669565b9a5067ffffffffffffffff8060208e01351115613f6f578586fd5b613f7f8e60208f01358f01613417565b9a508060408e01351115613f91578586fd5b613fa18e60408f01358f01613357565b909a509850613fb38e60608f0161371f565b97508060e08e01351115613fc5578586fd5b613fd58e60e08f01358f01613357565b90975095506101008d013594506101208d013593506101408d0135811015613ffb578283fd5b5061400d8d6101408e01358e016134d8565b81935080925050509295989b509295989b9093969950565b600080600080600080610120878903121561403e578384fd5b863567ffffffffffffffff80821115614055578586fd5b9088019060c0828b031215614068578586fd5b61407260c0614a4b565b823581526140838b60208501613669565b6020820152604083013561409681614ae9565b60408201526140a88b6060850161334c565b60608201526080830135608082015260a0830135828111156140c8578788fd5b6140d48c8286016135e2565b60a0830152508098505050506140ed886020890161371f565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b600060208284031215614124578081fd5b5035919050565b60006020828403121561413c578081fd5b5051919050565b60008060408385031215614155578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b858110156141b057813561419581614ae9565b6001600160a01b031687529582019590820190600101614182565b509495945050505050565b60008284526020808501945082825b858110156141b0578135875295820195908201906001016141ca565b6000815180845260208085019450808401835b838110156141b0578151875295820195908201906001016141f9565b15159052565b60008151808452614233816020860160208601614a9f565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561428c5783516001600160a01b031683529284019291840191600101614267565b5050828501519150858103838701526142a581836141e6565b92505050604083015184820360408601526142c0828261421b565b91505060608301516142d56060860182614215565b509392505050565b80356142e881614ae9565b6001600160a01b03908116835260208201359061430482614afe565b901515602084015260408201359061431b82614ae9565b166040830152606081013561432f81614afe565b8015156060840152505050565b6000825161434e818460208701614a9f565b9190910192915050565b6000845161436a818460208901614a9f565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b8181101561440f5785518516835294830194918301916001016143f1565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b868110156145cc57602083356145b181614ae9565b6001600160a01b03168352928301929091019060010161459c565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b8781101561468a57813561461281614b0c565b61461b81614ad5565b83528185013561462a81614ae9565b6001600160a01b0316838601528184013584840152606061464d81840184614a92565b61465982860182614166565b5050608061466981840184614a92565b61467582860182614166565b505060a09283019291909101906001016145ff565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561472057815180516146c981614ad5565b8552808701516001600160a01b03168786015285810151868601526060808201516146f682880182614166565b50506080908101519061470b86820183614166565b505060a09390930192908501906001016146b4565b5091979650505050505050565b60008582526001600160a01b0380861660208401528085166040840152506080606083015261475f6080830184614247565b9695505050505050565b6040810161477684614acb565b9281526020015290565b6060810161478d85614acb565b938152602081019290925260409091015290565b60006147ac85614ad5565b848252606060208301526147c360608301856141e6565b9050826040830152949350505050565b60006101208083016147e48c614adf565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b8281101561488b578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a0918701829052906148778188018361421b565b97860197965050509083019060010161480b565b5050505083810360408501526148a2818a8c614173565b9150506148b260608401886142dd565b82810360e08401526148c58186886141bb565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e0830152602086015161499c81614adf565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c06101808401526149ea6101a084018261421b565b9150506149fa60208301866142dd565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614a6a57600080fd5b604052919050565b600067ffffffffffffffff821115614a88578081fd5b5060209081020190565b6000823561291981614ae9565b60005b83811015614aba578181015183820152602001614aa2565b838111156104c65750506000910152565b6003811061306b57fe5b6004811061306b57fe5b6002811061306b57fe5b6001600160a01b038116811461306b57600080fd5b801515811461306b57600080fd5b6004811061306b57600080fdfea26469706673582212205411e741447ac033dcfe1af38550cf9588ad22af3fab87ad208456a48a82972564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xB6D24737 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x3F1 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x404 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x372 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3A5 JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x3B8 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x35F JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x311 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x287 JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2AD JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2C0 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x24E JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x261 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x274 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x228 JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x23B JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x1EF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1DA PUSH2 0x1D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x38CF JUMP JUMPDEST PUSH2 0x431 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1DA PUSH2 0x1EA CALLDATASIZE PUSH1 0x4 PUSH2 0x3851 JUMP JUMPDEST PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3F29 JUMP JUMPDEST PUSH2 0x62F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x210 CALLDATASIZE PUSH1 0x4 PUSH2 0x377F JUMP JUMPDEST PUSH2 0x838 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x223 CALLDATASIZE PUSH1 0x4 PUSH2 0x3851 JUMP JUMPDEST PUSH2 0xA28 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x236 CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0xB29 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x249 CALLDATASIZE PUSH1 0x4 PUSH2 0x3885 JUMP JUMPDEST PUSH2 0xC52 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x3DCA JUMP JUMPDEST PUSH2 0xD1B JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x26F CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x282 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D7A JUMP JUMPDEST PUSH2 0x105F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x295 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x11CC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DCA JUMP JUMPDEST PUSH2 0x1368 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x2BB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D7A JUMP JUMPDEST PUSH2 0x146E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x15D4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1DA PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x37C4 JUMP JUMPDEST PUSH2 0x15F8 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x3A6C JUMP JUMPDEST PUSH2 0x16FC JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C87 JUMP JUMPDEST PUSH2 0x17A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D5 PUSH2 0x1821 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x347 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B77 JUMP JUMPDEST PUSH2 0x1845 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x35A CALLDATASIZE PUSH1 0x4 PUSH2 0x3C06 JUMP JUMPDEST PUSH2 0x1A6F JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x36D CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x1AEC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DA PUSH2 0x38D CALLDATASIZE PUSH1 0x4 PUSH2 0x3CF5 JUMP JUMPDEST PUSH2 0x1C1C JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x1C56 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ACF JUMP JUMPDEST PUSH2 0x1E57 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3C6 CALLDATASIZE PUSH1 0x4 PUSH2 0x377F JUMP JUMPDEST PUSH2 0x23E5 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3D9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x2562 JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x399F JUMP JUMPDEST PUSH2 0x276D JUMP JUMPDEST PUSH2 0x1DA PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3D20 JUMP JUMPDEST PUSH2 0x2865 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x424 PUSH2 0x41F CALLDATASIZE PUSH1 0x4 PUSH2 0x4113 JUMP JUMPDEST PUSH2 0x290E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x4A0C JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C6 JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x449 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x45E SWAP2 SWAP1 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x489 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x435 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4D5 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x4E6 JUMPI PUSH2 0x4E3 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x54E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x57A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x59E SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x5D3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x2996 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x617 JUMPI PUSH2 0x617 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x620 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x4C6 JUMPI PUSH2 0x4C6 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST CALLER PUSH2 0x63D PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x666 JUMPI POP ADDRESS PUSH2 0x65B PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x68B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x6F0 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x6BC DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x6E7 JUMPI PUSH2 0x6CA DUP2 PUSH2 0x296B JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x6D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x68E JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x6FB PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x735 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47D3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x74E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x762 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x78B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x390F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x829 JUMPI PUSH2 0x7B6 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2920 JUMP JUMPDEST PUSH2 0x7D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x494A JUMP JUMPDEST PUSH2 0x821 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x7E1 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x81C DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x7FB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x80F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2AAB JUMP JUMPDEST PUSH2 0x2A98 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x790 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x841 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x852 JUMPI PUSH2 0x84F DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x8B5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x88A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x8B5 DUP5 PUSH32 0x0 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x909 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH32 0x0 DUP5 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0x971 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x98B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x99F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9C3 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA09 JUMPI PUSH2 0xA09 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0xA12 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xA21 JUMPI PUSH2 0xA21 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA31 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xA42 JUMPI PUSH2 0xA3F DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA91 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xABE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xAE3 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x617 JUMPI PUSH2 0x617 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST CALLER PUSH2 0xB37 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xB60 JUMPI POP ADDRESS PUSH2 0xB55 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xB7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0xB89 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xBA1 JUMPI PUSH2 0xB9B DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x296B JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xBAB PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4981 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2F SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0xC3A DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xC49 JUMPI PUSH2 0xC49 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xCBE SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD10 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x620 DUP3 PUSH2 0x2920 JUMP JUMPDEST PUSH2 0xD24 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xD35 JUMPI PUSH2 0xD32 DUP4 PUSH2 0x296B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xDB4 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDAF SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST PUSH2 0xE27 JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE03 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE27 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0xE6C JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0xE61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0xE6C DUP7 DUP3 DUP7 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0xE80 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0xECE SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x455D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF20 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0xF2B DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xF3A JUMPI PUSH2 0xF3A DUP4 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xF4D DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xF5E JUMPI PUSH2 0xF5B DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xFA1 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0xF96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0xFA1 DUP5 DUP7 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0xFEB SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4521 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1005 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1019 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x103D SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1048 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1057 JUMPI PUSH2 0x1057 DUP3 DUP3 PUSH2 0x2A98 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1068 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1079 JUMPI PUSH2 0x1076 DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x10BC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x10B1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x10BC DUP4 DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1101 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x111B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x112F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x117E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1192 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x11B6 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH2 0xA21 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x11D5 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x11E6 JUMPI PUSH2 0x11E3 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1235 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1259 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x129E JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1293 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x129E DUP6 DUP3 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x12B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x12FC SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A15 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1316 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x132A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x134E SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1359 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0xC49 JUMPI PUSH2 0xC49 DUP4 DUP3 PUSH2 0x2A98 JUMP JUMPDEST PUSH2 0x1371 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1382 JUMPI PUSH2 0x137F DUP4 PUSH2 0x296B JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x13C5 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x13BA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x13C5 DUP6 DUP8 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x1411 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x453A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x142A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x143E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1462 SWAP2 SWAP1 PUSH2 0x4143 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC3A DUP3 PUSH2 0x2920 JUMP JUMPDEST PUSH2 0x1477 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1488 JUMPI PUSH2 0x1485 DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x14D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14FB SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1540 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1535 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x1540 DUP5 DUP3 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x1554 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP7 DUP5 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x159B SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A15 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x15C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x160D JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x1629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x4913 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1648 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x439F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x16B7 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x4358 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x1057 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x2C3B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x176D SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1787 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x179B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x17BF PUSH2 0x1821 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17E6 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4480 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1800 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1814 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1864 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1880 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x188B DUP9 PUSH2 0x2CB5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1898 DUP4 PUSH2 0x2920 JUMP JUMPDEST PUSH2 0x18A3 JUMPI PUSH1 0x0 PUSH2 0x1938 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x18E8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1900 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1914 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1938 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1948 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2CBB JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x1955 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1987 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x472D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x19C2 DUP4 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x15C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1A0F SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A5F SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x179B DUP5 PUSH2 0x81C DUP4 DUP6 PUSH2 0x2CE9 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1A87 PUSH2 0x1821 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AB0 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4437 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1ADE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1AF5 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1B06 JUMPI PUSH2 0x1B03 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B55 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B79 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1BBE JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1BB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x1BBE DUP6 DUP3 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x1BD2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x12FC SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4521 JUMP JUMPDEST PUSH2 0x1C25 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1C36 JUMPI PUSH2 0x1C33 DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1C52 PUSH2 0x1C41 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x2B53 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1C5F DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x1C70 JUMPI PUSH2 0x1C6D DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1CB3 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1CA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x1CB3 DUP5 DUP7 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1D02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D26 SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1D6E SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1DE8 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E38 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1E4E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP7 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x1359 DUP4 PUSH2 0x2920 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1E76 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1E92 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1EAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1ED5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1EF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F1B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x208B JUMPI PUSH2 0x1F38 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x7A7 JUMPI INVALID JUMPDEST PUSH2 0x1F54 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x494A JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x1F65 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x1F79 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x1FC7 JUMPI PUSH2 0x1F96 DUP2 PUSH2 0x2CFF JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FA2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2082 JUMP JUMPDEST PUSH2 0x1FD0 DUP2 PUSH2 0x2D02 JUMP JUMPDEST PUSH2 0x205D JUMPI PUSH2 0x1FDD DUP2 PUSH2 0x2CFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2008 SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2020 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2034 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2058 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST PUSH2 0x2069 JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2075 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1F21 JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2122 JUMPI PUSH2 0x209E PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20CB SWAP3 SWAP2 SWAP1 PUSH2 0x43C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x211F SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3A15 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x2130 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2D0F JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x213D PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216E SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x472D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x219C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x21BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21E5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2282 JUMPI PUSH2 0x21FA PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2227 SWAP3 SWAP2 SWAP1 PUSH2 0x43C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x223F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2253 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x227B SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3A15 JUMP JUMPDEST SWAP1 POP PUSH2 0x2380 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x237E JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x229E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x22B2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x22C5 DUP2 PUSH2 0x2D02 JUMP JUMPDEST PUSH2 0x2352 JUMPI PUSH2 0x22D2 DUP2 PUSH2 0x2CFF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22FD SWAP2 SWAP1 PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2329 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x234D SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST PUSH2 0x235E JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x236A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x2285 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1814 JUMPI PUSH2 0x23DD DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x239A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x81C DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x23B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x23C7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2CE9 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2383 JUMP JUMPDEST PUSH2 0x23EE DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x23FF JUMPI PUSH2 0x23FC DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2462 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2437 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x2462 DUP5 PUSH32 0x0 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x24CA SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x251C SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA09 JUMPI PUSH2 0xA09 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH2 0x256B DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x257C JUMPI PUSH2 0x2579 DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x25CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25EF SWAP2 SWAP1 PUSH2 0x3763 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x2634 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x2629 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x2634 DUP6 DUP3 DUP6 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x2648 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2B53 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x268D SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4A0C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x2707 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x438B JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x271F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2733 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2757 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST SWAP1 POP PUSH2 0x1E4E PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP7 DUP4 PUSH2 0x2A15 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2801 JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2785 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x279D SWAP2 SWAP1 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x27DD JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x27BA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x27D2 SWAP2 SWAP1 PUSH2 0x3747 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2770 JUMP JUMPDEST POP PUSH2 0x280A PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2838 SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF3A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x286E DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x287F JUMPI PUSH2 0x287C DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x28C2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x28B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x682 SWAP1 PUSH2 0x48DC JUMP JUMPDEST PUSH2 0x28C2 DUP5 DUP7 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0xFEB SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4A2C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2919 DUP3 PUSH2 0x2D36 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2979 DUP5 PUSH2 0x2D36 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2986 DUP5 PUSH2 0x2D4D JUMP JUMPDEST ISZERO PUSH2 0x2919 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x29A5 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x2D94 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x29BE SWAP1 PUSH2 0x2CFF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x29FB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x2A10 DUP2 PUSH2 0x1A4 PUSH2 0x2D94 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2A10 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A34 SWAP3 SWAP2 SWAP1 PUSH2 0x4521 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2DA2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA3 DUP4 PUSH2 0x2E42 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2AC1 JUMPI PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2AF1 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B3C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xA21 DUP6 DUP4 DUP4 PUSH2 0x2EA0 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2BF7 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x2BA4 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x441D JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2BF4 SWAP2 SWAP1 PUSH2 0x412B JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2C1C JUMPI PUSH2 0x2C1C DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A34 SWAP3 SWAP2 SWAP1 PUSH2 0x4505 JUMP JUMPDEST PUSH2 0x2A10 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2A34 SWAP3 SWAP2 SWAP1 PUSH2 0x4521 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2C59 SWAP2 SWAP1 PUSH2 0x433C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C96 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C9B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2CAA DUP3 DUP3 PUSH2 0x2FDA JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2CC8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2CDE JUMPI PUSH2 0x2CD7 DUP3 PUSH2 0x3004 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CAF JUMP JUMPDEST PUSH2 0x2CAF PUSH2 0x136 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF9 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x2D94 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2D1C JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2D2B JUMPI PUSH2 0x2CD7 DUP3 PUSH2 0x306E JUMP JUMPDEST PUSH2 0x2CAF PUSH2 0x150 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D42 DUP4 PUSH2 0x2E42 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1C52 JUMPI PUSH2 0x1C52 DUP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x433C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DFB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x2E18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x4C6 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x2E3A JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2E3A SWAP2 SWAP1 PUSH2 0x3A50 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2D94 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x2E4F DUP4 PUSH2 0x30B7 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2E81 SWAP3 SWAP2 SWAP1 PUSH2 0x437D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2EBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2EF4 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2EE1 PUSH2 0x331C JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2ED9 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x2F8C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2F44 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2F79 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2EFA JUMP JUMPDEST POP PUSH2 0x2F95 PUSH2 0x1821 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2FC0 SWAP2 SWAP1 PUSH2 0x4697 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x2FE9 JUMPI POP DUP1 PUSH2 0x2CAF JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2FF9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2CAF PUSH2 0x1AE PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3011 DUP4 PUSH2 0x30DA JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3021 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3038 JUMPI PUSH2 0x3030 DUP4 PUSH2 0x30F0 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2966 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x2966 JUMP JUMPDEST PUSH2 0x306B DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x319F JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x307B DUP4 PUSH2 0x3200 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x308B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x309A JUMPI PUSH2 0x3030 DUP4 PUSH2 0x3216 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x30A8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x3038 JUMPI PUSH2 0x3030 DUP4 PUSH2 0x3279 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2CAF SWAP2 SWAP1 PUSH2 0x3EB5 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x30FE DUP5 PUSH2 0x32CC JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3164 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x311D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x3130 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x315B JUMPI PUSH2 0x313E DUP2 PUSH2 0x296B JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x314A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x3106 JUMP JUMPDEST POP DUP1 PUSH2 0x3170 JUMPI DUP5 PUSH2 0x3196 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3186 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2CAF SWAP2 SWAP1 PUSH2 0x3E39 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x3224 DUP5 PUSH2 0x32EF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3231 DUP3 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x326F JUMPI PUSH2 0x323F DUP3 PUSH2 0x296B JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3257 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4780 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x2966 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x2966 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3286 DUP4 PUSH2 0x3306 JUMP JUMPDEST SWAP1 POP PUSH2 0x3291 DUP2 PUSH2 0x2920 JUMP JUMPDEST ISZERO PUSH2 0x3038 JUMPI PUSH2 0x329F DUP2 PUSH2 0x296B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x32B5 SWAP3 SWAP2 SWAP1 PUSH2 0x4769 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2966 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x32E4 SWAP2 SWAP1 PUSH2 0x3ED1 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x32E4 SWAP2 SWAP1 PUSH2 0x3E80 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2919 SWAP2 SWAP1 PUSH2 0x3E54 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CAF DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3368 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x337F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x33B0 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x33C3 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST PUSH2 0x4A4B JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x33E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 CALLDATALOAD PUSH2 0x33FA DUP2 PUSH2 0x4AE9 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x33E7 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3427 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3435 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3467 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3470 DUP2 PUSH2 0x4A4B JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x34B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x34C0 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x35E2 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3446 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x34E9 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3500 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x352B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3539 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x355A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x355D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3589 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3597 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x35B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x340C JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x35BB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2CAF DUP2 PUSH2 0x4AFE JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x35F2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3608 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x361B PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4A4B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3632 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3689 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3693 PUSH1 0x80 PUSH2 0x4A4B JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x36AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36B9 DUP6 DUP4 DUP7 ADD PUSH2 0x33A0 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x36CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36DB DUP6 DUP4 DUP7 ADD PUSH2 0x351B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x36F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3701 DUP5 DUP3 DUP6 ADD PUSH2 0x35E2 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x3714 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x35D7 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3730 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2CAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3758 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2919 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3774 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2919 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3794 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x379F DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x37AF DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x37D9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x37E4 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x37F4 DUP2 PUSH2 0x4AFE JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3810 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3823 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3831 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3842 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3865 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3870 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3899 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38AF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x38BB DUP7 DUP3 DUP8 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x38E1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x38F7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3903 DUP6 DUP3 DUP7 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3921 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3937 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3947 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3955 PUSH2 0x33BE DUP3 PUSH2 0x4A72 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3971 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3993 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3975 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x39B3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x39CA JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39DD JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x39EB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x39FF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A26 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3A3C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3A48 DUP5 DUP3 DUP6 ADD PUSH2 0x3579 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A61 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2919 DUP2 PUSH2 0x4AFE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3A84 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3A8F DUP2 PUSH2 0x4AFE JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3A9F DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3AB5 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x3736 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3AE9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3AFA DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x365A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3B0A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3B1A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3B36 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3B42 DUP12 DUP4 DUP13 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3B57 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3B64 DUP11 DUP3 DUP12 ADD PUSH2 0x34D8 JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3B91 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3BA2 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x365A JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3BB2 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3BC2 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BDD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3BE9 DUP11 DUP3 DUP12 ADD PUSH2 0x3678 JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3C22 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x3C2D DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3C3D DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x3C5B DUP2 PUSH2 0x4AFE JUMP JUMPDEST SWAP4 POP PUSH2 0x3C6A DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x3736 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3CA1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3CAC DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3CBC DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3CD9 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x3736 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D07 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D12 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3D37 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D42 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3D52 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3D62 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D8F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3D9A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3DAA DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3DBA DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3DED DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3DFD DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x3E0D DUP2 PUSH2 0x4AE9 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3E24 DUP2 PUSH2 0x4AFE JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3E4A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x2919 DUP4 DUP4 PUSH2 0x364B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E66 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3E70 DUP5 DUP5 PUSH2 0x364B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3E94 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3E9E DUP6 DUP6 PUSH2 0x364B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EC6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2919 DUP2 PUSH2 0x4B0C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3EE5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x3EF0 DUP2 PUSH2 0x4B0C JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F0C JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F18 DUP7 DUP3 DUP8 ADD PUSH2 0x3579 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x3F4A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x3F54 DUP14 DUP14 PUSH2 0x3669 JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x3F6F JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x3F7F DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3417 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x3F91 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x3FA1 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x3FB3 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x371F JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x3FC5 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x3FD5 DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x3357 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x3FFB JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x400D DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x34D8 JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x403E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4055 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x4068 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4072 PUSH1 0xC0 PUSH2 0x4A4B JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x4083 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x3669 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x4096 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x40A8 DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x334C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x40C8 JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x40D4 DUP13 DUP3 DUP7 ADD PUSH2 0x35E2 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x40ED DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x371F JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4124 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x413C JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4155 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41B0 JUMPI DUP2 CALLDATALOAD PUSH2 0x4195 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4182 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41B0 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41CA JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x41B0 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41F9 JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4233 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4A9F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x428C JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4267 JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x42A5 DUP2 DUP4 PUSH2 0x41E6 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x42C0 DUP3 DUP3 PUSH2 0x421B JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x42D5 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x4215 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x42E8 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x4304 DUP3 PUSH2 0x4AFE JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x431B DUP3 PUSH2 0x4AE9 JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x432F DUP2 PUSH2 0x4AFE JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x434E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4A9F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x436A DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4A9F JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x440F JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x43F1 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x45CC JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x45B1 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x459C JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x468A JUMPI DUP2 CALLDATALOAD PUSH2 0x4612 DUP2 PUSH2 0x4B0C JUMP JUMPDEST PUSH2 0x461B DUP2 PUSH2 0x4AD5 JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x462A DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x464D DUP2 DUP5 ADD DUP5 PUSH2 0x4A92 JUMP JUMPDEST PUSH2 0x4659 DUP3 DUP7 ADD DUP3 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x4669 DUP2 DUP5 ADD DUP5 PUSH2 0x4A92 JUMP JUMPDEST PUSH2 0x4675 DUP3 DUP7 ADD DUP3 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x45FF JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4720 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x46C9 DUP2 PUSH2 0x4AD5 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x46F6 DUP3 DUP9 ADD DUP3 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x470B DUP7 DUP3 ADD DUP4 PUSH2 0x4166 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46B4 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x475F PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x4247 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4776 DUP5 PUSH2 0x4ACB JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x478D DUP6 PUSH2 0x4ACB JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x47AC DUP6 PUSH2 0x4AD5 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x47C3 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x41E6 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x47E4 DUP13 PUSH2 0x4ADF JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x488B JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x4877 DUP2 DUP9 ADD DUP4 PUSH2 0x421B JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x480B JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x48A2 DUP2 DUP11 DUP13 PUSH2 0x4173 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x48B2 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x42DD JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x48C5 DUP2 DUP7 DUP9 PUSH2 0x41BB JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x499C DUP2 PUSH2 0x4ADF JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x49EA PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x421B JUMP JUMPDEST SWAP2 POP POP PUSH2 0x49FA PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x42DD JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4A6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4A88 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x2919 DUP2 PUSH2 0x4AE9 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4ABA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4AA2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x4C6 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x306B JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x306B JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x306B JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x306B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x306B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x306B JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD GT 0xE7 COINBASE DIFFICULTY PUSH27 0xC033DCFE1AF38550CF9588AD22AF3FAB87AD208456A48A82972564 PUSH20 0x6F6C634300070100330000000000000000000000 ","sourceMap":"1310:442:75:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:241:84;;;;;;:::i;:::-;;:::i;:::-;;4482:1152:86;;;;;;:::i;:::-;;:::i;2424:1525:89:-;;;;;;:::i;:::-;;:::i;1963:958:86:-;;;;;;:::i;:::-;;:::i;3922:554::-;;;;;;:::i;:::-;;:::i;1715:703:89:-;;;;;;:::i;:::-;;:::i;3695:302:84:-;;;;;;:::i;:::-;;:::i;1441:1264:80:-;;;;;;:::i;:::-;;:::i;3445:873:88:-;;;;;;:::i;:::-;;:::i;2588:1101:84:-;;;;;;:::i;:::-;;:::i;1410:955:83:-;;;;;;:::i;:::-;;:::i;2711:1004:80:-;;;;;;:::i;:::-;;:::i;1742:840:84:-;;;;;;:::i;:::-;;:::i;2332:99:82:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2545:466;;;;;;:::i;:::-;;:::i;4003:294:84:-;;;;;;:::i;:::-;;:::i;1328:280:90:-;;;;;;:::i;:::-;;:::i;2238:88:82:-;;;;;;;;;;;;;:::i;4320:1496:89:-;;;;;;:::i;:::-;;:::i;1614:315:90:-;;;;;;:::i;:::-;;:::i;2142:1005:88:-;;;;;;:::i;:::-;;:::i;3189:277:82:-;;;;;;;;;;-1:-1:-1;3189:277:82;;;;;:::i;:::-;;:::i;1390:1225:87:-;;;;;;:::i;:::-;;:::i;7560:2544:89:-;;;;;;:::i;:::-;;:::i;2927:989:86:-;;;;;;:::i;:::-;;:::i;2621:1326:87:-;;;;;;:::i;:::-;;:::i;3955:327:89:-;;;;;;:::i;:::-;;:::i;2371:853:83:-;;;;;;:::i;:::-;;:::i;3641:153:82:-;;;;;;;;;;-1:-1:-1;3641:153:82;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4303:241:84:-;4419:6;4399:17;4442:96;4462:9;4458:1;:13;4442:96;;;4492:6;;4499:1;4492:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4492:23:84;;4516:10;4492:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4473:3;;;;;4442:96;;;;4303:241;;;:::o;4482:1152:86:-;4628:27;4648:6;4628:19;:27::i;:::-;4624:100;;;4680:33;4706:6;4680:25;:33::i;:::-;4671:42;;4624:100;4861:32;;;;;4844:14;;-1:-1:-1;;;;;4861:7:86;:24;;;;:32;;4886:6;;4861:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4844:49;-1:-1:-1;5343:43:86;-1:-1:-1;;;;;5359:7:86;5343:35;5379:6;5343:35;:43::i;:::-;-1:-1:-1;;;;;5401:26:86;;5422:4;5401:26;5397:104;;5443:47;-1:-1:-1;;;;;5450:7:86;5443:28;5472:9;5483:6;5443:28;:47::i;:::-;5515:36;5535:15;5515:19;:36::i;:::-;5511:117;;;5567:50;5593:15;5610:6;5567:25;:50::i;2424:1525:89:-;2791:10;2775:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2775:26:89;;:59;;;-1:-1:-1;2829:4:89;2805:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2805:29:89;;2775:59;2767:88;;;;-1:-1:-1;;;2767:88:89;;;;;;;:::i;:::-;;;;;;;;;2871:9;2866:230;2890:5;:12;2886:1;:16;2866:230;;;2923:14;2940:5;2946:1;2940:8;;;;;;;;;;;;;;:15;;;2923:32;;2973:27;2993:6;2973:19;:27::i;:::-;2969:117;;;3038:33;3064:6;3038:25;:33::i;:::-;3020:5;3026:1;3020:8;;;;;;;;;;;;;;:15;;:51;;;;;2969:117;-1:-1:-1;2904:3:89;;2866:230;;;;3106:23;3132:10;:8;:10::i;:::-;-1:-1:-1;;;;;3132:20:89;;3161:5;3169:4;3175:5;3182:6;;3190:5;3197:6;;3205:8;3132:82;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3132:82:89;;;;;;;;;;;;:::i;:::-;3106:108;;3230:9;3225:718;3245:27;;;3225:718;;;3301:44;3321:16;;3338:1;3321:19;;;;;;;;;;;;:23;;;3301:19;:44::i;:::-;3293:82;;;;-1:-1:-1;;;3293:82:89;;;;;;;:::i;:::-;3836:96;3862:16;;3879:1;3862:19;;;;;;;;;;;;:23;;;3887:44;3896:7;3904:16;;3921:1;3904:19;;;;;;;;;;;;:25;;;3896:34;;;;;;;;;;;;;;3887:8;:44::i;:::-;3836:25;:96::i;:::-;3274:3;;3225:718;;;;2424:1525;;;;;;;;;;;;:::o;1963:958:86:-;2127:27;2147:6;2127:19;:27::i;:::-;2123:100;;;2179:33;2205:6;2179:25;:33::i;:::-;2170:42;;2123:100;-1:-1:-1;;;;;2408:23:86;;2426:4;2408:23;2404:151;;-1:-1:-1;;;;;2455:20:86;;2465:10;2455:20;2447:49;;;;-1:-1:-1;;;2447:49:86;;;;;;;:::i;:::-;2510:34;2521:6;2529;2537;2510:10;:34::i;:::-;2565:52;-1:-1:-1;;;;;2572:6:86;2565:26;2600:7;2610:6;2565:26;:52::i;:::-;2644:29;;;;;2627:14;;-1:-1:-1;;;;;2652:7:86;2644:21;;;;:29;;2666:6;;2644:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2627:46;-1:-1:-1;;;;;;2688:26:86;;2709:4;2688:26;2684:104;;2730:47;-1:-1:-1;;;;;2737:7:86;2730:28;2759:9;2770:6;2730:28;:47::i;:::-;2802:36;2822:15;2802:19;:36::i;:::-;2798:117;;;2854:50;2880:15;2897:6;2854:25;:50::i;:::-;1963:958;;;;;:::o;3922:554::-;4061:27;4081:6;4061:19;:27::i;:::-;4057:100;;;4113:33;4139:6;4113:25;:33::i;:::-;4104:42;;4057:100;4167:14;4184:6;-1:-1:-1;;;;;4184:13:86;;4206:6;4223:4;4184:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4167:62;-1:-1:-1;;;;;;4244:26:86;;4265:4;4244:26;4240:103;;4286:46;-1:-1:-1;;;;;4293:6:86;4286:27;4314:9;4325:6;4286:27;:46::i;1715:703:89:-;1982:10;1966:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1966:26:89;;:59;;;-1:-1:-1;2020:4:89;1996:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1996:29:89;;1966:59;1958:88;;;;-1:-1:-1;;;1958:88:89;;;;;;;:::i;:::-;2061:38;2081:10;:17;;;2061:19;:38::i;:::-;2057:133;;;2135:44;2161:10;:17;;;2135:25;:44::i;:::-;2115:17;;;:64;2057:133;2200:14;2217:10;:8;:10::i;:::-;-1:-1:-1;;;;;2217:15:89;;2241:5;2249:10;2261:5;2268;2275:8;2217:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2200:84;;2299:36;2319:15;2299:19;:36::i;:::-;2295:117;;;2351:50;2377:15;2394:6;2351:25;:50::i;:::-;1715:703;;;;;;;:::o;3695:302:84:-;3813:47;;;;;3793:17;;-1:-1:-1;;;;;3813:15:84;:27;;;;:47;;3841:6;;;;3849:10;;3813:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3793:67;;3875:36;3895:15;3875:19;:36::i;1441:1264:80:-;1682:27;1702:6;1682:19;:27::i;:::-;1678:100;;;1734:33;1760:6;1734:25;:33::i;:::-;1725:42;;1678:100;1960:19;1982:14;:59;;2021:11;-1:-1:-1;;;;;2021:18:80;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:59;;;1999:11;-1:-1:-1;;;;;1999:17:80;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:81;-1:-1:-1;;;;;;2231:23:80;;2249:4;2231:23;2227:157;;-1:-1:-1;;;;;2278:20:80;;2288:10;2278:20;2270:49;;;;-1:-1:-1;;;2270:49:80;;;;;;;:::i;:::-;2333:40;2344:6;2352:12;2366:6;2333:10;:40::i;:::-;2394:54;-1:-1:-1;;;;;2394:24:80;;2427:11;2441:6;2394:24;:54::i;:::-;2514:57;;;;;2497:14;;-1:-1:-1;;;;;2514:19:80;;;;;:57;;2534:9;;2545:6;;2497:14;;2556;;2514:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2497:74;;2586:36;2606:15;2586:19;:36::i;:::-;2582:117;;;2638:50;2664:15;2681:6;2638:25;:50::i;:::-;1441:1264;;;;;;;;:::o;3445:873:88:-;3656:27;3676:6;3656:19;:27::i;:::-;3652:100;;;3708:33;3734:6;3708:25;:33::i;:::-;3699:42;;3652:100;-1:-1:-1;;;;;3946:23:88;;3964:4;3946:23;3942:157;;-1:-1:-1;;;;;3993:20:88;;4003:10;3993:20;3985:49;;;;-1:-1:-1;;;3985:49:88;;;;;;;:::i;:::-;4048:40;4059:6;4067:12;4081:6;4048:10;:40::i;:::-;4136:38;;;;;4109:24;;-1:-1:-1;;;;;4136:19:88;;;;;:38;;4156:9;;4167:6;;4136:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4109:65;;4189:36;4209:15;4189:19;:36::i;:::-;4185:127;;;4241:60;4267:15;4284:16;4241:25;:60::i;:::-;3445:873;;;;;;:::o;2588:1101:84:-;2761:27;2781:6;2761:19;:27::i;:::-;2757:100;;;2813:33;2839:6;2813:25;:33::i;:::-;2804:42;;2757:100;-1:-1:-1;;;;;3048:23:84;;3066:4;3048:23;3044:158;;-1:-1:-1;;;;;3095:20:84;;3105:10;3095:20;3087:49;;;;-1:-1:-1;;;3087:49:84;;;;;;;:::i;:::-;3150:41;3161:6;3176:5;3184:6;3150:10;:41::i;:::-;3319:22;;;;;-1:-1:-1;;;;;3319:14:84;;;;;:22;;3334:6;;3319:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3541:26:84;;3562:4;3541:26;3537:146;;3583:15;3601:5;-1:-1:-1;;;;;3601:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:34;-1:-1:-1;3632:40:84;-1:-1:-1;;;;;3632:21:84;;3654:9;3665:6;3632:21;:40::i;1410:955:83:-;1607:27;1627:6;1607:19;:27::i;:::-;1603:100;;;1659:33;1685:6;1659:25;:33::i;:::-;1650:42;;1603:100;1713:17;1740:12;-1:-1:-1;;;;;1740:18:83;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1713:48;-1:-1:-1;;;;;;1951:23:83;;1969:4;1951:23;1947:155;;-1:-1:-1;;;;;1998:20:83;;2008:10;1998:20;1990:49;;;;-1:-1:-1;;;1990:49:83;;;;;;;:::i;:::-;2053:38;2064:6;2072:10;2084:6;2053:10;:38::i;:::-;2112:53;-1:-1:-1;;;;;2112:22:83;;2143:12;2158:6;2112:22;:53::i;:::-;2192:39;;;;;2175:14;;-1:-1:-1;;;;;2192:20:83;;;;;:39;;2213:6;;2221:9;;2192:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2175:56;;2246:36;2266:15;2246:19;:36::i;:::-;2242:117;;;2298:50;2324:15;2341:6;2298:25;:50::i;2711:1004:80:-;2951:27;2971:6;2951:19;:27::i;:::-;2947:100;;;3003:33;3029:6;3003:25;:33::i;:::-;2994:42;;2947:100;-1:-1:-1;;;;;3238:23:80;;3256:4;3238:23;3234:156;;-1:-1:-1;;;;;3285:20:80;;3295:10;3285:20;3277:49;;;;-1:-1:-1;;;3277:49:80;;;;;;;:::i;:::-;3340:39;3351:6;3359:11;3372:6;3340:10;:39::i;:::-;3528:53;;;;;3510:14;;-1:-1:-1;;;;;3528:20:80;;;;;:53;;3549:9;;3560:6;;3568:12;;3528:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:74;;;3596:36;3616:15;3596:19;:36::i;1742:840:84:-;1914:27;1934:6;1914:19;:27::i;:::-;1910:100;;;1966:33;1992:6;1966:25;:33::i;:::-;1957:42;;1910:100;2103:15;2121:5;-1:-1:-1;;;;;2121:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2103:34;-1:-1:-1;;;;;;2330:23:84;;2348:4;2330:23;2326:153;;-1:-1:-1;;;;;2377:20:84;;2387:10;2377:20;2369:49;;;;-1:-1:-1;;;2369:49:84;;;;;;;:::i;:::-;2432:36;2443:6;2451:8;2461:6;2432:10;:36::i;:::-;2489:44;-1:-1:-1;;;;;2489:20:84;;2518:5;2526:6;2489:20;:44::i;:::-;2543:32;;;;;-1:-1:-1;;;;;2543:13:84;;;;;:32;;2557:6;;2565:9;;2543:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1742:840;;;;;:::o;2332:99:82:-;2413:11;2332:99;:::o;2545:466::-;-1:-1:-1;;;;;2700:24:82;;2719:4;2700:24;;:37;;;2729:8;2728:9;2700:37;2692:81;;;;-1:-1:-1;;;2692:81:82;;;;;;;:::i;:::-;2783:17;2856:34;;;2892:10;2904:7;2913:8;2833:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2833:89:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:156;;;2936:13;;;;2803:156;;:::i;:::-;;;;-1:-1:-1;;2803:156:82;;;;;;;;;;-1:-1:-1;2970:34:82;-1:-1:-1;;;;;2978:6:82;2970:28;2803:156;2970:28;:34::i;4003:294:84:-;4194:96;;;;;-1:-1:-1;;;;;4194:15:84;:46;;;;:96;;4249:4;;4256:8;;4266:4;;4272:8;;4282:1;;4285;;4288;;4194:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4003:294;;;;;;:::o;1328:280:90:-;1535:5;-1:-1:-1;;;;;1535:12:90;;1548:5;1563:10;:8;:10::i;:::-;1576:5;1583:8;1593:1;1596;1599;1535:66;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:280;;;;;;;:::o;2238:88:82:-;2313:6;2238:88;:::o;4320:1496:89:-;-1:-1:-1;;;;;4580:20:89;;4590:10;4580:20;;:47;;-1:-1:-1;;;;;;4604:23:89;;4622:4;4604:23;4580:47;4572:76;;;;-1:-1:-1;;;4572:76:89;;;;;;;:::i;:::-;4969:10;4989:34;5016:6;4989:26;:34::i;:::-;4969:55;;5034:32;5069:36;5089:15;5069:19;:36::i;:::-;:67;;5135:1;5069:67;;;5108:24;;;;;-1:-1:-1;;;;;5108:13:89;;;;;:24;;5122:9;;5108:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5034:102;;5166:63;5206:4;5212:7;:16;;;5166:39;:63::i;:::-;5147:16;;;:82;5240:10;:8;:10::i;:::-;-1:-1:-1;;;;;5240:19:89;;5268:5;5276:6;5284;5292:9;5303:7;5240:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5326:36;5346:15;5326:19;:36::i;:::-;5322:488;;;5670:24;;;;;5642:25;;-1:-1:-1;;;;;5670:13:89;;;;;:24;;5684:9;;5670:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5642:52;-1:-1:-1;5708:91:89;5734:15;5751:47;5642:52;5773:24;5751:21;:47::i;1614:315:90:-;1848:5;-1:-1:-1;;;;;1848:12:90;;1861:6;1877:10;:8;:10::i;:::-;1890:5;1897:6;1905:7;1914:1;1917;1920;1848:74;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:315;;;;;;;;:::o;2142:1005:88:-;2352:28;2372:7;2352:19;:28::i;:::-;2348:103;;;2406:34;2432:7;2406:25;:34::i;:::-;2396:44;;2348:103;2461:22;2493:12;-1:-1:-1;;;;;2493:23:88;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2461:58;-1:-1:-1;;;;;;2709:23:88;;2727:4;2709:23;2705:161;;-1:-1:-1;;;;;2756:20:88;;2766:10;2756:20;2748:49;;;;-1:-1:-1;;;2748:49:88;;;;;;;:::i;:::-;2811:44;2822:6;2830:15;2847:7;2811:10;:44::i;:::-;2876:59;-1:-1:-1;;;;;2876:27:88;;2912:12;2927:7;2876:27;:59::i;:::-;2966:43;;;;;2945:18;;-1:-1:-1;;;;;2966:23:88;;;;;:43;;2990:9;;3001:7;;2966:43;;;:::i;3189:277:82:-;3271:27;3291:6;3271:19;:27::i;:::-;3267:100;;;3323:33;3349:6;3323:25;:33::i;:::-;3314:42;;3267:100;3413:46;3439:10;:8;:10::i;:::-;-1:-1:-1;;;;;3413:17:82;;;3452:6;3413:17;:46::i;:::-;3189:277;;:::o;1390:1225:87:-;1605:27;1625:6;1605:19;:27::i;:::-;1601:100;;;1657:33;1683:6;1657:25;:33::i;:::-;1648:42;;1601:100;-1:-1:-1;;;;;1892:23:87;;1910:4;1892:23;1888:155;;-1:-1:-1;;;;;1939:20:87;;1949:10;1939:20;1931:49;;;;-1:-1:-1;;;1931:49:87;;;;;;;:::i;:::-;1994:38;2005:6;2013:10;2025:6;1994:10;:38::i;:::-;2053:22;2085:10;-1:-1:-1;;;;;2085:16:87;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2179:27;;;;;2053:51;;-1:-1:-1;;;;;;2179:19:87;;;;;:27;;2199:6;;2179:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2321:40:87;;;;;2295:23;;-1:-1:-1;;;;;;2321:25:87;;;-1:-1:-1;2321:25:87;;:40;;2355:4;;2321:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2295:66;-1:-1:-1;2416:56:87;-1:-1:-1;;;;;2416:28:87;;2445:9;2295:66;2416:28;:56::i;:::-;2487:36;2507:15;2487:19;:36::i;7560:2544:89:-;-1:-1:-1;;;;;7825:20:89;;7835:10;7825:20;;:47;;-1:-1:-1;;;;;;7849:23:89;;7867:4;7849:23;7825:47;7817:76;;;;-1:-1:-1;;;7817:76:89;;;;;;;:::i;:::-;8071:29;8116:16;8103:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8103:37:89;-1:-1:-1;8071:69:89;-1:-1:-1;8239:41:89;8297:16;8283:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8283:38:89;;8239:82;;8336:9;8331:486;8351:27;;;8331:486;;;8407:44;8427:16;;8444:1;8427:19;;;;;;8407:44;8399:82;;;;-1:-1:-1;;;8399:82:89;;;;;;;:::i;:::-;8511:14;;8496:12;;8526:16;;8543:1;8526:19;;;;;;;;;;;;:25;;;8511:41;;;;;;;;;;;;;;8496:56;;8570:7;:25;;;8566:241;;;8634:16;8644:5;8634:9;:16::i;:::-;8615:13;8629:1;8615:16;;;;;;;;;;;;;:35;-1:-1:-1;;;;;8615:35:89;;;-1:-1:-1;;;;;8615:35:89;;;;;8566:241;;;8719:13;8726:5;8719:6;:13::i;:::-;:73;;8755:16;8765:5;8755:9;:16::i;:::-;-1:-1:-1;;;;;8755:26:89;;8782:9;8755:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8719:73;;;8735:9;-1:-1:-1;;;;;8735:17:89;;8719:73;8689:24;8714:1;8689:27;;;;;;;;;;;;;:103;;;;;8566:241;-1:-1:-1;8380:3:89;;8331:486;;;;8830:7;:25;;;8826:138;;;8898:10;:8;:10::i;:::-;-1:-1:-1;;;;;8898:29:89;;8928:9;8939:13;8898:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8898:55:89;;;;;;;;;;;;:::i;:::-;8871:82;;8826:138;9018:63;9058:4;9064:7;:16;;;9018:39;:63::i;:::-;8999:16;;;:82;9091:10;:8;:10::i;:::-;-1:-1:-1;;;;;9091:19:89;;9111:6;9119;9127:9;9138:7;9091:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9216:44:89;;-1:-1:-1;9277:16:89;;-1:-1:-1;;9263:38:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9263:38:89;;9216:85;;9315:7;:25;;;9311:478;;;9386:10;:8;:10::i;:::-;-1:-1:-1;;;;;9386:29:89;;9416:9;9427:13;9386:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9386:55:89;;;;;;;;;;;;:::i;:::-;9356:85;;9311:478;;;9477:9;9472:307;9492:27;;;9472:307;;;9559:14;;9544:12;;9574:16;;9591:1;9574:19;;;;;;;;;;;;:25;;;9559:41;;;;;;;;;;;;;;9544:56;;9651:13;9658:5;9651:6;:13::i;:::-;:113;;9727:16;9737:5;9727:9;:16::i;:::-;-1:-1:-1;;;;;9727:26:89;;9754:9;9727:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9651:113;;;9687:9;-1:-1:-1;;;;;9687:17:89;;9651:113;9618:27;9646:1;9618:30;;;;;;;;;;;;;;;;;:146;-1:-1:-1;9521:3:89;;9472:307;;;;9311:478;9863:9;9858:240;9878:27;;;9858:240;;;9926:161;9969:16;;9986:1;9969:19;;;;;;;;;;;;:23;;;10010:63;10045:24;10070:1;10045:27;;;;;;;;;;;;;;10010;10038:1;10010:30;;;;;;;;;;;;;;:34;;:63;;;;:::i;9926:161::-;9907:3;;9858:240;;2927:989:86;3094:27;3114:6;3094:19;:27::i;:::-;3090:100;;;3146:33;3172:6;3146:25;:33::i;:::-;3137:42;;3090:100;-1:-1:-1;;;;;3377:23:86;;3395:4;3377:23;3373:152;;-1:-1:-1;;;;;3424:20:86;;3434:10;3424:20;3416:49;;;;-1:-1:-1;;;3416:49:86;;;;;;;:::i;:::-;3479:35;3490:6;3498:7;3507:6;3479:10;:35::i;:::-;3647:22;;;;;3630:14;;-1:-1:-1;;;;;3647:7:86;:14;;;;:22;;3662:6;;3647:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3630:39;-1:-1:-1;;;;;;3684:26:86;;3705:4;3684:26;3680:103;;3726:46;-1:-1:-1;;;;;3733:6:86;3726:27;3754:9;3765:6;3726:27;:46::i;2621:1326:87:-;2834:27;2854:6;2834:19;:27::i;:::-;2830:100;;;2886:33;2912:6;2886:25;:33::i;:::-;2877:42;;2830:100;2940:22;2972:10;-1:-1:-1;;;;;2972:16:87;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2940:51;-1:-1:-1;;;;;;3181:23:87;;3199:4;3181:23;3177:160;;-1:-1:-1;;;;;3228:20:87;;3238:10;3228:20;3220:49;;;;-1:-1:-1;;;3220:49:87;;;;;;;:::i;:::-;3283:43;3294:6;3302:15;3319:6;3283:10;:43::i;:::-;3424:56;-1:-1:-1;;;;;3424:27:87;;3460:10;3473:6;3424:27;:56::i;:::-;3536:26;;;;;-1:-1:-1;;;;;3536:18:87;;;;;:26;;3555:6;;3536:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3661:35:87;;;;;3638:20;;-1:-1:-1;;;;;;3661:20:87;;;-1:-1:-1;3661:20:87;;:35;;3690:4;;3661:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3638:58;-1:-1:-1;3751:56:87;-1:-1:-1;;;;;3751:31:87;;3783:9;3638:58;3751:31;:56::i;3955:327:89:-;4066:9;4061:156;4081:14;;;4061:156;;;4141:10;4124:3;;4128:1;4124:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4124:27:89;;:61;;;-1:-1:-1;4180:4:89;4155:3;;4159:1;4155:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4155:30:89;;4124:61;4116:90;;;;-1:-1:-1;;;4116:90:89;;;;;;;:::i;:::-;4097:3;;4061:156;;;;4226:10;:8;:10::i;:::-;-1:-1:-1;;;;;4226:28:89;;4263:5;4271:3;;4226:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2371:853:83;2570:27;2590:6;2570:19;:27::i;:::-;2566:100;;;2622:33;2648:6;2622:25;:33::i;:::-;2613:42;;2566:100;-1:-1:-1;;;;;2857:23:83;;2875:4;2857:23;2853:157;;-1:-1:-1;;;;;2904:20:83;;2914:10;2904:20;2896:49;;;;-1:-1:-1;;;2896:49:83;;;;;;;:::i;:::-;2959:40;2970:6;2978:12;2992:6;2959:10;:40::i;:::-;3037:53;;;;;3020:14;;-1:-1:-1;;;;;3037:19:83;;;;;:53;;3057:6;;3065:9;;3084:4;;3037:53;;;:::i;3641:153:82:-;3719:13;3756:31;3783:3;3756:26;:31::i;:::-;3744:43;3641:153;-1:-1:-1;;;3641:153:82:o;4912:358::-;5197:66;5114;5105:75;;5104:159;4912:358;;;;:::o;6742:375::-;6817:7;6837:12;6851:13;6868:31;6895:3;6868:26;:31::i;:::-;6836:63;;;;6914:33;6943:3;6914:28;:33::i;:::-;6910:179;;;7063:1;7057:4;7050:15;7105:5;6742:375;-1:-1:-1;;;6742:375:82:o;2421:369:59:-;2502:78;2536:6;2511:21;:31;;11367:3:19;2502:8:59;:78::i;:::-;2669:12;2687:9;-1:-1:-1;;;;;2687:14:59;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11430:3:19;2732:8:59;:51::i;:::-;2421:369;;;:::o;1514:214:67:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1662:58:67;;;;;;;;;;;;;;;;;;;;;;;;;;;1626:19;:95::i;5994:392:82:-;6085:12;6100:20;6116:3;6100:15;:20::i;:::-;6351:19;;;;-1:-1:-1;;6337:43:82:o;428:250:58:-;615:3;611:11;;;649:9;;;645:17;;588:84::o;3800:360:82:-;3928:11;3924:24;;3941:7;;3924:24;3982:15;;;3995:1;3982:15;;;;;;;;;3957:22;;3982:15;;;;;;;;;;;-1:-1:-1;3982:15:82;3957:40;;4019:5;4007:6;4014:1;4007:9;;;;;;;;-1:-1:-1;;;;;4007:17:82;;;;:9;;;;;;;;;;;:17;4061:16;;;4075:1;4061:16;;;;;;;;;4034:24;;4061:16;;;;;;;;;;;;-1:-1:-1;4061:16:82;4034:43;;4100:6;4087:7;4095:1;4087:10;;;;;;;;;;;;;:19;;;;;4117:36;4129:6;4137;4145:7;4117:11;:36::i;1001:507:67:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:67;;;;;-1:-1:-1;;;;;1232:15:67;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;1296:90::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;3494:278:59:-;3569:12;3653;3667:23;3694:6;-1:-1:-1;;;;;3694:11:59;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;896:312:55:-;1193:6;1173:27;;896:312::o;5822:336:89:-;5942:12;5982:17;5974:4;:25;;;;;;;5970:182;;;6022:53;6066:8;6022:43;:53::i;:::-;6015:60;;;;5970:182;6106:35;7188:3:19;6106:7:89;:35::i;1375:166:58:-;1433:7;1452:37;1466:1;1461;:6;;5194:1:19;1452:8:58;:37::i;:::-;-1:-1:-1;1511:5:58;;;1375:166::o;2762:110:71:-;2858:5;2762:110::o;1705:105::-;-1:-1:-1;;;;;1781:22:71;;;1705:105::o;10110:336:89:-;10230:12;10270:17;10262:4;:25;;;;;;;10258:182;;;10310:53;10354:8;10310:43;:53::i;10258:182::-;10394:35;8775:3:19;10394:7:89;:35::i;7311:404:82:-;7382:12;7396:13;7428:20;7444:3;7428:15;:20::i;:::-;7421:27;;7694:4;7688:11;7679:20;;7665:44;;;:::o;5387:505::-;5736:66;5727:75;5819:66;5726:159;;5387:505::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:67:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:67;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11301:3:19;3134:8:67;:97::i;7871:595:82:-;7931:7;8457:1;8402:27;8425:3;8402:22;:27::i;:::-;8431:20;8385:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8385:67:82;;;;;;8375:78;;8385:67;8375:78;;;;8367:91;;7871:595;-1:-1:-1;;7871:595:82:o;4166:628::-;4311:33;4374:6;:13;4347:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4311:77;;4403:9;4398:346;4418:6;:13;4414:1;:17;4398:346;;;4461:272;;;;;;;;;;4676:42;4461:272;;;;4522:6;4529:1;4522:9;;;;;;;;;;;;;;-1:-1:-1;;;;;4461:272:82;;;;;4559:7;4567:1;4559:10;;;;;;;;;;;;;;4461:272;;;;4595:6;-1:-1:-1;;;;;4461:272:82;;;;;4646:4;-1:-1:-1;;;;;4461:272:82;;;;4452:3;4456:1;4452:6;;;;;;;;;;;;;;;;;:281;4433:3;;4398:346;;;;4754:10;:8;:10::i;:::-;-1:-1:-1;;;;;4754:28:82;;4783:3;4754:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;5057:714:59;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:59;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12033:3:19;5703:7:59;:37::i;6164:557:89:-;6257:12;6281:34;6318:39;6348:8;6318:29;:39::i;:::-;6281:76;-1:-1:-1;6380:57:89;6372:4;:65;;;;;;;;;6368:347;;;6460:55;6506:8;6460:45;:55::i;:::-;6453:62;;;;;6368:347;6696:8;6689:15;;;;;1459:126:19;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;10452:728:89:-;10545:12;10569:34;10606:39;10636:8;10606:29;:39::i;:::-;10569:76;-1:-1:-1;10668:60:89;10660:4;:68;;;;;;;;;10656:518;;;10751:57;10799:8;10751:47;:57::i;10656:518::-;10837:57;10829:4;:65;;;;;;;;;10825:349;;;10917:55;10963:8;10917:45;:55::i;8657:174:82:-;8757:66;8751:72;;8657:174::o;1159:122:18:-;1219:8;1257:4;1246:28;;;;;;;;;;;;:::i;6727:827:89:-;6822:12;6847:26;6875:23;6902:53;6946:8;6902:43;:53::i;:::-;6846:109;;;;6966:20;7009:9;7004:268;7028:9;:16;7024:1;:20;7004:268;;;7065:14;7082:9;7092:1;7082:12;;;;;;;;;;;;;;7065:29;;7112:27;7132:6;7112:19;:27::i;:::-;7108:154;;;7174:33;7200:6;7174:25;:33::i;:::-;7159:9;7169:1;7159:12;;;;;;;;;;;;;:48;;;;;7243:4;7225:22;;7108:154;-1:-1:-1;7046:3:89;;7004:268;;;;7389:15;:158;;7539:8;7389:158;;;7434:57;7493:9;7504:15;7423:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7389:158;7370:177;6727:827;-1:-1:-1;;;;;6727:827:89:o;1692:3378:19:-;-1:-1:-1;;;1754:18:19;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1287:122:18;1347:8;1385:4;1374:28;;;;;;;;;;;;:::i;11186:605:89:-;11283:12;11308:19;11329:18;11351:52;11394:8;11351:42;:52::i;:::-;11307:96;;;;11418:32;11438:11;11418:19;:32::i;:::-;11414:371;;;11480:38;11506:11;11480:25;:38::i;:::-;11466:52;;11550:60;11612:11;11625:10;11539:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11532:104;;;;;;11414:371;11766:8;11759:15;;;;;;11797:567;11892:12;11916:19;11938:53;11982:8;11938:43;:53::i;:::-;11916:75;;12006:32;12026:11;12006:19;:32::i;:::-;12002:356;;;12068:38;12094:11;12068:25;:38::i;:::-;12054:52;;12138:57;12197:11;12127:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12120:89;;;;;1603:253:18;1701:26;1729:23;1812:4;1801:48;;;;;;;;;;;;:::i;:::-;1768:81;;;;-1:-1:-1;1603:253:18;-1:-1:-1;;;1603:253:18:o;2269:207::-;2342:19;2363:18;2434:4;2423:46;;;;;;;;;;;;:::i;2482:167::-;2556:19;2616:4;2605:37;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;283:146::-;358:20;;383:41;358:20;383:41;:::i;454:352::-;;;584:3;577:4;569:6;565:17;561:27;551:2;;-1:-1;;592:12;551:2;-1:-1;622:20;;662:18;651:30;;648:2;;;-1:-1;;684:12;648:2;728:4;720:6;716:17;704:29;;779:3;728:4;;763:6;759:17;720:6;745:32;;742:41;739:2;;;796:1;;786:12;739:2;544:262;;;;;:::o;1241:752::-;;1373:3;1366:4;1358:6;1354:17;1350:27;1340:2;;-1:-1;;1381:12;1340:2;1428:6;1415:20;1450:95;1465:79;1537:6;1465:79;:::i;:::-;1450:95;:::i;:::-;1573:21;;;1441:104;-1:-1;1617:4;1630:14;;;;1605:17;;;1719;;;1710:27;;;;1707:36;-1:-1;1704:2;;;1756:1;;1746:12;1704:2;1781:1;1766:221;1791:6;1788:1;1785:13;1766:221;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;1859:65;;1938:14;;;;1966;;;;1813:1;1806:9;1766:221;;;1770:14;;;;;1333:660;;;;:::o;3591:771::-;;3739:3;3732:4;3724:6;3720:17;3716:27;3706:2;;-1:-1;;3747:12;3706:2;3794:6;3781:20;3816:111;3831:95;3919:6;3831:95;:::i;3816:111::-;3955:21;;;3807:120;-1:-1;3999:4;4012:14;;;;3987:17;;;4107:1;4092:264;4117:6;4114:1;4111:13;4092:264;;;4200:3;4187:17;3991:6;4175:30;10995:4;;-1:-1;;4175:30;10978:3;10974:19;;10970:30;10967:2;;;4107:1;;11003:12;10967:2;11031:20;10995:4;11031:20;:::i;:::-;3999:4;4175:30;;7057:20;11117:16;11110:75;11308:22;;4175:30;11308:22;15751:20;3999:4;11273:5;11269:16;11262:75;11461:22;;4175:30;11461:22;15751:20;11308:22;11426:5;11422:16;11415:75;11607:22;;;;4175:30;11607:22;15751:20;11461:22;11572:5;11568:16;11561:75;;10995:4;4175:30;11714:19;11701:33;11687:47;;11754:18;11746:6;11743:30;11740:2;;;4107:1;;11776:12;11740:2;11821:58;11875:3;3999:4;11866:6;4175:30;11851:22;;11821:58;:::i;:::-;11803:16;;;11796:84;4212:81;;-1:-1;;4307:14;;;;4335;;;;4139:1;4132:9;4092:264;;4416:388;;;4582:3;4575:4;4567:6;4563:17;4559:27;4549:2;;-1:-1;;4590:12;4549:2;-1:-1;4620:20;;4660:18;4649:30;;4646:2;;;-1:-1;;4682:12;4646:2;4726:4;4718:6;4714:17;4702:29;;4777:3;4726:4;4769;4761:6;4757:17;4718:6;4743:32;;4740:41;4737:2;;;4794:1;;4784:12;5261:707;;5378:3;5371:4;5363:6;5359:17;5355:27;5345:2;;-1:-1;;5386:12;5345:2;5433:6;5420:20;5455:80;5470:64;5527:6;5470:64;:::i;5455:80::-;5563:21;;;5446:89;-1:-1;5607:4;5620:14;;;;5595:17;;;5709;;;5700:27;;;;5697:36;-1:-1;5694:2;;;5746:1;;5736:12;5694:2;5771:1;5756:206;5781:6;5778:1;5775:13;5756:206;;;15751:20;;5849:50;;5913:14;;;;5941;;;;5803:1;5796:9;5756:206;;5994:722;;6122:3;6115:4;6107:6;6103:17;6099:27;6089:2;;-1:-1;;6130:12;6089:2;6170:6;6164:13;6192:80;6207:64;6264:6;6207:64;:::i;6192:80::-;6300:21;;;6183:89;-1:-1;6344:4;6357:14;;;;6332:17;;;6446;;;6437:27;;;;6434:36;-1:-1;6431:2;;;6483:1;;6473:12;6431:2;6508:1;6493:217;6518:6;6515:1;6512:13;6493:217;;;15899:13;;6586:61;;6661:14;;;;6689;;;;6540:1;6533:9;6493:217;;6724:124;6788:20;;6813:30;6788:20;6813:30;:::i;7486:440::-;;7587:3;7580:4;7572:6;7568:17;7564:27;7554:2;;-1:-1;;7595:12;7554:2;7642:6;7629:20;81550:18;81542:6;81539:30;81536:2;;;-1:-1;;81572:12;81536:2;7664:64;81713:4;-1:-1;;7580:4;81630:6;81626:17;81622:33;81703:15;7664:64;:::i;:::-;7655:73;;7748:6;7741:5;7734:21;7852:3;81713:4;7843:6;7776;7834:16;;7831:25;7828:2;;;7869:1;;7859:12;7828:2;93170:6;81713:4;7776:6;7772:17;81713:4;7810:5;7806:16;93147:30;93226:1;93208:16;;;81713:4;93208:16;93201:27;7810:5;7547:379;-1:-1;;7547:379::o;9724:160::-;9815:13;;96329:1;96319:12;;96309:2;;96345:1;;96335:12;10058:158;10139:20;;96558:1;96548:12;;96538:2;;96574:1;;96564:12;10223:156;10303:20;;96672:1;96662:12;;96652:2;;96688:1;;96678:12;11944:1120;;12066:4;12054:9;12049:3;12045:19;12041:30;12038:2;;;-1:-1;;12074:12;12038:2;12102:20;12066:4;12102:20;:::i;:::-;12093:29;;12187:17;12174:31;12225:18;;12217:6;12214:30;12211:2;;;12202:1;;12247:12;12211:2;12292:89;12377:3;12368:6;12357:9;12353:22;12292:89;:::i;:::-;12274:16;12267:115;12480:2;12469:9;12465:18;12452:32;12438:46;;12225:18;12496:6;12493:30;12490:2;;;12202:1;;12526:12;12490:2;12571:74;12641:3;12632:6;12621:9;12617:22;12571:74;:::i;:::-;12480:2;12557:5;12553:16;12546:100;12739:2;12728:9;12724:18;12711:32;12697:46;;12225:18;12755:6;12752:30;12749:2;;;12202:1;;12785:12;12749:2;;12830:58;12884:3;12875:6;12864:9;12860:22;12830:58;:::i;:::-;12739:2;12816:5;12812:16;12805:84;;12996:46;13038:3;12963:2;13018:9;13014:22;12996:46;:::i;:::-;12963:2;12982:5;12978:16;12971:72;12032:1032;;;;:::o;13108:166::-;;13226:3;13217:6;13212:3;13208:16;13204:26;13201:2;;;-1:-1;;13233:12;13201:2;-1:-1;13253:15;13194:80;-1:-1;13194:80::o;15962:126::-;16027:20;;90696:4;90685:16;;97130:33;;97120:2;;97177:1;;97167:12;16095:241;;16199:2;16187:9;16178:7;16174:23;16170:32;16167:2;;;-1:-1;;16205:12;16167:2;85:6;72:20;97:33;124:5;97:33;:::i;16343:263::-;;16458:2;16446:9;16437:7;16433:23;16429:32;16426:2;;;-1:-1;;16464:12;16426:2;226:6;220:13;238:33;265:5;238:33;:::i;16613:617::-;;;;;16768:3;16756:9;16747:7;16743:23;16739:33;16736:2;;;-1:-1;;16775:12;16736:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;16827:63;-1:-1;16927:2;16966:22;;72:20;97:33;72:20;97:33;:::i;:::-;16730:500;;16935:63;;-1:-1;;;;17035:2;17074:22;;15751:20;;17143:2;17182:22;15751:20;;16730:500::o;17237:609::-;;;;;17391:2;17379:9;17370:7;17366:23;17362:32;17359:2;;;-1:-1;;17397:12;17359:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;17449:63;-1:-1;17549:2;17585:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;17557:60;-1:-1;17682:2;17667:18;;17654:32;17706:18;17695:30;;;17692:2;;;-1:-1;;17728:12;17692:2;17813:6;17802:9;17798:22;;;7255:3;7248:4;7240:6;7236:17;7232:27;7222:2;;-1:-1;;7263:12;7222:2;7306:6;7293:20;17706:18;7325:6;7322:30;7319:2;;;-1:-1;;7355:12;7319:2;7450:3;17549:2;7430:17;7391:6;7416:32;;7413:41;7410:2;;;-1:-1;;7457:12;7410:2;17353:493;;;;-1:-1;;17549:2;7387:17;;-1:-1;;;17353:493::o;17853:491::-;;;;17991:2;17979:9;17970:7;17966:23;17962:32;17959:2;;;-1:-1;;17997:12;17959:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;18049:63;18149:2;18188:22;;15751:20;;-1:-1;18257:2;18296:22;;;15751:20;;17953:391;-1:-1;;;17953:391::o;18351:522::-;;;;18507:2;18495:9;18486:7;18482:23;18478:32;18475:2;;;-1:-1;;18513:12;18475:2;18571:17;18558:31;18609:18;18601:6;18598:30;18595:2;;;-1:-1;;18631:12;18595:2;18669:80;18741:7;18732:6;18721:9;18717:22;18669:80;:::i;:::-;18651:98;;;;-1:-1;18786:2;18825:22;;;;15751:20;;18469:404;-1:-1;;;;18469:404::o;18880:457::-;;;19049:2;19037:9;19028:7;19024:23;19020:32;19017:2;;;-1:-1;;19055:12;19017:2;19113:17;19100:31;19151:18;19143:6;19140:30;19137:2;;;-1:-1;;19173:12;19137:2;19211:110;19313:7;19304:6;19293:9;19289:22;19211:110;:::i;:::-;19193:128;;;;-1:-1;19011:326;-1:-1;;;;19011:326::o;19344:390::-;;19483:2;;19471:9;19462:7;19458:23;19454:32;19451:2;;;-1:-1;;19489:12;19451:2;19540:17;19534:24;19578:18;19570:6;19567:30;19564:2;;;-1:-1;;19600:12;19564:2;19686:22;;2946:4;2934:17;;2930:27;-1:-1;2920:2;;-1:-1;;2961:12;2920:2;3001:6;2995:13;3023:79;3038:63;3094:6;3038:63;:::i;3023:79::-;3130:21;;;3187:14;;;;3162:17;;;3276;;;3267:27;;;;3264:36;-1:-1;3261:2;;;-1:-1;;3303:12;3261:2;-1:-1;3329:10;;3323:216;3348:6;3345:1;3342:13;3323:216;;;10779:13;;3416:60;;3370:1;3363:9;;;;;3490:14;;;;3518;;3323:216;;;-1:-1;19620:98;19445:289;-1:-1;;;;;;;19445:289::o;19741:588::-;;;;19930:2;19918:9;19909:7;19905:23;19901:32;19898:2;;;-1:-1;;19936:12;19898:2;19994:17;19981:31;20032:18;;20024:6;20021:30;20018:2;;;-1:-1;;20054:12;20018:2;20188:6;20177:9;20173:22;;;5013:3;5006:4;4998:6;4994:17;4990:27;4980:2;;-1:-1;;5021:12;4980:2;5064:6;5051:20;20032:18;5083:6;5080:30;5077:2;;;-1:-1;;5113:12;5077:2;5208:3;5157:4;5200;5192:6;5188:17;5149:6;5174:32;;5171:41;5168:2;;;-1:-1;;5215:12;5168:2;5157:4;5145:17;;;;20074:131;;-1:-1;20281:22;;;;15751:20;;19892:437;-1:-1;;;;19892:437::o;20336:392::-;;20476:2;20464:9;20455:7;20451:23;20447:32;20444:2;;;-1:-1;;20482:12;20444:2;20533:17;20527:24;20571:18;20563:6;20560:30;20557:2;;;-1:-1;;20593:12;20557:2;20623:89;20704:7;20695:6;20684:9;20680:22;20623:89;:::i;:::-;20613:99;20438:290;-1:-1;;;;20438:290::o;20735:257::-;;20847:2;20835:9;20826:7;20822:23;20818:32;20815:2;;;-1:-1;;20853:12;20815:2;6936:6;6930:13;6948:30;6972:5;6948:30;:::i;20999:859::-;;;;;;;21183:3;21171:9;21162:7;21158:23;21154:33;21151:2;;;-1:-1;;21190:12;21151:2;6801:6;6788:20;6813:30;6837:5;6813:30;:::i;:::-;21242:60;-1:-1;21339:2;21378:22;;72:20;97:33;72:20;97:33;:::i;:::-;21347:63;-1:-1;21447:2;21486:22;;15751:20;;-1:-1;21573:51;21616:7;21555:2;21592:22;;21573:51;:::i;:::-;21563:61;;21661:3;21705:9;21701:22;7057:20;21670:63;;21770:3;21814:9;21810:22;7057:20;21779:63;;21145:713;;;;;;;;:::o;21865:1293::-;;;;;;;;22180:3;22168:9;22159:7;22155:23;22151:33;22148:2;;;-1:-1;;22187:12;22148:2;7070:6;7057:20;22239:63;;22357:67;22416:7;22339:2;22396:9;22392:22;22357:67;:::i;:::-;22347:77;;22461:2;22504:9;22500:22;72:20;97:33;124:5;97:33;:::i;:::-;22469:63;-1:-1;22569:2;22616:22;;358:20;383:41;358:20;383:41;:::i;:::-;22577:71;-1:-1;22713:3;22698:19;;22685:33;22738:18;22727:30;;;22724:2;;;-1:-1;;22760:12;22724:2;22790:86;22868:7;22859:6;22848:9;22844:22;22790:86;:::i;:::-;22780:96;;22941:3;22930:9;22926:19;22913:33;22899:47;;22738:18;22958:6;22955:30;22952:2;;;-1:-1;;22988:12;22952:2;;23026:116;23134:7;23125:6;23114:9;23110:22;23026:116;:::i;:::-;22142:1016;;;;-1:-1;22142:1016;;-1:-1;22142:1016;;;;23008:134;;-1:-1;;;22142:1016::o;23165:1175::-;;;;;;;;23418:3;23406:9;23397:7;23393:23;23389:33;23386:2;;;-1:-1;;23425:12;23386:2;7070:6;7057:20;23477:63;;23595:67;23654:7;23577:2;23634:9;23630:22;23595:67;:::i;:::-;23585:77;;23699:2;23742:9;23738:22;72:20;97:33;124:5;97:33;:::i;:::-;23707:63;-1:-1;23807:2;23846:22;;72:20;97:33;72:20;97:33;:::i;:::-;23815:63;-1:-1;23943:3;23928:19;;23915:33;23968:18;23957:30;;23954:2;;;-1:-1;;23990:12;23954:2;24020:86;24098:7;24089:6;24078:9;24074:22;24020:86;:::i;:::-;24010:96;;;24143:3;24187:9;24183:22;15751:20;24152:63;;24252:3;24296:9;24292:22;15751:20;24261:63;;23380:960;;;;;;;;;;:::o;24347:1159::-;;;;;;;;;24589:3;24577:9;24568:7;24564:23;24560:33;24557:2;;;-1:-1;;24596:12;24557:2;8205:6;8192:20;8217:57;8268:5;8217:57;:::i;:::-;24648:87;-1:-1;24772:2;24811:22;;72:20;97:33;72:20;97:33;:::i;:::-;24780:63;-1:-1;24880:2;24919:22;;15751:20;;-1:-1;24988:2;25027:22;;15751:20;;-1:-1;25096:3;25133:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;25105:60;-1:-1;25221:51;25264:7;25202:3;25240:22;;25221:51;:::i;:::-;25211:61;;25309:3;25353:9;25349:22;7057:20;25318:63;;25418:3;25462:9;25458:22;7057:20;25427:63;;24551:955;;;;;;;;;;;:::o;25513:1033::-;;;;;;;;25738:3;25726:9;25717:7;25713:23;25709:33;25706:2;;;-1:-1;;25745:12;25706:2;8387:6;8374:20;8399:54;8447:5;8399:54;:::i;:::-;25797:84;-1:-1;25918:2;25957:22;;72:20;97:33;72:20;97:33;:::i;:::-;25926:63;-1:-1;26026:2;26065:22;;15751:20;;-1:-1;26134:2;26173:22;;15751:20;;-1:-1;26261:51;26304:7;26242:3;26280:22;;26261:51;:::i;:::-;26251:61;;26349:3;26393:9;26389:22;7057:20;26358:63;;26458:3;26502:9;26498:22;7057:20;26467:63;;25700:846;;;;;;;;;;:::o;26853:396::-;;;26989:2;26977:9;26968:7;26964:23;26960:32;26957:2;;;-1:-1;;26995:12;26957:2;8560:6;8547:20;8572:48;8614:5;8572:48;:::i;:::-;27047:78;27162:2;27201:22;;;;15751:20;;-1:-1;;;26951:298::o;27256:777::-;;;;;;27445:3;27433:9;27424:7;27420:23;27416:33;27413:2;;;-1:-1;;27452:12;27413:2;8900:6;8887:20;8912:50;8956:5;8912:50;:::i;:::-;27504:80;-1:-1;27621:2;27660:22;;72:20;97:33;72:20;97:33;:::i;:::-;27629:63;-1:-1;27729:2;27768:22;;72:20;97:33;72:20;97:33;:::i;:::-;27407:626;;;;-1:-1;27737:63;;27837:2;27876:22;;15751:20;;-1:-1;27945:3;27985:22;15751:20;;27407:626;-1:-1;;27407:626::o;29148:677::-;;;;;29333:3;29321:9;29312:7;29308:23;29304:33;29301:2;;;-1:-1;;29340:12;29301:2;9271:6;9258:20;9283:63;9340:5;9283:63;:::i;:::-;29392:93;-1:-1;29522:2;29561:22;;72:20;97:33;72:20;97:33;:::i;:::-;29530:63;-1:-1;29630:2;29669:22;;72:20;97:33;72:20;97:33;:::i;:::-;29295:530;;;;-1:-1;29638:63;;29738:2;29777:22;15751:20;;-1:-1;;29295:530::o;29832:911::-;;;;;;;30042:3;30030:9;30021:7;30017:23;30013:33;30010:2;;;-1:-1;;30049:12;30010:2;9462:6;9449:20;9474:57;9525:5;9474:57;:::i;:::-;30101:87;-1:-1;30225:2;30264:22;;72:20;97:33;72:20;97:33;:::i;:::-;30233:63;-1:-1;30333:2;30372:22;;72:20;97:33;72:20;97:33;:::i;:::-;30341:63;-1:-1;30441:2;30480:22;;15751:20;;-1:-1;30549:3;30586:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;30558:60;;;;30655:3;30699:9;30695:22;15751:20;30664:63;;30004:739;;;;;;;;:::o;31544:289::-;;31672:2;31660:9;31651:7;31647:23;31643:32;31640:2;;;-1:-1;;31678:12;31640:2;31740:77;31809:7;31785:22;31740:77;:::i;31840:425::-;;;31985:2;31973:9;31964:7;31960:23;31956:32;31953:2;;;-1:-1;;31991:12;31953:2;32053:77;32122:7;32098:22;32053:77;:::i;:::-;32043:87;;32167:2;32221:9;32217:22;15899:13;32175:74;;31947:318;;;;;:::o;32272:561::-;;;;32434:2;32422:9;32413:7;32409:23;32405:32;32402:2;;;-1:-1;;32440:12;32402:2;32502:77;32571:7;32547:22;32502:77;:::i;:::-;32492:87;;32616:2;32670:9;32666:22;15899:13;32624:74;;32735:2;32789:9;32785:22;15899:13;32743:74;;32396:437;;;;;:::o;32840:289::-;;32968:2;32956:9;32947:7;32943:23;32939:32;32936:2;;;-1:-1;;32974:12;32936:2;9988:6;9982:13;10000:46;10040:5;10000:46;:::i;33136:690::-;;;;33323:2;33311:9;33302:7;33298:23;33294:32;33291:2;;;-1:-1;;33329:12;33291:2;9988:6;9982:13;10000:46;10040:5;10000:46;:::i;:::-;33526:2;33511:18;;33505:25;33381:87;;-1:-1;33550:18;33539:30;;33536:2;;;-1:-1;;33572:12;33536:2;33602:89;33683:7;33674:6;33663:9;33659:22;33602:89;:::i;:::-;33592:99;;;33728:2;33782:9;33778:22;15899:13;33736:74;;33285:541;;;;;:::o;33833:1983::-;;;;;;;;;;;;34315:3;34303:9;34294:7;34290:23;34286:33;34283:2;;;-1:-1;;34322:12;34283:2;34384:66;34442:7;34418:22;34384:66;:::i;:::-;34374:76;;34539:18;;34515:2;34504:9;34500:18;34487:32;34528:30;34525:2;;;-1:-1;;34561:12;34525:2;34591:109;34692:7;34515:2;34504:9;34500:18;34487:32;34672:9;34668:22;34591:109;:::i;:::-;34581:119;;34539:18;34765:2;34754:9;34750:18;34737:32;34778:30;34775:2;;;-1:-1;;34811:12;34775:2;34849:95;34936:7;34765:2;34754:9;34750:18;34737:32;34916:9;34912:22;34849:95;:::i;:::-;34831:113;;-1:-1;34831:113;-1:-1;34999:87;35078:7;34981:2;35054:22;;34999:87;:::i;:::-;34989:97;;34539:18;35151:3;35140:9;35136:19;35123:33;35165:30;35162:2;;;-1:-1;;35198:12;35162:2;35236:79;35307:7;35151:3;35140:9;35136:19;35123:33;35287:9;35283:22;35236:79;:::i;:::-;35218:97;;-1:-1;35218:97;-1:-1;35352:3;35392:22;;15751:20;;-1:-1;35461:3;35501:22;;15751:20;;-1:-1;35598:3;35583:19;;35570:33;35612:30;-1:-1;35609:2;;;-1:-1;;35645:12;35609:2;;35684:116;35792:7;35598:3;35587:9;35583:19;35570:33;35772:9;35768:22;35684:116;:::i;:::-;35665:135;;;;;;;;34277:1539;;;;;;;;;;;;;;:::o;35823:1081::-;;;;;;;36074:3;36062:9;36053:7;36049:23;36045:33;36042:2;;;-1:-1;;36081:12;36042:2;36139:17;36126:31;36177:18;;36169:6;36166:30;36163:2;;;-1:-1;;36199:12;36163:2;36278:22;;;;14593:4;14572:19;;;14568:30;14565:2;;;-1:-1;;14601:12;14565:2;14629:20;14593:4;14629:20;:::i;:::-;7070:6;7057:20;14715:16;14708:75;14877:62;14935:3;14844:2;14915:9;14911:22;14877:62;:::i;:::-;14844:2;14863:5;14859:16;14852:88;15004:2;15077:9;15073:22;8016:20;8041:48;8083:5;8041:48;:::i;:::-;15004:2;15019:16;;15012:90;15200:64;15260:3;15167:2;15236:22;;15200:64;:::i;:::-;15167:2;15186:5;15182:16;15175:90;15328:3;15387:9;15383:22;15751:20;15328:3;15348:5;15344:16;15337:75;15505:3;15494:9;15490:19;15477:33;36177:18;15522:6;15519:30;15516:2;;;-1:-1;;15552:12;15516:2;15597:58;15651:3;15642:6;15631:9;15627:22;15597:58;:::i;:::-;15505:3;15583:5;15579:16;15572:84;;36219:91;;;;;;36365:87;36444:7;14844:2;36424:9;36420:22;36365:87;:::i;:::-;36036:868;;36355:97;;-1:-1;;;;15505:3;36529:22;;15751:20;;14593:4;36638:22;;15751:20;;36707:3;36747:22;;15751:20;;-1:-1;36816:3;36856:22;;;15751:20;;-1:-1;36036:868::o;36911:241::-;;37015:2;37003:9;36994:7;36990:23;36986:32;36983:2;;;-1:-1;;37021:12;36983:2;-1:-1;15751:20;;36977:175;-1:-1;36977:175::o;37159:263::-;;37274:2;37262:9;37253:7;37249:23;37245:32;37242:2;;;-1:-1;;37280:12;37242:2;-1:-1;15899:13;;37236:186;-1:-1;37236:186::o;37429:399::-;;;37561:2;37549:9;37540:7;37536:23;37532:32;37529:2;;;-1:-1;;37567:12;37529:2;-1:-1;;15899:13;;37730:2;37780:22;;;15899:13;;;;;-1:-1;37523:305::o;39852:127::-;-1:-1;;;;;90480:54;39929:45;;39923:56::o;41103:740::-;;85407:6;85402:3;85395:19;85444:4;;85439:3;85435:14;41265:93;;41458:21;-1:-1;41485:336;41510:6;41507:1;41504:13;41485:336;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;-1:-1;;;;;90480:54;50492:65;;38201:14;;;;87647:12;;;;41532:1;41525:9;41485:336;;;-1:-1;41827:10;;41252:591;-1:-1;;;;;41252:591::o;43484:657::-;;85407:6;85402:3;85395:19;85444:4;;85439:3;85435:14;43629:92;;43805:21;-1:-1;43832:287;43857:6;43854:1;43851:13;43832:287;;;10633:20;;49054:37;;38591:14;;;;87945:12;;;;43879:1;43872:9;43832:287;;47374:670;;47557:5;83282:12;85407:6;85402:3;85395:19;85444:4;;85439:3;85435:14;47569:83;;85444:4;47723:5;82130:14;-1:-1;47762:260;47787:6;47784:1;47781:13;47762:260;;;47848:13;;49054:37;;39675:14;;;;84195;;;;47809:1;47802:9;47762:260;;48781:94;88495:13;88488:21;48836:34;;48830:45::o;49723:323::-;;49855:5;83282:12;85407:6;85402:3;85395:19;49938:52;49983:6;85444:4;85439:3;85435:14;85444:4;49964:5;49960:16;49938:52;:::i;:::-;93769:2;93749:14;-1:-1;;93745:28;50002:39;;;;85444:4;50002:39;;49803:243;-1:-1;;49803:243::o;54743:1142::-;54978:23;;54910:4;55014:38;;;83282:12;;54901:14;;;85395:19;;;54743:1142;;85444:4;;82130:14;;;;85435;;;;54743:1142;42323:290;42348:6;42345:1;42342:13;42323:290;;;42409:13;;-1:-1;;;;;90480:54;50492:65;;84195:14;;;;38201;;;;42370:1;42363:9;42323:290;;;42327:14;;85444:4;55272:5;55268:16;55262:23;55242:43;;55331:3;55325:4;55321:14;85444:4;55309:3;55305:14;55298:38;55351:103;55449:4;55435:12;55351:103;:::i;:::-;55343:111;;;;55543:4;55536:5;55532:16;55526:23;55595:3;55589:4;55585:14;55543:4;55573:3;55569:14;55562:38;55615:71;55681:4;55667:12;55615:71;:::i;:::-;55607:79;;;55784:4;55777:5;55773:16;55767:23;55796:57;55784:4;55842:3;55838:14;55824:12;55796:57;:::i;:::-;-1:-1;55869:11;54883:1002;-1:-1;;;54883:1002::o;55959:949::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;90480:54;;;39929:45;;87232:2;87223:12;;6788:20;;6813:30;6788:20;6813:30;:::i;:::-;88495:13;;88488:21;87232:2;56477:14;;48836:34;87489:12;;;358:20;;383:41;358:20;383:41;:::i;:::-;90480:54;87489:12;56687:14;;39929:45;87367:12;;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;48863:5;88495:13;88488:21;87367:12;56876:3;56872:14;48836:34;;56091:817;;:::o;62278:271::-;;50213:5;83282:12;50324:52;50369:6;50364:3;50357:4;50350:5;50346:16;50324:52;:::i;:::-;50388:16;;;;;62412:137;-1:-1;;62412:137::o;62556:448::-;;50213:5;83282:12;50324:52;50369:6;50364:3;50357:4;50350:5;50346:16;50324:52;:::i;:::-;50388:16;;93170:6;93165:3;50388:16;93147:30;93208:16;;;93201:27;;;-1:-1;93208:16;62746:258;-1:-1;;62746:258::o;63397:392::-;49054:37;;;63650:2;63641:12;;49054:37;63752:12;;;63541:248::o;63796:222::-;-1:-1;;;;;90480:54;;;;39929:45;;63923:2;63908:18;;63894:124::o;64270:464::-;-1:-1;;;;;90480:54;;;39929:45;;90480:54;;;;64643:2;64628:18;;39929:45;88495:13;;88488:21;64720:2;64705:18;;48836:34;64463:2;64448:18;;64434:300::o;64741:527::-;;64969:2;64958:9;64954:18;-1:-1;;;;;90491:42;88305:5;90480:54;39789:3;39782:58;65095:2;64969;65095;65084:9;65080:18;65073:48;65135:123;42905:5;83282:12;85407:6;85402:3;85395:19;85435:14;64958:9;85435:14;42917:93;;65095:2;43096:5;82130:14;43108:21;;-1:-1;43135:290;43160:6;43157:1;43154:13;43135:290;;;43221:13;;90480:54;;50492:65;;84195:14;;;;38413;;;;43182:1;43175:9;43135:290;;;-1:-1;65127:131;;64940:328;-1:-1;;;;;;;;64940:328::o;65275:333::-;-1:-1;;;;;90480:54;;;39929:45;;90480:54;;65594:2;65579:18;;39929:45;65430:2;65415:18;;65401:207::o;65615:984::-;-1:-1;;;;;90480:54;;;39929:45;;90480:54;;;;66093:2;66078:18;;39929:45;66176:2;66161:18;;49054:37;;;;66259:2;66244:18;;49054:37;;;;88495:13;88488:21;66336:3;66321:19;;48836:34;90696:4;90685:16;66416:3;66401:19;;62231:35;66500:3;66485:19;;49054:37;66584:3;66569:19;;49054:37;;;;65928:3;65913:19;;65899:700::o;66606:884::-;-1:-1;;;;;90480:54;;;39929:45;;90480:54;;;;67062:2;67047:18;;39929:45;67145:2;67130:18;;49054:37;;;;67228:2;67213:18;;49054:37;;;;90696:4;90685:16;67307:3;67292:19;;62231:35;67391:3;67376:19;;49054:37;67475:3;67460:19;;49054:37;;;;66897:3;66882:19;;66868:622::o;67497:872::-;-1:-1;;;;;90480:54;;;39929:45;;88495:13;;88488:21;67941:2;67926:18;;48836:34;90480:54;;;;68024:2;68009:18;;39929:45;68107:2;68092:18;;49054:37;;;;90696:4;90685:16;68186:3;68171:19;;62231:35;68270:3;68255:19;;49054:37;;;;68354:3;68339:19;;49054:37;;;;67782:3;67767:19;;67753:616::o;68376:345::-;-1:-1;;;;;90480:54;;;;39929:45;;90696:4;90685:16;68707:2;68692:18;;52172:56;68537:2;68522:18;;68508:213::o;68728:333::-;-1:-1;;;;;90480:54;;;;39929:45;;69047:2;69032:18;;49054:37;68883:2;68868:18;;68854:207::o;69068:432::-;-1:-1;;;;;90480:54;;;;39929:45;;69409:2;69394:18;;49054:37;;;;88495:13;88488:21;69486:2;69471:18;;48836:34;69245:2;69230:18;;69216:284::o;69507:558::-;-1:-1;;;;;90480:54;;;;39929:45;;69884:2;69869:18;;49054:37;;;;90399:6;90388:18;69974:2;69959:18;;52026:57;88495:13;88488:21;70051:2;70036:18;;48836:34;69719:3;69704:19;;69690:375::o;70072:517::-;70295:2;70309:47;;;70280:18;;85395:19;;;70072:517;40716:21;85435:14;;;70072:517;40743:291;40768:6;40765:1;40762:13;40743:291;;;85444:4;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;90480:54;39929:45;;87223:12;;;;37989:14;;;;40790:1;40783:9;40743:291;;;40747:14;70362:126;;;;;-1:-1;;;;;88305:5;90480:54;85444:4;70564:9;70560:18;39782:58;70266:323;;;;;;:::o;70596:518::-;70847:2;70861:47;;;70832:18;;;85395:19;;;70596:518;;85435:14;;;;45848:21;70596:518;45875:421;45900:6;45897:1;45894:13;45875:421;;;10488:6;10475:20;10500:55;10549:5;10500:55;:::i;:::-;89895:46;89935:5;89895:46;:::i;:::-;51759:70;;87819:12;;;72:20;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;90480:54;60083:14;;;39929:45;60195:16;;;15751:20;60266:14;;;49054:37;60389:4;60345:50;60378:16;;;60199:5;60345:50;:::i;:::-;60401:63;60389:4;60453:3;60449:14;60435:12;60401:63;:::i;:::-;;;60583:4;60531:58;60583:4;60576:5;60572:16;60565:5;60531:58;:::i;:::-;60595:79;60583:4;60663:3;60659:14;60645:12;60595:79;:::i;:::-;-1:-1;;39196:4;39187:14;;;;84999;;;;;45922:1;45915:9;45875:421;;;-1:-1;70914:190;;70818:296;-1:-1;;;;;;;70818:296::o;71121:494::-;71360:2;71374:47;;;83282:12;;71345:18;;;85395:19;;;71121:494;;71360:2;85435:14;;;;;;82130;;;71121:494;46960:353;46985:6;46982:1;46979:13;46960:353;;;47052:6;47046:13;60984:16;60978:23;89895:46;89935:5;89895:46;:::i;:::-;51759:70;;61159:16;;;61153:23;-1:-1;;;;;90480:54;61245:14;;;39929:45;61330:16;;;61324:23;61401:14;;;49054:37;61497:4;61486:16;;;61480:23;61509:63;61557:14;;;61480:23;61509:63;:::i;:::-;-1:-1;;61656:4;61645:16;;;61639:23;;61668:79;61732:14;;;61639:23;61668:79;:::i;:::-;-1:-1;;39502:4;39493:14;;;;;84195;;;;47007:1;47000:9;46960:353;;;-1:-1;71427:178;;71331:284;-1:-1;;;;;;;71331:284::o;71622:768::-;;49084:5;49061:3;49054:37;-1:-1;;;;;90491:42;88305:5;90480:54;72080:2;72069:9;72065:18;39929:45;90491:42;88305:5;90480:54;72179:2;72168:9;72164:18;39929:45;;71915:3;72216:2;72205:9;72201:18;72194:48;72256:124;71915:3;71904:9;71900:19;72366:6;72256:124;:::i;:::-;72248:132;71886:504;-1:-1;;;;;;71886:504::o;73678:355::-;73844:2;73829:18;;89756:46;89796:5;89756:46;:::i;:::-;51150:61;;;74019:2;74004:18;49054:37;73815:218;:::o;74040:466::-;74234:2;74219:18;;89756:46;89796:5;89756:46;:::i;:::-;51150:61;;;74409:2;74394:18;;49054:37;;;;74492:2;74477:18;;;49054:37;74205:301;:::o;74513:614::-;;89895:46;89935:5;89895:46;:::i;:::-;92260:37;51312:3;51305:61;74757:2;74886;74875:9;74871:18;74864:48;74926:108;74757:2;74746:9;74742:18;75020:6;74926:108;:::i;:::-;74918:116;;49084:5;75113:2;75102:9;75098:18;49054:37;74728:399;;;;;;:::o;75134:1568::-;;75723:3;;75712:9;75708:19;90034:46;90074:5;90034:46;:::i;:::-;51450:61;;;75853:2;75838:18;;;75831:48;;;;83282:12;;85395:19;;;;85435:14;;;;;44695:17;;;44686:27;;;;;;82130:14;;;-1:-1;44854:423;44879:6;44876:1;44873:13;44854:423;;;44931:20;;;;;44919:33;;44980:13;;53830:23;;49054:37;;53998:16;;;53992:23;54069:14;;;49054:37;54172:4;54161:16;;;54155:23;54232:14;;;49054:37;54328:4;54317:16;;;54311:23;54388:14;;;49054:37;54486:4;54475:16;;;54469:23;53762:4;54512:14;;;54505:38;;;54469:23;54558:71;53753:14;;;54469:23;54558:71;:::i;:::-;45256:14;;;;45000:134;-1:-1;;;84195:14;;;;44901:1;44894:9;44854:423;;;44858:14;;;;76111:9;76105:4;76101:20;54172:4;76085:9;76081:18;76074:48;76136:133;76264:4;76255:6;76247;76136:133;:::i;:::-;76128:141;;;76280:138;54328:4;76403:9;76399:18;76390:6;76280:138;:::i;:::-;76467:9;76461:4;76457:20;76451:3;76440:9;76436:19;76429:49;76492:116;76603:4;76594:6;76586;76492:116;:::i;:::-;76484:124;;;49084:5;76687:3;76676:9;76672:19;49054:37;75694:1008;;;;;;;;;;;:::o;76709:416::-;76909:2;76923:47;;;52465:2;76894:18;;;85395:19;52501:18;85435:14;;;52481:39;52539:12;;;76880:245::o;77132:416::-;77332:2;77346:47;;;52790:2;77317:18;;;85395:19;52826:33;85435:14;;;52806:54;52879:12;;;77303:245::o;77555:416::-;77755:2;77769:47;;;53435:2;77740:18;;;85395:19;53471:27;85435:14;;;53451:48;53518:12;;;77726:245::o;77978:850::-;;78311:3;78333:17;78326:47;58424:16;58418:23;78311:3;78300:9;78296:19;49054:37;58589:4;58582:5;58578:16;58572:23;90034:46;90074:5;90034:46;:::i;:::-;58660:14;;;51450:61;58757:4;58746:16;;58740:23;-1:-1;;;;;90480:54;;;58832:14;;;50492:65;58930:4;58919:16;;58913:23;90480:54;59005:14;;;50492:65;59101:4;59090:16;;59084:23;59161:14;;;49054:37;59259:4;59248:16;;59242:23;58350:4;59285:14;;;59278:38;59331:71;58341:14;;;59242:23;59331:71;:::i;:::-;78379:122;;;78512:138;58589:4;78635:9;78631:18;78622:6;78512:138;:::i;:::-;59259:4;78714:19;;49054:37;;;;58350:4;78798:19;49054:37;78282:546;;-1:-1;;78282:546::o;78835:222::-;49054:37;;;78962:2;78947:18;;78933:124::o;79064:333::-;49054:37;;;-1:-1;;;;;90480:54;79383:2;79368:18;;39929:45;79219:2;79204:18;;79190:207::o;79404:444::-;49054:37;;;-1:-1;;;;;90480:54;;;79751:2;79736:18;;39929:45;90480:54;79834:2;79819:18;;39929:45;79587:2;79572:18;;79558:290::o;79855:256::-;79917:2;79911:9;79943:17;;;80018:18;80003:34;;80039:22;;;80000:62;79997:2;;;80075:1;;80065:12;79997:2;79917;80084:22;79895:216;;-1:-1;79895:216::o;80118:319::-;;80292:18;80284:6;80281:30;80278:2;;;-1:-1;;80314:12;80278:2;-1:-1;80359:4;80347:17;;;80412:15;;80215:222::o;87123:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;93243:268::-;93308:1;93315:101;93329:6;93326:1;93323:13;93315:101;;;93396:11;;;93390:18;93377:11;;;93370:39;93351:2;93344:10;93315:101;;;93431:6;93428:1;93425:13;93422:2;;;-1:-1;;93308:1;93478:16;;93471:27;93292:219::o;93786:104::-;93868:1;93861:5;93858:12;93848:2;;93874:9;93897:104;93979:1;93972:5;93969:12;93959:2;;93985:9;94008:104;94090:1;94083:5;94080:12;94070:2;;94096:9;94239:117;-1:-1;;;;;94326:5;90480:54;94301:5;94298:35;94288:2;;94347:1;;94337:12;94503:111;94584:5;88495:13;88488:21;94562:5;94559:32;94549:2;;94605:1;;94595:12;96361:107;96443:1;96436:5;96433:12;96423:2;;96459:1;;96449:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256)":"ecc02637","peekChainedReferenceValue(uint256)":"f3cab685","setRelayerApproval(address,bool,bytes)":"80db15bd","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c","wrapStETH(address,address,uint256,uint256)":"1c982441","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"},\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"title\":\"Batch Relayer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"notice\":\"This contract is not a relayer by itself and calls into it directly will fail. The associated relayer can be found by calling `getEntrypoint` on this contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/BatchRelayerLibrary.sol\":\"BatchRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x5607c45e92f3c83411e576606a12fe46337013d142b7fb2cf4004b0d5cdbaadd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0df6e9a428d7b6cf7b2c4904141c1bf9bd13db655b5b5680bbe60a1daad55a75\",\"dweb:/ipfs/QmTZxPqfj7PZmX4n77b2i6WEz5Qri1fQy1WHjKa8XQg6b2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0x610350d55cff64fb001b59013903c5e47d16ed629868b7ba64a3f6418ea50bed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d89d3266385eccbd5fe83308aa1d049f58925712d2c5db464fcba87ceefc2a2\",\"dweb:/ipfs/Qmf6xpaWwQxbghyEAXK87bJMXFngX9SxijMtVMo71VZebW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x4371694195d18a899a5b2b5a76f15ef1c2cc5f5c865666d98e0888c40c8a43f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cee60f74e9cfb02a043fa6076a26eafd1c332744037cb8cbc2567086ee6d9d6\",\"dweb:/ipfs/Qmedh1b7WYcJekSQ2jkbhqb1nTgwJwcLw1wjfqoD1zyumo\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BatchRelayerLibrary.sol\":{\"keccak256\":\"0xb6a0e73bff14c8e165dea3d9ec704b5876af02b4ddc4ec3fc564bf7a0cf83ce1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://529ebe5ce29213d096235bea2e4c1c789145d26f4fbf7cabe50ea4c1833282a9\",\"dweb:/ipfs/QmPwrbLNXM4JzTAwo8KXhjonxazqyCAoRYHTmCD9zHef8G\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0xf5cb22d0f0bf6ff9e72d5e0c18579c19be358c9ca84a9e4bc7aa8c6337d52e42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d8f401a270bb66d936e014ac7ed475d918ff63b4339daa9bd80330d3f8025ad6\",\"dweb:/ipfs/QmbBuChEaRuxEa6njBzoeYz1vkyg5ezV1sbY6FSsrpvrvM\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x8ff74ec1bf461e1a4b51ffbce56660a132fa764402cf2072166a16b20b351139\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e5428b6ec3f59b6537f81af5ce78a15ae5b680623a6c93cefd662a49048cb22\",\"dweb:/ipfs/QmRt2owUCTKjNoDYZhMNXX9AahWzFiMshSBjrroa5orrku\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0x2c9be572de93bb1423664fe1870107606cc79956f7ed7bbfacedd6f5de590622\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b27218a9d66b8ffafa0df237e0d0504b60e9dcb025ce8ca86e5a8b9b1576c3b2\",\"dweb:/ipfs/QmNdgJmK69oP2BKseMuvk6fwS8yH9Po6T4z4aAfkMmCsEh\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0xe609e605e5f3c49c924616d784b22bf4196cd64a0a4c43bcb54dd2122b31007a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://710645c2177d2ab22e5c58bd7238305b9761c13ac99b920106aa05bed9ecbd24\",\"dweb:/ipfs/QmP5ykTt1iyFEn3GfzZsvAZjs1B7Kfhk9g3mdfpRsgCWVX\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xb3b3b982b65b19e0d9376ff4810af31cbb8616ca76072690f77c24b1b5793cfb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6eab2ca2c4bf9e8f3b6d002356d5e9848cab4956553e6102714e4215dcdbc884\",\"dweb:/ipfs/QmcTgkP8zpEi8DL3eSh7xXcgdoBppMH3YyuHjTX1fkdJd3\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0xc38380673ab9eb3ba1a8fd67dadeba91b556d42bb2ba9703824b6066260b2292\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://72b3003a77268ba6ebe9a95127bc0f8f5df5260460c79d2730caf938e45c152d\",\"dweb:/ipfs/QmRzcmDborCULffVqWmtExwm8zy1abTfceMqA8LqEZmapP\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x0a5c4336f30926d6ff071b35c7ba85299d5d809567936e826bb95b6f647532a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1230d3df30cece5c8d9aa0ac59e920167be7c9a185f54d8037d754dccb7d64a\",\"dweb:/ipfs/QmcHnnRdhrdMAbFY8WgW3wpWxoULBrP6mw4TsR7E6k3bMq\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x777d58a20e0e7f71eea9dc59f936f78528c02037a47076ad0747a6cb15e2e42b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://837ae5259458637d2dcb23b1f0d7bda936a50745cb36a1d4211f2dc50f3caaaf\",\"dweb:/ipfs/QmaS4wwWtbZVkG8bVqSWRHn47MPfnRHL8eUfd8Z8FchAYC\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]}},\"version\":1}"}},"contracts/PoolRecoveryHelper.sol":{"PoolRecoveryHelper":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address[]","name":"initialFactories","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"addPoolFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getFactoryAtIndex","outputs":[{"internalType":"contract IBasePoolFactory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFactoryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromKnownFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"}],"name":"removePoolFactory","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200112e3803806200112e833981016040819052620000349162000157565b306080526001600160601b0319606083901b1660a05260005b8151811015620000b757620000868282815181106200006857fe5b60200260200101516000620000c060201b620006981790919060201c565b620000ae5760405162461bcd60e51b8152600401620000a59062000225565b60405180910390fd5b6001016200004d565b5050506200029c565b6000620000ce838362000129565b6200011f57508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b0386169081179091558554908252828601909352604090209190915562000123565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b8051620001238162000283565b600080604083850312156200016a578182fd5b8251620001778162000283565b602084810151919350906001600160401b038082111562000196578384fd5b818601915086601f830112620001aa578384fd5b815181811115620001b9578485fd5b8381029150620001cb8483016200025c565b8181528481019084860184860187018b1015620001e6578788fd5b8795505b838610156200021457620001ff8b826200014a565b835260019590950194918601918601620001ea565b508096505050505050509250929050565b60208082526019908201527f4475706c696361746520696e697469616c20666163746f727900000000000000604082015260600190565b6040518181016001600160401b03811182821017156200027b57600080fd5b604052919050565b6001600160a01b03811681146200029957600080fd5b50565b60805160a05160601c610e6b620002c3600039806102fe5250806102ae5250610e6b6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a587bbe111610076578063d10474341161005b578063d104743414610136578063dc3f574e1461013e578063dc867b7914610151576100a3565b8063a587bbe11461011b578063aaabadc51461012e576100a3565b806326e54479146100a85780633a987dfa146100bd578063851c1bb3146100e65780638d928af814610106575b600080fd5b6100bb6100b6366004610ae6565b610164565b005b6100d06100cb366004610ae6565b6101b9565b6040516100dd9190610caa565b60405180910390f35b6100f96100f4366004610bcd565b6102aa565b6040516100dd9190610cb5565b61010e6102fc565b6040516100dd9190610c89565b61010e610129366004610c29565b610320565b61010e610332565b6100f96103be565b6100bb61014c366004610ae6565b6103ca565b6100bb61015f366004610ae6565b61064f565b61016c610721565b610177600082610767565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d21565b60405180910390fd5b50565b6000806101c66000610915565b905060005b8181101561029e5760006101df8183610919565b6040517f6634b75300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690636634b75390610234908890600401610c89565b60206040518083038186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610bad565b1561029557600193505050506102a5565b506001016101cb565b5060009150505b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102df929190610c59565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032c8183610953565b92915050565b600061033c6102fc565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190610c0d565b905090565b60006103b96000610915565b6103d3816101b9565b610409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610cea565b60608173ffffffffffffffffffffffffffffffffffffffff1663238a2d596040518163ffffffff1660e01b815260040160006040518083038186803b15801561045157600080fd5b505afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190610b02565b905060005b815181101561061c57600073ffffffffffffffffffffffffffffffffffffffff168282815181106104dd57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146106145781818151811061050c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b15801561055957600080fd5b505afa9250505080156105a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105a491810190610c41565b60015b610612578273ffffffffffffffffffffffffffffffffffffffff166354a844ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105f357600080fd5b505af1158015610607573d6000803e3d6000fd5b5050505050506101b6565b505b6001016104b0565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d8f565b610657610721565b610662600082610698565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d58565b60006106a48383610976565b61071857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558554908252828601909352604090209190915561032c565b50600092915050565b60006107506000357fffffffff00000000000000000000000000000000000000000000000000000000166102aa565b90506101b661075f82336109a4565b610191610a3a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054801561090b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146108705760008660000182815481106107d557fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061080b57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061087b57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061032c92505050565b600091505061032c565b5490565b600082600001828154811061092a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b81546000906109659083106064610a3a565b61096f8383610919565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006109ae610332565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016109ea93929190610cbe565b60206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610bad565b81610a4857610a4881610a4c565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101b6917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b805161032c81610e13565b600060208284031215610af7578081fd5b813561096f81610e13565b60006020808385031215610b14578182fd5b825167ffffffffffffffff80821115610b2b578384fd5b818501915085601f830112610b3e578384fd5b815181811115610b4c578485fd5b8381029150610b5c848301610dec565b8181528481019084860184860187018a1015610b76578788fd5b8795505b83861015610ba057610b8c8a82610adb565b835260019590950194918601918601610b7a565b5098975050505050505050565b600060208284031215610bbe578081fd5b8151801515811461096f578182fd5b600060208284031215610bde578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096f578182fd5b600060208284031215610c1e578081fd5b815161096f81610e13565b600060208284031215610c3a578081fd5b5035919050565b600060208284031215610c52578081fd5b5051919050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6020808252601e908201527f506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f72790000604082015260600190565b60208082526014908201527f4e6f6e2d6578697374656e7420666163746f7279000000000000000000000000604082015260600190565b60208082526011908201527f4475706c696361746520666163746f7279000000000000000000000000000000604082015260600190565b60208082526023908201527f506f6f6c277320726174652070726f76696465727320646f206e6f742072657660408201527f6572740000000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715610e0b57600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146101b657600080fdfea26469706673582212204a4ddb678100ac3d28b3cc7a63dd5c7ebd98961521f276072a8d3a453b9caa8564736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x112E CODESIZE SUB DUP1 PUSH3 0x112E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x157 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH3 0xB7 JUMPI PUSH3 0x86 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x68 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH3 0xC0 PUSH1 0x20 SHL PUSH3 0x698 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0xAE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xA5 SWAP1 PUSH3 0x225 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH3 0x4D JUMP JUMPDEST POP POP POP PUSH3 0x29C JUMP JUMPDEST PUSH1 0x0 PUSH3 0xCE DUP4 DUP4 PUSH3 0x129 JUMP JUMPDEST PUSH3 0x11F JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x123 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x123 DUP2 PUSH3 0x283 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x16A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x177 DUP2 PUSH3 0x283 JUMP JUMPDEST PUSH1 0x20 DUP5 DUP2 ADD MLOAD SWAP2 SWAP4 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x196 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x1AA JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x1B9 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH3 0x1CB DUP5 DUP4 ADD PUSH3 0x25C JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP12 LT ISZERO PUSH3 0x1E6 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH3 0x214 JUMPI PUSH3 0x1FF DUP12 DUP3 PUSH3 0x14A JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH3 0x1EA JUMP JUMPDEST POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x4475706C696361746520696E697469616C20666163746F727900000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x299 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xE6B PUSH3 0x2C3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2FE MSTORE POP DUP1 PUSH2 0x2AE MSTORE POP PUSH2 0xE6B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA587BBE1 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xD1047434 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD1047434 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0x13E JUMPI DUP1 PUSH4 0xDC867B79 EQ PUSH2 0x151 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xA587BBE1 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12E JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x26E54479 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3A987DFA EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD0 PUSH2 0xCB CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x1B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBCD JUMP JUMPDEST PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCB5 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xC89 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x332 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x3BE JUMP JUMPDEST PUSH2 0xBB PUSH2 0x14C CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0xBB PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x16C PUSH2 0x721 JUMP JUMPDEST PUSH2 0x177 PUSH1 0x0 DUP3 PUSH2 0x767 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C6 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 PUSH2 0x1DF DUP2 DUP4 PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6634B75300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6634B753 SWAP1 PUSH2 0x234 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST ISZERO PUSH2 0x295 JUMPI PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x2A5 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1CB JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DF SWAP3 SWAP2 SWAP1 PUSH2 0xC59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32C DUP2 DUP4 PUSH2 0x953 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33C PUSH2 0x2FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0xC0D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST PUSH2 0x3D3 DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x409 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xCEA JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x238A2D59 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x465 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB02 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x614 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x50C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x679AEFCE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x5A7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5A4 SWAP2 DUP2 ADD SWAP1 PUSH2 0xC41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x612 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x54A844BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x1B6 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x4B0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x657 PUSH2 0x721 JUMP JUMPDEST PUSH2 0x662 PUSH1 0x0 DUP3 PUSH2 0x698 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD58 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A4 DUP4 DUP4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x718 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x32C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2AA JUMP JUMPDEST SWAP1 POP PUSH2 0x1B6 PUSH2 0x75F DUP3 CALLER PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xA3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x90B JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x870 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7D5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x80B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x87B JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x32C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x32C JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x92A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x965 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x96F DUP4 DUP4 PUSH2 0x919 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9AE PUSH2 0x332 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x96F SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST DUP2 PUSH2 0xA48 JUMPI PUSH2 0xA48 DUP2 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x1B6 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x32C DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB14 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB2B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB3E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xB4C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0xB5C DUP5 DUP4 ADD PUSH2 0xDEC JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0xB76 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0xBA0 JUMPI PUSH2 0xB8C DUP11 DUP3 PUSH2 0xADB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0xB7A JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBBE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBDE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC1E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C206973206E6F742066726F6D206B6E6F776E20666163746F72790000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E7420666163746F7279000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x4475706C696361746520666163746F7279000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C277320726174652070726F76696465727320646F206E6F7420726576 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6572740000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0x4D 0xDB PUSH8 0x8100AC3D28B3CC7A PUSH4 0xDD5C7EBD SWAP9 SWAP7 ISZERO 0x21 CALLCODE PUSH23 0x72A8D3A453B9CAA8564736F6C63430007010033000000 ","sourceMap":"1522:3892:76:-:0;;;1688:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1143:4:54;2049:46:48;;-1:-1:-1;;;;;;1162:14:54::1;::::0;;;;::::1;::::0;1119:31;1790:152:76::1;1814:16;:23;1810:1;:27;1790:152;;;1866:35;1881:16;1898:1;1881:19;;;;;;;;;;;;;;1866:10;:14;;;;;;:35;;;;:::i;:::-;1858:73;;;;-1:-1:-1::0;;;1858:73:76::1;;;;;;;:::i;:::-;;;;;;;;;1839:3;;1790:152;;;;1688:260:::0;;1522:3892;;1851:410:64;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:64;;;;;;;;-1:-1:-1;1978:23:64;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:64;-1:-1:-1;;;;;1978:23:64;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:64;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:64;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;5::-1:-;83:13;;101:33;83:13;101:33;:::i;1065:558::-;;;1237:2;1225:9;1216:7;1212:23;1208:32;1205:2;;;-1:-1;;1243:12;1205:2;993:6;987:13;1005:48;1047:5;1005:48;:::i;:::-;1442:2;1427:18;;;1421:25;1295:89;;-1:-1;1442:2;-1:-1;;;;;1455:30;;;1452:2;;;-1:-1;;1488:12;1452:2;1590:6;1579:9;1575:22;;;292:3;285:4;277:6;273:17;269:27;259:2;;-1:-1;;300:12;259:2;340:6;334:13;1466:18;2801:6;2798:30;2795:2;;;-1:-1;;2831:12;2795:2;1442;2868:6;2864:17;;;362:80;1442:2;2864:17;2929:15;362:80;:::i;:::-;470:21;;;527:14;;;;502:17;;;607:27;;;;;604:36;-1:-1;601:2;;;-1:-1;;643:12;601:2;-1:-1;669:10;;663:217;688:6;685:1;682:13;663:217;;;768:48;812:3;800:10;768:48;:::i;:::-;756:61;;710:1;703:9;;;;;831:14;;;;859;;663:217;;;667:14;1508:99;;;;;;;;;1199:424;;;;;:::o;1964:416::-;2164:2;2178:47;;;1855:2;2149:18;;;3065:19;1891:27;3105:14;;;1871:48;1938:12;;;2135:245::o;2387:256::-;2449:2;2443:9;2475:17;;;-1:-1;;;;;2535:34;;2571:22;;;2532:62;2529:2;;;2607:1;;2597:12;2529:2;2449;2616:22;2427:216;;-1:-1;2427:216::o;3472:117::-;-1:-1;;;;;3406:54;;3531:35;;3521:2;;3580:1;;3570:12;3521:2;3515:74;:::o;:::-;1522:3892:76;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3980":[{"length":32,"start":686}],"4804":[{"length":32,"start":766}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a587bbe111610076578063d10474341161005b578063d104743414610136578063dc3f574e1461013e578063dc867b7914610151576100a3565b8063a587bbe11461011b578063aaabadc51461012e576100a3565b806326e54479146100a85780633a987dfa146100bd578063851c1bb3146100e65780638d928af814610106575b600080fd5b6100bb6100b6366004610ae6565b610164565b005b6100d06100cb366004610ae6565b6101b9565b6040516100dd9190610caa565b60405180910390f35b6100f96100f4366004610bcd565b6102aa565b6040516100dd9190610cb5565b61010e6102fc565b6040516100dd9190610c89565b61010e610129366004610c29565b610320565b61010e610332565b6100f96103be565b6100bb61014c366004610ae6565b6103ca565b6100bb61015f366004610ae6565b61064f565b61016c610721565b610177600082610767565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d21565b60405180910390fd5b50565b6000806101c66000610915565b905060005b8181101561029e5760006101df8183610919565b6040517f6634b75300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690636634b75390610234908890600401610c89565b60206040518083038186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610bad565b1561029557600193505050506102a5565b506001016101cb565b5060009150505b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102df929190610c59565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032c8183610953565b92915050565b600061033c6102fc565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190610c0d565b905090565b60006103b96000610915565b6103d3816101b9565b610409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610cea565b60608173ffffffffffffffffffffffffffffffffffffffff1663238a2d596040518163ffffffff1660e01b815260040160006040518083038186803b15801561045157600080fd5b505afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190610b02565b905060005b815181101561061c57600073ffffffffffffffffffffffffffffffffffffffff168282815181106104dd57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146106145781818151811061050c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b15801561055957600080fd5b505afa9250505080156105a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105a491810190610c41565b60015b610612578273ffffffffffffffffffffffffffffffffffffffff166354a844ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105f357600080fd5b505af1158015610607573d6000803e3d6000fd5b5050505050506101b6565b505b6001016104b0565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d8f565b610657610721565b610662600082610698565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d58565b60006106a48383610976565b61071857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558554908252828601909352604090209190915561032c565b50600092915050565b60006107506000357fffffffff00000000000000000000000000000000000000000000000000000000166102aa565b90506101b661075f82336109a4565b610191610a3a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054801561090b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146108705760008660000182815481106107d557fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061080b57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061087b57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061032c92505050565b600091505061032c565b5490565b600082600001828154811061092a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b81546000906109659083106064610a3a565b61096f8383610919565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006109ae610332565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016109ea93929190610cbe565b60206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610bad565b81610a4857610a4881610a4c565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101b6917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b805161032c81610e13565b600060208284031215610af7578081fd5b813561096f81610e13565b60006020808385031215610b14578182fd5b825167ffffffffffffffff80821115610b2b578384fd5b818501915085601f830112610b3e578384fd5b815181811115610b4c578485fd5b8381029150610b5c848301610dec565b8181528481019084860184860187018a1015610b76578788fd5b8795505b83861015610ba057610b8c8a82610adb565b835260019590950194918601918601610b7a565b5098975050505050505050565b600060208284031215610bbe578081fd5b8151801515811461096f578182fd5b600060208284031215610bde578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096f578182fd5b600060208284031215610c1e578081fd5b815161096f81610e13565b600060208284031215610c3a578081fd5b5035919050565b600060208284031215610c52578081fd5b5051919050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6020808252601e908201527f506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f72790000604082015260600190565b60208082526014908201527f4e6f6e2d6578697374656e7420666163746f7279000000000000000000000000604082015260600190565b60208082526011908201527f4475706c696361746520666163746f7279000000000000000000000000000000604082015260600190565b60208082526023908201527f506f6f6c277320726174652070726f76696465727320646f206e6f742072657660408201527f6572740000000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715610e0b57600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146101b657600080fdfea26469706673582212204a4ddb678100ac3d28b3cc7a63dd5c7ebd98961521f276072a8d3a453b9caa8564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA587BBE1 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xD1047434 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD1047434 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0xDC3F574E EQ PUSH2 0x13E JUMPI DUP1 PUSH4 0xDC867B79 EQ PUSH2 0x151 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0xA587BBE1 EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x12E JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x26E54479 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x3A987DFA EQ PUSH2 0xBD JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE6 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x106 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x164 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD0 PUSH2 0xCB CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x1B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCAA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xF9 PUSH2 0xF4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBCD JUMP JUMPDEST PUSH2 0x2AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xCB5 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xDD SWAP2 SWAP1 PUSH2 0xC89 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x129 CALLDATASIZE PUSH1 0x4 PUSH2 0xC29 JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST PUSH2 0x10E PUSH2 0x332 JUMP JUMPDEST PUSH2 0xF9 PUSH2 0x3BE JUMP JUMPDEST PUSH2 0xBB PUSH2 0x14C CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST PUSH2 0xBB PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xAE6 JUMP JUMPDEST PUSH2 0x64F JUMP JUMPDEST PUSH2 0x16C PUSH2 0x721 JUMP JUMPDEST PUSH2 0x177 PUSH1 0x0 DUP3 PUSH2 0x767 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD21 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C6 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 PUSH2 0x1DF DUP2 DUP4 PUSH2 0x919 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6634B75300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6634B753 SWAP1 PUSH2 0x234 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xC89 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x284 SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST ISZERO PUSH2 0x295 JUMPI PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0x2A5 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1CB JUMP JUMPDEST POP PUSH1 0x0 SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2DF SWAP3 SWAP2 SWAP1 PUSH2 0xC59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x32C DUP2 DUP4 PUSH2 0x953 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33C PUSH2 0x2FC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x381 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x395 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0xC0D JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B9 PUSH1 0x0 PUSH2 0x915 JUMP JUMPDEST PUSH2 0x3D3 DUP2 PUSH2 0x1B9 JUMP JUMPDEST PUSH2 0x409 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xCEA JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x238A2D59 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x451 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x465 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x4AB SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0xB02 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x61C JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4DD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x614 JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x50C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x679AEFCE PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x5A7 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x5A4 SWAP2 DUP2 ADD SWAP1 PUSH2 0xC41 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x612 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x54A844BA PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x607 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x1B6 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x4B0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD8F JUMP JUMPDEST PUSH2 0x657 PUSH2 0x721 JUMP JUMPDEST PUSH2 0x662 PUSH1 0x0 DUP3 PUSH2 0x698 JUMP JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0xD58 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A4 DUP4 DUP4 PUSH2 0x976 JUMP JUMPDEST PUSH2 0x718 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x32C JUMP JUMPDEST POP PUSH1 0x0 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2AA JUMP JUMPDEST SWAP1 POP PUSH2 0x1B6 PUSH2 0x75F DUP3 CALLER PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x191 PUSH2 0xA3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x90B JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0x870 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x7D5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x80B JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x87B JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x32C SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x32C JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x92A JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x965 SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xA3A JUMP JUMPDEST PUSH2 0x96F DUP4 DUP4 PUSH2 0x919 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9AE PUSH2 0x332 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9EA SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xCBE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x96F SWAP2 SWAP1 PUSH2 0xBAD JUMP JUMPDEST DUP2 PUSH2 0xA48 JUMPI PUSH2 0xA48 DUP2 PUSH2 0xA4C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x1B6 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x32C DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAF7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB14 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xB2B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB3E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xB4C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0xB5C DUP5 DUP4 ADD PUSH2 0xDEC JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0xB76 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0xBA0 JUMPI PUSH2 0xB8C DUP11 DUP3 PUSH2 0xADB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0xB7A JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBBE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBDE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x96F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC1E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x96F DUP2 PUSH2 0xE13 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC3A JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC52 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C206973206E6F742066726F6D206B6E6F776E20666163746F72790000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E7420666163746F7279000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x4475706C696361746520666163746F7279000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x506F6F6C277320726174652070726F76696465727320646F206E6F7420726576 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x6572740000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xE0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0x4D 0xDB PUSH8 0x8100AC3D28B3CC7A PUSH4 0xDD5C7EBD SWAP9 SWAP7 ISZERO 0x21 CALLCODE PUSH23 0x72A8D3A453B9CAA8564736F6C63430007010033000000 ","sourceMap":"1522:3892:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2336:142;;;;;;:::i;:::-;;:::i;:::-;;3049:402;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2607:430:48;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1247:79:54:-;;;:::i;:::-;;;;;;;:::i;2803:145:76:-;;;;;;:::i;:::-;;:::i;1386:109:54:-;;;:::i;2559:102:76:-;;;:::i;4141:1271::-;;;;;;:::i;:::-;;:::i;2126:133::-;;;;;;:::i;:::-;;:::i;2336:142::-;2276:21:48;:19;:21::i;:::-;2420:26:76::1;:10;2438:7:::0;2420:17:::1;:26::i;:::-;2412:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;2336:142:::0;:::o;3049:402::-;3116:4;3132:22;3157:19;:10;:17;:19::i;:::-;3132:44;;3191:9;3186:236;3210:14;3206:1;:18;3186:236;;;3245:24;3289:26;3245:24;3313:1;3289:23;:26::i;:::-;3335:31;;;;;3245:71;;-1:-1:-1;3335:25:76;;;;;;:31;;3361:4;;3335:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3331:81;;;3393:4;3386:11;;;;;;;3331:81;-1:-1:-1;3226:3:76;;3186:236;;;;3439:5;3432:12;;;3049:402;;;;:::o;2607:430:48:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1247:79:54:-;1313:6;1247:79;:::o;2803:145:76:-;2868:16;2920:20;2868:16;2934:5;2920:13;:20::i;:::-;2896:45;2803:145;-1:-1:-1;;2803:145:76:o;1386:109:54:-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1455:33;;1386:109;:::o;2559:102:76:-;2609:7;2635:19;:10;:17;:19::i;4141:1271::-;4485:28;4508:4;4485:22;:28::i;:::-;4477:71;;;;;;;;;;;;:::i;:::-;4649:36;4706:4;4688:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4649:81;;4745:9;4740:422;4764:13;:20;4760:1;:24;4740:422;;;4843:1;4809:36;;:13;4823:1;4809:16;;;;;;;;;;;;;;:36;;;4805:347;;4869:13;4883:1;4869:16;;;;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4869:26:76;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;4865:273;;5065:4;5051:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5113:7;;;;4865:273;;;4786:3;;4740:422;;;;5360:45;;;;;;;;;;:::i;2126:133::-;2276:21:48;:19;:21::i;:::-;2207:23:76::1;:10;2222:7:::0;2207:14:::1;:23::i;:::-;2199:53;;;;;;;;;;;;:::i;1851:410:64:-:0;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:64;;;;;;;;-1:-1:-1;1978:23:64;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:64;1851:410;;;;:::o;2420:181:48:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;2429:1467:64:-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:64;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:64;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:64;;-1:-1:-1;;;3825:11:64;2669:1221;3874:5;3867:12;;;;;4192:114;4281:18;;4192:114::o;5212:135::-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:64:o;4648:199::-;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:19;4741:8:64;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:64:o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1501:178:54:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;1422:178:-1;1522:13;;1540:55;1522:13;1540:55;:::i;1885:241::-;;1989:2;1977:9;1968:7;1964:23;1960:32;1957:2;;;-1:-1;;1995:12;1957:2;85:6;72:20;97:33;124:5;97:33;:::i;2133:436::-;;2295:2;;2283:9;2274:7;2270:23;2266:32;2263:2;;;-1:-1;;2301:12;2263:2;2352:17;2346:24;2390:18;;2382:6;2379:30;2376:2;;;-1:-1;;2412:12;2376:2;2536:6;2525:9;2521:22;;;325:3;318:4;310:6;306:17;302:27;292:2;;-1:-1;;333:12;292:2;373:6;367:13;2390:18;11277:6;11274:30;11271:2;;;-1:-1;;11307:12;11271:2;2295;11344:6;11340:17;;;395:102;2295:2;11340:17;11405:15;395:102;:::i;:::-;525:21;;;582:14;;;;557:17;;;662:27;;;;;659:36;-1:-1;656:2;;;-1:-1;;698:12;656:2;-1:-1;724:10;;718:239;743:6;740:1;737:13;718:239;;;823:70;889:3;877:10;823:70;:::i;:::-;811:83;;765:1;758:9;;;;;908:14;;;;936;;718:239;;;-1:-1;2432:121;2257:312;-1:-1;;;;;;;;2257:312::o;2576:257::-;;2688:2;2676:9;2667:7;2663:23;2659:32;2656:2;;;-1:-1;;2694:12;2656:2;1052:6;1046:13;13749:5;11773:13;11766:21;13727:5;13724:32;13714:2;;-1:-1;;13760:12;2840:239;;2943:2;2931:9;2922:7;2918:23;2914:32;2911:2;;;-1:-1;;2949:12;2911:2;1185:6;1172:20;11950:66;13871:5;11939:78;13847:5;13844:34;13834:2;;-1:-1;;13882:12;3086:303;;3221:2;3209:9;3200:7;3196:23;3192:32;3189:2;;;-1:-1;;3227:12;3189:2;1345:6;1339:13;1357:53;1404:5;1357:53;:::i;3396:241::-;;3500:2;3488:9;3479:7;3475:23;3471:32;3468:2;;;-1:-1;;3506:12;3468:2;-1:-1;1674:20;;3462:175;-1:-1;3462:175::o;3644:263::-;;3759:2;3747:9;3738:7;3734:23;3730:32;3727:2;;;-1:-1;;3765:12;3727:2;-1:-1;1822:13;;3721:186;-1:-1;3721:186::o;6593:387::-;4216:37;;;11950:66;11939:78;6844:2;6835:12;;4511:56;6944:11;;;6735:245::o;6987:222::-;12340:42;12329:54;;;;3985:37;;7114:2;7099:18;;7085:124::o;7216:210::-;11773:13;;11766:21;4099:34;;7337:2;7322:18;;7308:118::o;7433:222::-;4216:37;;;7560:2;7545:18;;7531:124::o;7662:444::-;4216:37;;;12340:42;12329:54;;;8009:2;7994:18;;3985:37;12329:54;8092:2;8077:18;;3985:37;7845:2;7830:18;;7816:290::o;8920:416::-;9120:2;9134:47;;;5323:2;9105:18;;;11541:19;5359:32;11581:14;;;5339:53;5411:12;;;9091:245::o;9343:416::-;9543:2;9557:47;;;5662:2;9528:18;;;11541:19;5698:22;11581:14;;;5678:43;5740:12;;;9514:245::o;9766:416::-;9966:2;9980:47;;;5991:2;9951:18;;;11541:19;6027;11581:14;;;6007:40;6066:12;;;9937:245::o;10189:416::-;10389:2;10403:47;;;6317:2;10374:18;;;11541:19;6353:34;11581:14;;;6333:55;6422:5;6408:12;;;6401:27;6447:12;;;10360:245::o;10841:256::-;10903:2;10897:9;10929:17;;;11004:18;10989:34;;11025:22;;;10986:62;10983:2;;;11061:1;;11051:12;10983:2;10903;11070:22;10881:216;;-1:-1;10881:216::o;13544:117::-;12340:42;13631:5;12329:54;13606:5;13603:35;13593:2;;13652:1;;13642:12"},"methodIdentifiers":{"addPoolFactory(address)":"dc867b79","enableRecoveryMode(address)":"dc3f574e","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getFactoryAtIndex(uint256)":"a587bbe1","getFactoryCount()":"d1047434","getVault()":"8d928af8","isPoolFromKnownFactory(address)":"3a987dfa","removePoolFactory(address)":"26e54479"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"initialFactories\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"addPoolFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getFactoryAtIndex\",\"outputs\":[{\"internalType\":\"contract IBasePoolFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFactoryCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromKnownFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"removePoolFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract allows anyone to check a given Pool's rate providers and put the Pool into recovery mode if any are reverting on `getRate`. This allows LPs to exit promptly, and also helps off-chain mechanisms identify failed pools and prevent further traffic from being routed to them (since in this state swap operations would fail).\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addPoolFactory(address)\":{\"notice\":\"Adds a Pool Factory to the helper. Only Pools created from factories added via this function can be passed to `enableRecoveryMode()`.\"},\"enableRecoveryMode(address)\":{\"notice\":\"Enables Recovery Mode in a Pool, provided some of its rate providers are failing (i.e. `getRate()` reverts). Pools that are in Recovery Mode can be exited by LPs via the special Recovery Mode Exit, which avoids any complex computations and does not call into any external contracts, which makes it a very dependable way to retrieve the underlying tokens. However, while Recovery Mode is enabled the Pool pays no protocol fees. Additionally, any protocol fees accrued before enabling Recovery Mode will be forfeited. The Pool must have been created via a known Pool Factory contract.\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getFactoryAtIndex(uint256)\":{\"notice\":\"Returns the address of a Pool Factory at an index between 0 and the return value of `getFactoryCount()`.\"},\"getFactoryCount()\":{\"notice\":\"Returns the total number of Pool Factories.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isPoolFromKnownFactory(address)\":{\"notice\":\"Returns true if the Pool has been created from a known factory.\"},\"removePoolFactory(address)\":{\"notice\":\"Removes a Pool Factory from the helper.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PoolRecoveryHelper.sol\":\"PoolRecoveryHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/PoolRecoveryHelper.sol\":{\"keccak256\":\"0xb7b4bfa0ce8f2037d6e772f2a44289737cac58ee21a20fe1a5744aa79530ec38\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://819d2ccb8671877c0b2e03bba3160e59cf59ee0acce6cf93286efbe434b9f61a\",\"dweb:/ipfs/QmeJt2pZw5HsLVLjRfHTSzwwRpUkzrrouZRT1kWz7WRtGq\"]}},\"version\":1}"}},"contracts/ProtocolFeePercentagesProvider.sol":{"ProtocolFeePercentagesProvider":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"uint256","name":"maxYieldValue","type":"uint256"},{"internalType":"uint256","name":"maxAUMValue","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"percentage","type":"uint256"}],"name":"ProtocolFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"feeType","type":"uint256"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"uint256","name":"maximumPercentage","type":"uint256"}],"name":"ProtocolFeeTypeRegistered","type":"event"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeMaximumPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypeName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"getFeeTypePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"}],"name":"isValidFeeType","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"isValidFeeTypePercentage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maximumValue","type":"uint256"},{"internalType":"uint256","name":"initialValue","type":"uint256"}],"name":"registerFeeType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"feeType","type":"uint256"},{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setFeeTypePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b5060405162001887380380620018878339810160408190526200003491620005a0565b306080526001600160601b0319606084901b1660a0526040805163d2946c2b60e01b815290516000916001600160a01b0386169163d2946c2b91600480820192602092909190829003018186803b1580156200008f57600080fd5b505afa158015620000a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ca91906200057a565b6001600160601b0319606082901b1660c052604080518082019091526005815264165a595b1960da1b60208201529091506200010c9060029085600062000277565b6200015760036040518060400160405280601781526020017f41737365747320556e646572204d616e6167656d656e740000000000000000008152508460006200027760201b60201c565b7fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5805460ff60801b1916600160801b1790556040805180820190915260048152630537761760e41b6020828101918252600080805290529051620001dd917fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb691620004e8565b507fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d805460ff60801b1916600160801b17905560408051808201909152600a815269233630b9b4102637b0b760b11b602082810191825260016000908152905290516200026c917fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7e91620004e8565b5050505050620006c4565b600082118015620002905750670de0b6b3a76400008211155b620002b85760405162461bcd60e51b8152600401620002af906200066e565b60405180910390fd5b81811115620002db5760405162461bcd60e51b8152600401620002af9062000637565b6040518060800160405280620002fc836200043f60201b620009031760201c565b6001600160401b0316815260200162000320846200043f60201b620009031760201c565b6001600160401b03908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515600160801b0260ff60801b199787166801000000000000000002600160401b600160801b0319939097166001600160401b03199092169190911791909116949094179490941692909217835560608401518051620003bf93928501929190910190620004e8565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051620003f7929190620005d9565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051620004319190620006a5565b60405180910390a250505050565b6000620004596001600160401b038311156101ba6200045d565b5090565b816200046e576200046e8162000472565b5050565b62000484816210905360ea1b62000487565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200052b57805160ff19168380011785556200055b565b828001600101855582156200055b579182015b828111156200055b5782518255916020019190600101906200053e565b50620004599291505b8082111562000459576000815560010162000564565b6000602082840312156200058c578081fd5b81516200059981620006ae565b9392505050565b600080600060608486031215620005b5578182fd5b8351620005c281620006ae565b602085015160409095015190969495509392505050565b6000604082528351806040840152815b81811015620006085760208187018101516060868401015201620005e9565b818111156200061a5782606083860101525b50602083019390935250601f91909101601f191601606001919050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b90815260200190565b6001600160a01b03811681146200048457600080fd5b60805160a05160601c60c05160601c61118162000706600039806101fc52806102aa52806103fa52806104ac5250806107525250806106d952506111816000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb3116100765780638d928af81161005b5780638d928af81461016d578063aaabadc514610182578063b661eda11461018a576100be565b8063851c1bb314610147578063868897a01461015a576100be565b80635e2cae4c116100a75780635e2cae4c146101015780637268d6ce1461011457806374735e0b14610127576100be565b80631a7c3263146100c35780634d44f0e9146100ec575b600080fd5b6100d66100d1366004610de8565b6101aa565b6040516100e39190610fad565b60405180910390f35b6100ff6100fa366004610ee8565b610330565b005b6100d661010f366004610de8565b61056d565b6100ff610122366004610e18565b610608565b61013a610135366004610ee8565b61067f565b6040516100e39190610fa2565b6100d6610155366004610d74565b6106d5565b61013a610168366004610de8565b610727565b610175610750565b6040516100e39190610fe2565b610175610774565b61019d610198366004610de8565b610800565b6040516100e39190611003565b6000816101b681610727565b6101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60405180910390fd5b8261029f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102989190610e00565b915061032a565b600183141561030e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d877845c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b60008381526020819052604090205467ffffffffffffffff1691505b50919050565b8161033a81610727565b610370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b610378610920565b610382838361067f565b6103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611114565b82610466576040517f38e9922e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906338e9922e9061042f908590600401610fad565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b50505050610530565b60018314156104e1576040517f6b6b9f6900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636b6b9f699061042f908590600401610fad565b6104ea82610903565b600084815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b827f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d3836040516105609190610fad565b60405180910390a2505050565b60008161057981610727565b6105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b826105c4576706f05b59d3b20000915061032a565b60018314156105dc57662386f26fc10000915061032a565b60008381526020819052604090205468010000000000000000900467ffffffffffffffff16915061032a565b610610610920565b600084815260208190526040902054700100000000000000000000000000000000900460ff161561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061106f565b61067984848484610969565b50505050565b60008261068b81610727565b6106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b6106ca8461056d565b909211159392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161070a929190610f72565b604051602081830303815290604052805190602001209050919050565b600090815260208190526040902054700100000000000000000000000000000000900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061077e610750565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c357600080fd5b505afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610db4565b905090565b60608161080c81610727565b610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60008381526020818152604091829020600190810180548451600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f8101849004840283018401909452838252909290918301828280156108f65780601f106108cb576101008083540402835291602001916108f6565b820191906000526020600020905b8154815290600101906020018083116108d957829003601f168201915b5050505050915050919050565b600061091c67ffffffffffffffff8311156101ba610b8c565b5090565b600061094f6000357fffffffff00000000000000000000000000000000000000000000000000000000166106d5565b905061096661095e8233610b9e565b610191610b8c565b50565b6000821180156109815750670de0b6b3a76400008211155b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110a6565b818111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611038565b6040518060800160405280610a0583610903565b67ffffffffffffffff168152602001610a1d84610903565b67ffffffffffffffff908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff97871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939097167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911791909116949094179490941692909217835560608401518051610b1093928501929190910190610cca565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051610b46929190611016565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051610b7e9190610fad565b60405180910390a250505050565b81610b9a57610b9a81610c3b565b5050565b6000610ba8610774565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610be493929190610fb6565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610d54565b9392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610966917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0b57805160ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d38578251825591602001919060010190610d1d565b5061091c9291505b8082111561091c5760008155600101610d40565b600060208284031215610d65578081fd5b81518015158114610c34578182fd5b600060208284031215610d85578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c34578182fd5b600060208284031215610dc5578081fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c34578182fd5b600060208284031215610df9578081fd5b5035919050565b600060208284031215610e11578081fd5b5051919050565b60008060008060808587031215610e2d578283fd5b8435935060208086013567ffffffffffffffff80821115610e4c578586fd5b818801915088601f830112610e5f578586fd5b813581811115610e6d578687fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610eaa578889fd5b60405281815283820185018b1015610ec0578788fd5b8185850186830137908101909301959095525093969395505050506040820135916060013590565b60008060408385031215610efa578182fd5b50508035926020909101359150565b60008151808452815b81811015610f2e57602081850181015186830182015201610f12565b81811115610f3f5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208252610c346020830184610f09565b6000604082526110296040830185610f09565b90508260208301529392505050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601b908201527f466565207479706520616c726561647920726567697374657265640000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b60208082526015908201527f4e6f6e2d6578697374656e742066656520747970650000000000000000000000604082015260600190565b60208082526016908201527f496e76616c6964206665652070657263656e746167650000000000000000000060408201526060019056fea26469706673582212201369dc79556d0a70519ed42491c373b0480905fbcb2b84c0d9cff6a599261eca64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1887 CODESIZE SUB DUP1 PUSH3 0x1887 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x5A0 JUMP JUMPDEST ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0xD2946C2B SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xCA SWAP2 SWAP1 PUSH3 0x57A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x165A595B19 PUSH1 0xDA SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH3 0x10C SWAP1 PUSH1 0x2 SWAP1 DUP6 PUSH1 0x0 PUSH3 0x277 JUMP JUMPDEST PUSH3 0x157 PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x41737365747320556E646572204D616E6167656D656E74000000000000000000 DUP2 MSTORE POP DUP5 PUSH1 0x0 PUSH3 0x277 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB5 DUP1 SLOAD PUSH1 0xFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP2 MSTORE PUSH4 0x5377617 PUSH1 0xE4 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x0 DUP1 DUP1 MSTORE SWAP1 MSTORE SWAP1 MLOAD PUSH3 0x1DD SWAP2 PUSH32 0xAD3228B676F7D3CD4284A5443F17F1962B36E491B30A40B2405849E597BA5FB6 SWAP2 PUSH3 0x4E8 JUMP JUMPDEST POP PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7D DUP1 SLOAD PUSH1 0xFF PUSH1 0x80 SHL NOT AND PUSH1 0x1 PUSH1 0x80 SHL OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x233630B9B4102637B0B7 PUSH1 0xB1 SHL PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP1 MSTORE SWAP1 MLOAD PUSH3 0x26C SWAP2 PUSH32 0xADA5013122D395BA3C54772283FB069B10426056EF8CA54750CB9BB552A59E7E SWAP2 PUSH3 0x4E8 JUMP JUMPDEST POP POP POP POP POP PUSH3 0x6C4 JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH3 0x290 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH3 0x2B8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2AF SWAP1 PUSH3 0x66E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x2DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x2AF SWAP1 PUSH3 0x637 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH3 0x2FC DUP4 PUSH3 0x43F PUSH1 0x20 SHL PUSH3 0x903 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x320 DUP5 PUSH3 0x43F PUSH1 0x20 SHL PUSH3 0x903 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0x80 SHL MUL PUSH1 0xFF PUSH1 0x80 SHL NOT SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP4 SWAP1 SWAP8 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH3 0x3BF SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH3 0x4E8 JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x3F7 SWAP3 SWAP2 SWAP1 PUSH3 0x5D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH3 0x431 SWAP2 SWAP1 PUSH3 0x6A5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x459 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 GT ISZERO PUSH2 0x1BA PUSH3 0x45D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP2 PUSH3 0x46E JUMPI PUSH3 0x46E DUP2 PUSH3 0x472 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH3 0x484 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH3 0x487 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x52B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x55B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x55B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x55B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x53E JUMP JUMPDEST POP PUSH3 0x459 SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x459 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x564 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x58C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x599 DUP2 PUSH3 0x6AE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x5B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x5C2 DUP2 PUSH3 0x6AE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x40 SWAP1 SWAP6 ADD MLOAD SWAP1 SWAP7 SWAP5 SWAP6 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x608 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0x5E9 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x61A JUMPI DUP3 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH1 0x20 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1181 PUSH3 0x706 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FC MSTORE DUP1 PUSH2 0x2AA MSTORE DUP1 PUSH2 0x3FA MSTORE DUP1 PUSH2 0x4AC MSTORE POP DUP1 PUSH2 0x752 MSTORE POP DUP1 PUSH2 0x6D9 MSTORE POP PUSH2 0x1181 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xB661EDA1 EQ PUSH2 0x18A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x868897A0 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5E2CAE4C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5E2CAE4C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x7268D6CE EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x74735E0B EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1A7C3263 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x4D44F0E9 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0xFF PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x774 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B6 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x29F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0xE00 JUMP JUMPDEST SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x30E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD877845C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x33A DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x378 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x382 DUP4 DUP4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0x3B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1114 JUMP JUMPDEST DUP3 PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38E9922E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x38E9922E SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x530 JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B6B9F6900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6B6B9F69 SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x4EA DUP3 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP3 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x560 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x579 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST DUP3 PUSH2 0x5C4 JUMPI PUSH8 0x6F05B59D3B20000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x5DC JUMPI PUSH7 0x2386F26FC10000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH2 0x610 PUSH2 0x920 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x679 DUP5 DUP5 DUP5 DUP5 PUSH2 0x969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x68B DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x6CA DUP5 PUSH2 0x56D JUMP JUMPDEST SWAP1 SWAP3 GT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x70A SWAP3 SWAP2 SWAP1 PUSH2 0xF72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E PUSH2 0x750 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FB SWAP2 SWAP1 PUSH2 0xDB4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x80C DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 DUP2 ADD DUP1 SLOAD DUP5 MLOAD PUSH1 0x2 SWAP4 DUP3 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP4 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP4 DUP3 MSTORE SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1BA PUSH2 0xB8C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x966 PUSH2 0x95E DUP3 CALLER PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x981 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA05 DUP4 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1D DUP5 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH17 0x100000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH2 0xB10 SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xCCA JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB46 SWAP3 SWAP2 SWAP1 PUSH2 0x1016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xB9A JUMPI PUSH2 0xB9A DUP2 PUSH2 0xC3B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA8 PUSH2 0x774 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC34 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x966 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD0B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xD38 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xD38 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xD38 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xD1D JUMP JUMPDEST POP PUSH2 0x91C SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE11 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE2D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xEAA JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP12 LT ISZERO PUSH2 0xEC0 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEFA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xF12 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xF3F JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xC34 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x1029 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x466565207479706520616C726561647920726567697374657265640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742066656520747970650000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206665652070657263656E7461676500000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT PUSH10 0xDC79556D0A70519ED424 SWAP2 0xC3 PUSH20 0xB0480905FBCB2B84C0D9CFF6A599261ECA64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1101:5324:77:-:0;;;1880:1232;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1143:4:54;2049:46:48;;-1:-1:-1;;;;;;1162:14:54::1;::::0;;;;::::1;::::0;2067:32:77::1;::::0;;-1:-1:-1;;;2067:32:77;;;;1119:31:54;;-1:-1:-1;;;;;1162:14:54;::::1;::::0;2067:30:77::1;::::0;:32:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;1162:14:54;2067:32:77;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;2109:45:77::1;::::0;;;;::::1;::::0;2329:66:::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2329:66:77::1;::::0;::::1;::::0;2021:78;;-1:-1:-1;2329:66:77::1;::::0;4454:1:32::1;::::0;2378:13:77;-1:-1:-1;2329:16:77::1;:66::i;:::-;2405:80;4493:1:32;2405:80:77;;;;;;;;;;;;;;;;::::0;2470:11:::1;2483:1;2405:16;;;:80;;:::i;:::-;2856:34:::0;:52;;-1:-1:-1;;;;2856:52:77::1;-1:-1:-1::0;;;2856:52:77::1;::::0;;:34;2918:48;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2856:34:77::1;2918:48:::0;;::::1;::::0;;;2856:12:::1;2918:34:::0;;;;;:48;;::::1;::::0;:39;;:48:::1;:::i;:::-;-1:-1:-1::0;2977:40:77;:58;;-1:-1:-1;;;;2977:58:77::1;-1:-1:-1::0;;;2977:58:77::1;::::0;;:40;3045:60;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;2977:40:77::1;3045:60:::0;;::::1;::::0;;;3031:4:::1;2977:12;3045:40:::0;;;;;:60;;::::1;::::0;:45;;:60:::1;:::i;:::-;;1880:1232;::::0;;;1101:5324;;3592:696;3779:1;3764:12;:16;3763:68;;;;;1647:4;3786:12;:44;;3763:68;3755:111;;;;-1:-1:-1;;;3755:111:77;;;;;;;:::i;:::-;;;;;;;;;3900:12;3884;:28;;3876:67;;;;-1:-1:-1;;;3876:67:77;;;;;;;:::i;:::-;3978:167;;;;;;;;4111:23;:12;:21;;;;;:23;;:::i;:::-;-1:-1:-1;;;;;3978:167:77;;;;;4067:23;:12;:21;;;;;:23;;:::i;:::-;-1:-1:-1;;;;;3978:167:77;;;;;4016:4;3978:167;;;;;;;;;;;;;;;3954:21;;;;;;;;;:191;;;;;;;;;;;;;;-1:-1:-1;;;3954:191:77;-1:-1:-1;;;;3954:191:77;;;;;-1:-1:-1;;;;;;;;3954:191:77;;;;-1:-1:-1;;;;;;3954:191:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4187:7;4161:54;4196:4;4202:12;4161:54;;;;;;;:::i;:::-;;;;;;;;4259:7;4230:51;4268:12;4230:51;;;;;;:::i;:::-;;;;;;;;3592:696;;;;:::o;1410:186:66:-;1466:6;1484:75;-1:-1:-1;;;;;1493:25:66;;;12724:3:19;1484:8:66;:75::i;:::-;-1:-1:-1;1583:5:66;1410:186::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;-1:-1:-1;;;1506:7:19;:28::i;:::-;1459:126;:::o;1692:3378::-;-1:-1:-1;;;1754:18:19;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1101:5324:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1101:5324:77;;;-1:-1:-1;1101:5324:77;;;;;;;;;;;;;;520:325:-1;;666:2;654:9;645:7;641:23;637:32;634:2;;;-1:-1;;672:12;634:2;120:6;114:13;132:64;190:5;132:64;:::i;:::-;724:105;628:217;-1:-1;;;628:217::o;852:565::-;;;;1016:2;1004:9;995:7;991:23;987:32;984:2;;;-1:-1;;1022:12;984:2;307:6;301:13;319:48;361:5;319:48;:::i;:::-;1200:2;1250:22;;457:13;1319:2;1369:22;;;457:13;1074:89;;457:13;;-1:-1;457:13;978:439;-1:-1;;;978:439::o;2572:421::-;;2747:2;2768:17;2761:47;1569:5;4163:12;4320:6;2747:2;2736:9;2732:18;4308:19;-1:-1;4996:101;5010:6;5007:1;5004:13;4996:101;;;4357:4;5077:11;;;;;5071:18;4348:14;5058:11;;;;5051:39;5025:10;4996:101;;;5112:6;5109:1;5106:13;5103:2;;;-1:-1;4348:14;5168:6;2736:9;5159:16;;5152:27;5103:2;-1:-1;4357:4;2964:18;;2523:37;;;;-1:-1;5284:7;5268:14;;;;-1:-1;;5264:28;1727:39;4348:14;1727:39;;2718:275;-1:-1;2718:275::o;3000:416::-;3200:2;3214:47;;;2003:2;3185:18;;;4308:19;2039:28;4348:14;;;2019:49;2087:12;;;3171:245::o;3423:416::-;3623:2;3637:47;;;2338:2;3608:18;;;4308:19;2374:32;4348:14;;;2354:53;2426:12;;;3594:245::o;3846:222::-;2523:37;;;3973:2;3958:18;;3944:124::o;5305:179::-;-1:-1;;;;;4778:54;;5395:66;;5385:2;;5475:1;;5465:12;5379:105;1101:5324:77;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3980":[{"length":32,"start":1753}],"4804":[{"length":32,"start":1874}],"9671":[{"length":32,"start":508},{"length":32,"start":682},{"length":32,"start":1018},{"length":32,"start":1196}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100be5760003560e01c8063851c1bb3116100765780638d928af81161005b5780638d928af81461016d578063aaabadc514610182578063b661eda11461018a576100be565b8063851c1bb314610147578063868897a01461015a576100be565b80635e2cae4c116100a75780635e2cae4c146101015780637268d6ce1461011457806374735e0b14610127576100be565b80631a7c3263146100c35780634d44f0e9146100ec575b600080fd5b6100d66100d1366004610de8565b6101aa565b6040516100e39190610fad565b60405180910390f35b6100ff6100fa366004610ee8565b610330565b005b6100d661010f366004610de8565b61056d565b6100ff610122366004610e18565b610608565b61013a610135366004610ee8565b61067f565b6040516100e39190610fa2565b6100d6610155366004610d74565b6106d5565b61013a610168366004610de8565b610727565b610175610750565b6040516100e39190610fe2565b610175610774565b61019d610198366004610de8565b610800565b6040516100e39190611003565b6000816101b681610727565b6101f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60405180910390fd5b8261029f577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166355c676286040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b505afa158015610274573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102989190610e00565b915061032a565b600183141561030e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d877845c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561026057600080fd5b60008381526020819052604090205467ffffffffffffffff1691505b50919050565b8161033a81610727565b610370576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b610378610920565b610382838361067f565b6103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611114565b82610466576040517f38e9922e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906338e9922e9061042f908590600401610fad565b600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b50505050610530565b60018314156104e1576040517f6b6b9f6900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636b6b9f699061042f908590600401610fad565b6104ea82610903565b600084815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff929092169190911790555b827f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d3836040516105609190610fad565b60405180910390a2505050565b60008161057981610727565b6105af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b826105c4576706f05b59d3b20000915061032a565b60018314156105dc57662386f26fc10000915061032a565b60008381526020819052604090205468010000000000000000900467ffffffffffffffff16915061032a565b610610610920565b600084815260208190526040902054700100000000000000000000000000000000900460ff161561066d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec9061106f565b61067984848484610969565b50505050565b60008261068b81610727565b6106c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b6106ca8461056d565b909211159392505050565b60007f00000000000000000000000000000000000000000000000000000000000000008260405160200161070a929190610f72565b604051602081830303815290604052805190602001209050919050565b600090815260208190526040902054700100000000000000000000000000000000900460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061077e610750565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156107c357600080fd5b505afa1580156107d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107fb9190610db4565b905090565b60608161080c81610727565b610842576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110dd565b60008381526020818152604091829020600190810180548451600293821615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911692909204601f8101849004840283018401909452838252909290918301828280156108f65780601f106108cb576101008083540402835291602001916108f6565b820191906000526020600020905b8154815290600101906020018083116108d957829003601f168201915b5050505050915050919050565b600061091c67ffffffffffffffff8311156101ba610b8c565b5090565b600061094f6000357fffffffff00000000000000000000000000000000000000000000000000000000166106d5565b905061096661095e8233610b9e565b610191610b8c565b50565b6000821180156109815750670de0b6b3a76400008211155b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec906110a6565b818111156109f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ec90611038565b6040518060800160405280610a0583610903565b67ffffffffffffffff168152602001610a1d84610903565b67ffffffffffffffff908116825260016020808401829052604093840188905260008981528082528490208551815487840151968801511515700100000000000000000000000000000000027fffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffff97871668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff939097167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009092169190911791909116949094179490941692909217835560608401518051610b1093928501929190910190610cca565b50905050837fe07086969b318280a21b104288d59a9c26c15ccdc203744dfe88e76b56810a768484604051610b46929190611016565b60405180910390a2837f34cd0fbe9e7d58e0835610336eda810722864e47a9b1f5dc5c8f976c13c384d382604051610b7e9190610fad565b60405180910390a250505050565b81610b9a57610b9a81610c3b565b5050565b6000610ba8610774565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401610be493929190610fb6565b60206040518083038186803b158015610bfc57600080fd5b505afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c349190610d54565b9392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610966917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0b57805160ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d38578251825591602001919060010190610d1d565b5061091c9291505b8082111561091c5760008155600101610d40565b600060208284031215610d65578081fd5b81518015158114610c34578182fd5b600060208284031215610d85578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c34578182fd5b600060208284031215610dc5578081fd5b815173ffffffffffffffffffffffffffffffffffffffff81168114610c34578182fd5b600060208284031215610df9578081fd5b5035919050565b600060208284031215610e11578081fd5b5051919050565b60008060008060808587031215610e2d578283fd5b8435935060208086013567ffffffffffffffff80821115610e4c578586fd5b818801915088601f830112610e5f578586fd5b813581811115610e6d578687fd5b604051847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401168201018181108482111715610eaa578889fd5b60405281815283820185018b1015610ec0578788fd5b8185850186830137908101909301959095525093969395505050506040820135916060013590565b60008060408385031215610efa578182fd5b50508035926020909101359150565b60008151808452815b81811015610f2e57602081850181015186830182015201610f12565b81811115610f3f5782602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600060208252610c346020830184610f09565b6000604082526110296040830185610f09565b90508260208301529392505050565b6020808252601a908201527f496e76616c696420696e697469616c2070657263656e74616765000000000000604082015260600190565b6020808252601b908201527f466565207479706520616c726561647920726567697374657265640000000000604082015260600190565b6020808252601e908201527f496e76616c6964206d6178696d756d206665652070657263656e746167650000604082015260600190565b60208082526015908201527f4e6f6e2d6578697374656e742066656520747970650000000000000000000000604082015260600190565b60208082526016908201527f496e76616c6964206665652070657263656e746167650000000000000000000060408201526060019056fea26469706673582212201369dc79556d0a70519ed42491c373b0480905fbcb2b84c0d9cff6a599261eca64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBE JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x16D JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x182 JUMPI DUP1 PUSH4 0xB661EDA1 EQ PUSH2 0x18A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x868897A0 EQ PUSH2 0x15A JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x5E2CAE4C GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x5E2CAE4C EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x7268D6CE EQ PUSH2 0x114 JUMPI DUP1 PUSH4 0x74735E0B EQ PUSH2 0x127 JUMPI PUSH2 0xBE JUMP JUMPDEST DUP1 PUSH4 0x1A7C3263 EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x4D44F0E9 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x1AA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x330 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD6 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x56D JUMP JUMPDEST PUSH2 0xFF PUSH2 0x122 CALLDATASIZE PUSH1 0x4 PUSH2 0xE18 JUMP JUMPDEST PUSH2 0x608 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x135 CALLDATASIZE PUSH1 0x4 PUSH2 0xEE8 JUMP JUMPDEST PUSH2 0x67F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFA2 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x155 CALLDATASIZE PUSH1 0x4 PUSH2 0xD74 JUMP JUMPDEST PUSH2 0x6D5 JUMP JUMPDEST PUSH2 0x13A PUSH2 0x168 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x727 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x750 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xFE2 JUMP JUMPDEST PUSH2 0x175 PUSH2 0x774 JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xDE8 JUMP JUMPDEST PUSH2 0x800 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0x1003 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x1B6 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x1F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x29F JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x55C67628 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x274 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x298 SWAP2 SWAP1 PUSH2 0xE00 JUMP JUMPDEST SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x30E JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD877845C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0x33A DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x378 PUSH2 0x920 JUMP JUMPDEST PUSH2 0x382 DUP4 DUP4 PUSH2 0x67F JUMP JUMPDEST PUSH2 0x3B8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1114 JUMP JUMPDEST DUP3 PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD PUSH32 0x38E9922E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x38E9922E SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x530 JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x4E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6B6B9F6900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6B6B9F69 SWAP1 PUSH2 0x42F SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xFAD JUMP JUMPDEST PUSH2 0x4EA DUP3 PUSH2 0x903 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND PUSH8 0xFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP3 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP4 PUSH1 0x40 MLOAD PUSH2 0x560 SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x579 DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST DUP3 PUSH2 0x5C4 JUMPI PUSH8 0x6F05B59D3B20000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x1 DUP4 EQ ISZERO PUSH2 0x5DC JUMPI PUSH7 0x2386F26FC10000 SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x32A JUMP JUMPDEST PUSH2 0x610 PUSH2 0x920 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x66D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x106F JUMP JUMPDEST PUSH2 0x679 DUP5 DUP5 DUP5 DUP5 PUSH2 0x969 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x68B DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x6C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x6CA DUP5 PUSH2 0x56D JUMP JUMPDEST SWAP1 SWAP3 GT ISZERO SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x70A SWAP3 SWAP2 SWAP1 PUSH2 0xF72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x77E PUSH2 0x750 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7FB SWAP2 SWAP1 PUSH2 0xDB4 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x80C DUP2 PUSH2 0x727 JUMP JUMPDEST PUSH2 0x842 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10DD JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 SWAP1 DUP2 ADD DUP1 SLOAD DUP5 MLOAD PUSH1 0x2 SWAP4 DUP3 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP2 AND SWAP3 SWAP1 SWAP3 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP4 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP4 DUP3 MSTORE SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x8F6 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x8CB JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x8F6 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x8D9 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x91C PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1BA PUSH2 0xB8C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x94F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6D5 JUMP JUMPDEST SWAP1 POP PUSH2 0x966 PUSH2 0x95E DUP3 CALLER PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x191 PUSH2 0xB8C JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x981 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP3 GT ISZERO JUMPDEST PUSH2 0x9B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x10A6 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x9F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1EC SWAP1 PUSH2 0x1038 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xA05 DUP4 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xA1D DUP5 PUSH2 0x903 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP4 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP1 DUP3 MSTORE DUP5 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SLOAD DUP8 DUP5 ADD MLOAD SWAP7 DUP9 ADD MLOAD ISZERO ISZERO PUSH17 0x100000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP8 AND PUSH9 0x10000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP8 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 AND SWAP5 SWAP1 SWAP5 OR SWAP5 SWAP1 SWAP5 AND SWAP3 SWAP1 SWAP3 OR DUP4 SSTORE PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD PUSH2 0xB10 SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0xCCA JUMP JUMPDEST POP SWAP1 POP POP DUP4 PUSH32 0xE07086969B318280A21B104288D59A9C26C15CCDC203744DFE88E76B56810A76 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH2 0xB46 SWAP3 SWAP2 SWAP1 PUSH2 0x1016 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP4 PUSH32 0x34CD0FBE9E7D58E0835610336EDA810722864E47A9B1F5DC5C8F976C13C384D3 DUP3 PUSH1 0x40 MLOAD PUSH2 0xB7E SWAP2 SWAP1 PUSH2 0xFAD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xB9A JUMPI PUSH2 0xB9A DUP2 PUSH2 0xC3B JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBA8 PUSH2 0x774 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBE4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xFB6 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC10 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC34 SWAP2 SWAP1 PUSH2 0xD54 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x966 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xD0B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xD38 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xD38 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xD38 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xD1D JUMP JUMPDEST POP PUSH2 0x91C SWAP3 SWAP2 POP JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD85 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDC5 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC34 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDF9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE11 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xE2D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE4C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xE5F JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xE6D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xEAA JUMPI DUP9 DUP10 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP12 LT ISZERO PUSH2 0xEC0 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP6 SWAP1 SWAP6 MSTORE POP SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xEFA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xF2E JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xF12 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xF3F JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xC34 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 MSTORE PUSH2 0x1029 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0xF09 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C696420696E697469616C2070657263656E74616765000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x466565207479706520616C726561647920726567697374657265640000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1E SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206D6178696D756D206665652070657263656E746167650000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E6F6E2D6578697374656E742066656520747970650000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x16 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E76616C6964206665652070657263656E7461676500000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT PUSH10 0xDC79556D0A70519ED424 SWAP2 0xC3 PUSH20 0xB0480905FBCB2B84C0D9CFF6A599261ECA64736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1101:5324:77:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5339:440;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4680:653;;;;;;:::i;:::-;;:::i;:::-;;5785:468;;;;;;:::i;:::-;;:::i;3252:334::-;;;;;;:::i;:::-;;:::i;4433:241::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2607:430:48:-;;;;;;:::i;:::-;;:::i;4294:133:77:-;;;;;;:::i;:::-;;:::i;1247:79:54:-;;;:::i;:::-;;;;;;;:::i;1386:109::-;;;:::i;6259:164:77:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5339:440::-;5444:7;5426;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5467:31;5463:310:::1;;5521:22;:43;;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5514:52;;;;5463:310;4413:1:32;5587:7:77;:37;5583:190;;;5647:22;:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;5583:190;5735:12;:21:::0;;;::::1;::::0;;;;;;:27;::::1;;::::0;-1:-1:-1;5583:190:77::1;5339:440:::0;;;;:::o;4680:653::-;4804:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;2276:21:48::1;:19;:21::i;:::-;4856:43:77::2;4881:7;4890:8;4856:24;:43::i;:::-;4848:78;;;;;;;;;;;;:::i;:::-;4941:31:::0;4937:327:::2;;4988:53;::::0;;;;:43:::2;:22;:43;::::0;::::2;::::0;:53:::2;::::0;5032:8;;4988:53:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;4937:327;;;4413:1:32;5062:7:77;:37;5058:206;;;5115:58;::::0;;;;:48:::2;:22;:48;::::0;::::2;::::0;:58:::2;::::0;5164:8;;5115:58:::2;;;:::i;5058:206::-;5234:19;:8;:17;:19::i;:::-;5204:12;:21:::0;;;::::2;::::0;;;;;;:49;;;::::2;;::::0;;;::::2;::::0;;;::::2;::::0;;5058:206:::2;5308:7;5279:47;5317:8;5279:47;;;;;;:::i;:::-;;;;;;;;4680:653:::0;;;:::o;5785:468::-;5935:7;5909;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;5962:31;5958:289:::1;;1778:5;6009:40;;;;5958:289;4413:1:32;6070:7:77;:37;6066:181;;;1863:4;6123:46;;;;6066:181;6207:12;:21:::0;;;::::1;::::0;;;;;;:29;;;::::1;;;::::0;-1:-1:-1;6200:36:77::1;;3252:334:::0;2276:21:48;:19;:21::i;:::-;3446:12:77::1;:21:::0;;;::::1;::::0;;;;;;:32;;;::::1;;;3445:33;3437:73;;;;;;;;;;;;:::i;:::-;3520:59;3537:7;3546:4;3552:12;3566;3520:16;:59::i;:::-;3252:334:::0;;;;:::o;4433:241::-;4595:4;4569:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;4631:36:::1;4659:7;4631:27;:36::i;:::-;4622:45:::0;;::::1;;::::0;4433:241;-1:-1:-1;;;4433:241:77:o;2607:430:48:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;4294:133:77:-;4365:4;4388:21;;;;;;;;;;:32;;;;;;;4294:133::o;1247:79:54:-;1313:6;1247:79;:::o;1386:109::-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1455:33;;1386:109;:::o;6259:164:77:-;6358:13;6340:7;3179:23;3194:7;3179:14;:23::i;:::-;3171:57;;;;;;;;;;;;:::i;:::-;6390:12:::1;:21:::0;;;::::1;::::0;;;;;;;;:26:::1;::::0;;::::1;6383:33:::0;;;;::::1;::::0;;::::1;;;;::::0;;;;::::1;::::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;6390:26;;6383:33;::::1;6390:26:::0;6383:33;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6259:164:::0;;;;:::o;1410:186:66:-;1466:6;1484:75;1502:16;1493:25;;;12724:3:19;1484:8:66;:75::i;:::-;-1:-1:-1;1583:5:66;1410:186::o;2420:181:48:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;:::-;2420:181;:::o;3592:696:77:-;3779:1;3764:12;:16;3763:68;;;;;1647:4;3786:12;:44;;3763:68;3755:111;;;;;;;;;;;;:::i;:::-;3900:12;3884;:28;;3876:67;;;;;;;;;;;;:::i;:::-;3978:167;;;;;;;;4111:23;:12;:21;:23::i;:::-;3978:167;;;;;;4067:23;:12;:21;:23::i;:::-;3978:167;;;;;;4016:4;3978:167;;;;;;;;;;;;;;;3954:21;;;;;;;;;:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4187:7;4161:54;4196:4;4202:12;4161:54;;;;;;;:::i;:::-;;;;;;;;4259:7;4230:51;4268:12;4230:51;;;;;;:::i;:::-;;;;;;;;3592:696;;;;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1501:178:54:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:67;1501:178;-1:-1:-1;;;1501:178:54:o;1459:126:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:257;;1297:2;1285:9;1276:7;1272:23;1268:32;1265:2;;;-1:-1;;1303:12;1265:2;86:6;80:13;14687:5;12737:13;12730:21;14665:5;14662:32;14652:2;;-1:-1;;14698:12;1449:239;;1552:2;1540:9;1531:7;1527:23;1523:32;1520:2;;;-1:-1;;1558:12;1520:2;219:6;206:20;12914:66;14809:5;12903:78;14785:5;14782:34;14772:2;;-1:-1;;14820:12;1695:303;;1830:2;1818:9;1809:7;1805:23;1801:32;1798:2;;;-1:-1;;1836:12;1798:2;379:6;373:13;13184:42;14973:5;13173:54;14928:5;14925:55;14915:2;;-1:-1;;14984:12;2005:241;;2109:2;2097:9;2088:7;2084:23;2080:32;2077:2;;;-1:-1;;2115:12;2077:2;-1:-1;974:20;;2071:175;-1:-1;2071:175::o;2253:263::-;;2368:2;2356:9;2347:7;2343:23;2339:32;2336:2;;;-1:-1;;2374:12;2336:2;-1:-1;1122:13;;2330:186;-1:-1;2330:186::o;2523:723::-;;;;;2688:3;2676:9;2667:7;2663:23;2659:33;2656:2;;;-1:-1;;2695:12;2656:2;987:6;974:20;2747:63;;2875:2;;2864:9;2860:18;2847:32;2899:18;;2891:6;2888:30;2885:2;;;-1:-1;;2921:12;2885:2;2997:6;2986:9;2982:22;;;559:3;552:4;544:6;540:17;536:27;526:2;;-1:-1;;567:12;526:2;614:6;601:20;2899:18;12079:6;12076:30;12073:2;;;-1:-1;;12109:12;12073:2;11742;11736:9;2875:2;12182:9;552:4;12167:6;12163:17;12159:33;11772:6;11768:17;;11879:6;11867:10;11864:22;2899:18;11831:10;11828:34;11825:62;11822:2;;;-1:-1;;11890:12;11822:2;11742;11909:22;707:21;;;807:16;;;;;804:25;-1:-1;801:2;;;-1:-1;;832:12;801:2;13991:6;2875:2;749:6;745:17;2875:2;783:5;779:16;13968:30;14029:16;;;;;;14022:27;;;;-1:-1;2650:596;;783:5;;-1:-1;;;;11742:2;3090:22;;974:20;;3159:2;3198:22;974:20;;2650:596::o;3253:366::-;;;3374:2;3362:9;3353:7;3349:23;3345:32;3342:2;;;-1:-1;;3380:12;3342:2;-1:-1;;974:20;;;3532:2;3571:22;;;974:20;;-1:-1;3336:283::o;4627:347::-;;4772:5;12360:12;12517:6;12512:3;12505:19;-1:-1;14136:101;14150:6;14147:1;14144:13;14136:101;;;12554:4;14217:11;;;;;14211:18;14198:11;;;;;14191:39;14165:10;14136:101;;;14252:6;14249:1;14246:13;14243:2;;;-1:-1;12554:4;14308:6;12549:3;14299:16;;14292:27;14243:2;-1:-1;14589:2;14569:14;14585:7;14565:28;4930:39;;;;12554:4;4930:39;;4719:255;-1:-1;;4719:255::o;6772:387::-;3928:37;;;12914:66;12903:78;7023:2;7014:12;;4223:56;7123:11;;;6914:245::o;7166:210::-;12737:13;;12730:21;3811:34;;7287:2;7272:18;;7258:118::o;7383:222::-;3928:37;;;7510:2;7495:18;;7481:124::o;7612:444::-;3928:37;;;13184:42;13173:54;;;7959:2;7944:18;;3697:37;13173:54;8042:2;8027:18;;3697:37;7795:2;7780:18;;7766:290::o;8063:262::-;13184:42;13173:54;;;;4382:70;;8210:2;8195:18;;8181:144::o;8591:310::-;;8738:2;8759:17;8752:47;8813:78;8738:2;8727:9;8723:18;8877:6;8813:78;:::i;8908:421::-;;9083:2;9104:17;9097:47;9158:78;9083:2;9072:9;9068:18;9222:6;9158:78;:::i;:::-;9150:86;;3958:5;9315:2;9304:9;9300:18;3928:37;9054:275;;;;;:::o;9336:416::-;9536:2;9550:47;;;5206:2;9521:18;;;12505:19;5242:28;12545:14;;;5222:49;5290:12;;;9507:245::o;9759:416::-;9959:2;9973:47;;;5541:2;9944:18;;;12505:19;5577:29;12545:14;;;5557:50;5626:12;;;9930:245::o;10182:416::-;10382:2;10396:47;;;5877:2;10367:18;;;12505:19;5913:32;12545:14;;;5893:53;5965:12;;;10353:245::o;10605:416::-;10805:2;10819:47;;;6216:2;10790:18;;;12505:19;6252:23;12545:14;;;6232:44;6295:12;;;10776:245::o;11028:416::-;11228:2;11242:47;;;6546:2;11213:18;;;12505:19;6582:24;12545:14;;;6562:45;6626:12;;;11199:245::o"},"methodIdentifiers":{"getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getFeeTypeMaximumPercentage(uint256)":"5e2cae4c","getFeeTypeName(uint256)":"b661eda1","getFeeTypePercentage(uint256)":"1a7c3263","getVault()":"8d928af8","isValidFeeType(uint256)":"868897a0","isValidFeeTypePercentage(uint256,uint256)":"74735e0b","registerFeeType(uint256,string,uint256,uint256)":"7268d6ce","setFeeTypePercentage(uint256,uint256)":"4d44f0e9"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"maxYieldValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAUMValue\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"percentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"maximumPercentage\",\"type\":\"uint256\"}],\"name\":\"ProtocolFeeTypeRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeMaximumPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypeName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"getFeeTypePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"}],\"name\":\"isValidFeeType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"isValidFeeTypePercentage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maximumValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialValue\",\"type\":\"uint256\"}],\"name\":\"registerFeeType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeType\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newValue\",\"type\":\"uint256\"}],\"name\":\"setFeeTypePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getFeeTypeMaximumPercentage(uint256)\":{\"details\":\"Returns `feeType`'s maximum value.\"},\"getFeeTypeName(uint256)\":{\"details\":\"Returns `feeType`'s name.\"},\"getFeeTypePercentage(uint256)\":{\"details\":\"Returns the current percentage value for `feeType`. This is the preferred mechanism for querying these - whenever possible, use this fucntion instead of e.g. querying the ProtocolFeesCollector.\"},\"isValidFeeType(uint256)\":{\"details\":\"Returns true if `feeType` has been registered and can be queried.\"},\"isValidFeeTypePercentage(uint256,uint256)\":{\"details\":\"Returns true if `value` is a valid percentage value for `feeType`.\"},\"registerFeeType(uint256,string,uint256,uint256)\":{\"details\":\"Registers a new fee type in the system, making it queryable via `getFeeTypePercentage` and `getFeeTypeName`, as well as configurable via `setFeeTypePercentage`. `feeType` can be any arbitrary value (that is not in use). It is not possible to de-register fee types, nor change their name or maximum value.\"},\"setFeeTypePercentage(uint256,uint256)\":{\"details\":\"Sets the percentage value for `feeType` to `newValue`. IMPORTANT: it is possible for a third party to modify the SWAP and FLASH_LOAN fee type values directly in the ProtocolFeesCollector, without invoking this function. This will result in the `ProtocolFeePercentageChanged` event not being emitted despite their value changing. Such usage of the ProtocolFeesCollector is however discouraged: only this contract should be granted permission to call `setSwapFeePercentage` and `setFlashLoanFeePercentage`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeePercentagesProvider.sol\":\"ProtocolFeePercentagesProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeCast.sol\":{\"keccak256\":\"0x900f61d39cfbb66db432105fdd524892b4d36fd57021231a7a011ecf2e06d848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9853feb7f6ea54eed91e45cc9f833062a768365295c64867ac7e83926cb3a25\",\"dweb:/ipfs/Qmeo7jrEjenzBXQ8pSDj76CqVwHg9rhRZKiPfDpLuHk42Q\"]},\"contracts/ProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7222bf213cd467658150c021177a7941ad27f724d44998c89015345313a743d5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1aa0e05ff305b8de694a87b6c65ba091e499dce6e818cd6d769fbd5393f4387a\",\"dweb:/ipfs/QmQ9PuDt1crwUMJDuuhkuXZwid2t2yKfB8xm5uZdgkgdrQ\"]}},\"version\":1}"}},"contracts/ProtocolFeeSplitter.sol":{"Pool":{"abi":[{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getOwner()":"893d20e8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeeSplitter.sol\":\"Pool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":{\"keccak256\":\"0xe7d001454031b746cff5a8afacadf7ea5ca1458942cb9e928ff7233fe78b0d3e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ce39b6781a4ad5ecf260eebe3dace4c9d28032d28fa7600a215b3376cab2d1c\",\"dweb:/ipfs/QmcYzvPJhaRFnWEhFhB9Jp1SzfFmLzY97A2RkdS79uuENz\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/ProtocolFeeSplitter.sol\":{\"keccak256\":\"0x4a6b7a45405f80cb591e787adeb8fa060a018b48f86ed48c11052f355505ada1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecf6ca50c53c55a93954f0a66287b489510406f9454ee02ae33851280f60189f\",\"dweb:/ipfs/QmRchJ1sFesikjE8iS3h4V9FFnyFdxNixDeBZAbbsyGVdM\"]}},\"version\":1}"},"ProtocolFeeSplitter":{"abi":[{"inputs":[{"internalType":"contract IProtocolFeesWithdrawer","name":"protocolFeesWithdrawer","type":"address"},{"internalType":"address","name":"treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"DefaultRevenueSharingFeePercentageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"poolEarned","type":"uint256"},{"indexed":true,"internalType":"address","name":"treasury","type":"address"},{"indexed":false,"internalType":"uint256","name":"treasuryEarned","type":"uint256"}],"name":"FeesCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"PoolBeneficiaryChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"revenueSharePercentage","type":"uint256"}],"name":"PoolRevenueShareChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryChanged","type":"event"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"collectFees","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getAmounts","outputs":[{"internalType":"uint256","name":"beneficiaryAmount","type":"uint256"},{"internalType":"uint256","name":"treasuryAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDefaultRevenueSharingFeePercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"}],"name":"getPoolSettings","outputs":[{"internalType":"uint256","name":"revenueSharePercentageOverride","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesWithdrawer","outputs":[{"internalType":"contract IProtocolFeesWithdrawer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTreasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"feePercentage","type":"uint256"}],"name":"setDefaultRevenueSharingFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"address","name":"newBeneficiary","type":"address"}],"name":"setPoolBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"newSwapFeePercentage","type":"uint256"}],"name":"setRevenueSharingFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b506040516112c23803806112c28339818101604052604081101561003357600080fd5b50805160209182015130608052606082901b6001600160601b03191660a052600080546001600160a01b0319166001600160a01b03808416919091179091556040805163d2946c2b60e01b81529051939492939185169263d2946c2b92600480840193829003018186803b1580156100aa57600080fd5b505afa1580156100be573d6000803e3d6000fd5b505050506040513d60208110156100d457600080fd5b50516040805163fbfa77cf60e01b815290516001600160a01b039092169163fbfa77cf91600480820192602092909190829003018186803b15801561011857600080fd5b505afa15801561012c573d6000803e3d6000fd5b505050506040513d602081101561014257600080fd5b50516001600160601b031960609190911b1660c052505060805160a05160601c60c05160601c6111196101a96000398061036f528061055152806107da528061080352508061034952806109af5280610c145280610fa35250806106cf52506111196000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638b25b62311610081578063c2f7070b1161005b578063c2f7070b14610267578063e65fed801461026f578063f0f442601461028c576100d4565b80638b25b6231461021f5780638d928af8146102425780639d8669d31461024a576100d4565b80637ab74be4116100b25780637ab74be41461015d578063817db73b14610198578063851c1bb3146101ce576100d4565b80630dbbe67f146100d95780633b19e84a146101245780634f4f4bc714610155575b600080fd5b6100f6600480360360208110156100ef57600080fd5b50356102bf565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b61012c61032b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012c610347565b6101966004803603604081101561017357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661036b565b005b6101b5600480360360208110156101ae57600080fd5b503561054a565b6040805192835260208301919091528051918290030190f35b61020d600480360360208110156101e457600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166106c9565b60408051918252519081900360200190f35b6101966004803603604081101561023557600080fd5b508035906020013561073b565b61012c6107d8565b6101b56004803603602081101561026057600080fd5b50356107fc565b61020d6108b5565b6101966004803603602081101561028557600080fd5b50356108bb565b610196600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610915565b6000806102ca6110cc565b5050506000908152600260209081526040918290208251808401909352546bffffffffffffffffffffffff81168084526c0100000000000000000000000090910473ffffffffffffffffffffffffffffffffffffffff169290910182905291565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156103dd57600080fd5b505afa1580156103f1573d6000803e3d6000fd5b505050506040513d604081101561040757600080fd5b5051604080517f893d20e800000000000000000000000000000000000000000000000000000000815290519192506104c29173ffffffffffffffffffffffffffffffffffffffff84169163893d20e8916004808301926020929190829003018186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60208110156104a057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314610191610996565b60008381526002602090815260409182902080546bffffffffffffffffffffffff166c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716908102919091179091558251908152915185927fe465e96a44286b329b8c54cccf70d1d6274e8efaea722886b9859f2fe72e434c92908290030190a2505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156105bf57600080fd5b505afa1580156105d3573d6000803e3d6000fd5b505050506040513d60408110156105e957600080fd5b505160008581526002602052604090205490915081906c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661062f82876109a8565b909550935061063f828683610b74565b600054610665908390869073ffffffffffffffffffffffffffffffffffffffff16610b74565b6000546040805187815260208101879052815173ffffffffffffffffffffffffffffffffffffffff938416938516928a927f5e6a5d32e254e9a9ada84103f092032c1e3a9882a3a838d3fbe3a3d7e443d997929081900390910190a4505050915091565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff0000000000000000000000000000000000000000000000000000000084168284015282516024818403018152604490920190925280519101205b919050565b610743610d47565b61075a6706f05b59d3b200008211156102bc610996565b60008281526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff85161790558151838152915184927f351d078d378f4b620d746f0652a508c25d9c47976faf18fa2effff8c7b2f92d792908290030190a25050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d604081101561089b57600080fd5b50519050806108aa81866109a8565b935093505050915091565b60015490565b6108c3610d47565b6108da6706f05b59d3b200008211156102bc610996565b60018190556040805182815290517f75ad8306cff34eadc5ae4b5655781cd0091fba009d93aaf6f1d0180a4e077dd29181900360200190a150565b61091d610d47565b6000805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f6089181900360200190a150565b816109a4576109a481610d90565b5050565b60008060007f0000000000000000000000000000000000000000000000000000000000000000905060008573ffffffffffffffffffffffffffffffffffffffff166370a082318373ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152516024808301926020929190829003018186803b158015610aca57600080fd5b505afa158015610ade573d6000803e3d6000fd5b505050506040513d6020811015610af457600080fd5b5051905080610b0b57600080935093505050610b6d565b6000858152600260205260409020546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1680610b535750600093509150610b6d9050565b610b6582610b6088610dba565b610ded565b945094505050505b9250929050565b81610b7e57610d42565b604080516001808252818301909252606091602080830190803683370190505090508381600081518110610bae57fe5b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508381600081518110610c0657fe5b6020026020010181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab68383866040518463ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838103835286818151815260200191508051906020019060200280838360005b83811015610cc0578181015183820152602001610ca8565b50505050905001838103825285818151815260200191508051906020019060200280838360005b83811015610cff578181015183820152602001610ce7565b5050505090500195505050505050600060405180830381600087803b158015610d2757600080fd5b505af1158015610d3b573d6000803e3d6000fd5b5050505050505b505050565b6000610d766000357fffffffff00000000000000000000000000000000000000000000000000000000166106c9565b9050610d8d610d858233610e0f565b610191610996565b50565b610d8d817f42414c0000000000000000000000000000000000000000000000000000000000610ed8565b6000818152600260205260408120546bffffffffffffffffffffffff1680610de6575050600154610736565b9050610736565b600080610dfa8484610f53565b9150610e068483610f89565b90509250929050565b6000610e19610f9f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610ea557600080fd5b505afa158015610eb9573d6000803e3d6000fd5b505050506040513d6020811015610ecf57600080fd5b50519392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6000828202610f77841580610f70575083858381610f6d57fe5b04145b6003610996565b670de0b6b3a764000090049392505050565b6000610f99838311156001610996565b50900390565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100757600080fd5b505afa15801561101b573d6000803e3d6000fd5b505050506040513d602081101561103157600080fd5b5051604080517faaabadc5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163aaabadc591600480820192602092909190829003018186803b15801561109b57600080fd5b505afa1580156110af573d6000803e3d6000fd5b505050506040513d60208110156110c557600080fd5b5051905090565b60408051808201909152600080825260208201529056fea264697066735822122044b9a23842c69efa88bae2566432a4fa35aee6fb175864e5b2f02bf1ae10b0cf64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x12C2 CODESIZE SUB DUP1 PUSH2 0x12C2 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD ADDRESS PUSH1 0x80 MSTORE PUSH1 0x60 DUP3 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 DUP6 AND SWAP3 PUSH4 0xD2946C2B SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xFBFA77CF PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xFBFA77CF SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xC0 MSTORE POP POP PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x1119 PUSH2 0x1A9 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x36F MSTORE DUP1 PUSH2 0x551 MSTORE DUP1 PUSH2 0x7DA MSTORE DUP1 PUSH2 0x803 MSTORE POP DUP1 PUSH2 0x349 MSTORE DUP1 PUSH2 0x9AF MSTORE DUP1 PUSH2 0xC14 MSTORE DUP1 PUSH2 0xFA3 MSTORE POP DUP1 PUSH2 0x6CF MSTORE POP PUSH2 0x1119 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B25B623 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xC2F7070B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC2F7070B EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xE65FED80 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xF0F44260 EQ PUSH2 0x28C JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8B25B623 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x9D8669D3 EQ PUSH2 0x24A JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x7AB74BE4 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7AB74BE4 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x817DB73B EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1CE JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0xDBBE67F EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x4F4F4BC7 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x12C PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12C PUSH2 0x347 JUMP JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x73B JUMP JUMPDEST PUSH2 0x12C PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x20D PUSH2 0x8B5 JUMP JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x915 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CA PUSH2 0x10CC JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH13 0x1000000000000000000000000 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP1 SWAP2 ADD DUP3 SWAP1 MSTORE SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x893D20E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH2 0x4C2 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x893D20E8 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x191 PUSH2 0x996 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xE465E96A44286B329B8C54CCCF70D1D6274E8EFAEA722886B9859F2FE72E434C SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 SWAP1 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x62F DUP3 DUP8 PUSH2 0x9A8 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x63F DUP3 DUP7 DUP4 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x665 SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 DUP6 AND SWAP3 DUP11 SWAP3 PUSH32 0x5E6A5D32E254E9A9ADA84103F092032C1E3A9882A3A838D3FBE3A3D7E443D997 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x743 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0x75A PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0x996 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP2 MLOAD DUP4 DUP2 MSTORE SWAP2 MLOAD DUP5 SWAP3 PUSH32 0x351D078D378F4B620D746F0652A508C25D9C47976FAF18FA2EFFFF8C7B2F92D7 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x885 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x8AA DUP2 DUP7 PUSH2 0x9A8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8C3 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0x8DA PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0x996 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x75AD8306CFF34EADC5AE4B5655781CD0091FBA009D93AAF6F1D0180A4E077DD2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x91D PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xC714D22A2F08B695F81E7C707058DB484AA5B4D6B4C9FD64BEB10FE85832F608 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP2 PUSH2 0x9A4 JUMPI PUSH2 0x9A4 DUP2 PUSH2 0xD90 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 SWAP1 POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA48 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xB0B JUMPI PUSH1 0x0 DUP1 SWAP4 POP SWAP4 POP POP POP PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xB53 JUMPI POP PUSH1 0x0 SWAP4 POP SWAP2 POP PUSH2 0xB6D SWAP1 POP JUMP JUMPDEST PUSH2 0xB65 DUP3 PUSH2 0xB60 DUP9 PUSH2 0xDBA JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xB7E JUMPI PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xBAE JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP4 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCA8 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCFF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCE7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD76 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6C9 JUMP JUMPDEST SWAP1 POP PUSH2 0xD8D PUSH2 0xD85 DUP3 CALLER PUSH2 0xE0F JUMP JUMPDEST PUSH2 0x191 PUSH2 0x996 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xD8D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xED8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xDE6 JUMPI POP POP PUSH1 0x1 SLOAD PUSH2 0x736 JUMP JUMPDEST SWAP1 POP PUSH2 0x736 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDFA DUP5 DUP5 PUSH2 0xF53 JUMP JUMPDEST SWAP2 POP PUSH2 0xE06 DUP5 DUP4 PUSH2 0xF89 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE19 PUSH2 0xF9F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xF77 DUP5 ISZERO DUP1 PUSH2 0xF70 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xF6D JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x996 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF99 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x996 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1031 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xAAABADC5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x109B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0xB9 LOG2 CODESIZE TIMESTAMP 0xC6 SWAP15 STATICCALL DUP9 0xBA 0xE2 JUMP PUSH5 0x32A4FA35AE 0xE6 0xFB OR PC PUSH5 0xE5B2F02BF1 0xAE LT 0xB0 0xCF PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1508:6751:78:-:0;;;2443:441;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2443:441:78;;;;;;;2700:4;2049:46:48;;2723:48:78::1;::::0;;;-1:-1:-1;;;;;;2723:48:78;::::1;::::0;2676:31;2781:20;;-1:-1:-1;;;;;;2781:20:78::1;-1:-1:-1::0;;;;;2781:20:78;;::::1;::::0;;;::::1;::::0;;;2443:441;2820:49;;-1:-1:-1;;;2820:49:78;;;;2443:441;;;;2723:48;;::::1;::::0;2820:47:::1;::::0;:49:::1;::::0;;::::1;::::0;;;;;;2723:48;2820:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2820:49:78;:57:::1;::::0;;-1:-1:-1;;;2820:57:78;;;;-1:-1:-1;;;;;2820:55:78;;::::1;::::0;::::1;::::0;:57:::1;::::0;;::::1;::::0;:49:::1;::::0;:57;;;;;;;;:55;:57;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;2820:57:78;-1:-1:-1;;;;;;2811:66:78::1;::::0;;;;;::::1;::::0;-1:-1:-1;;1508:6751:78;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3980":[{"length":32,"start":1743}],"10078":[{"length":32,"start":841},{"length":32,"start":2479},{"length":32,"start":3092},{"length":32,"start":4003}],"10080":[{"length":32,"start":879},{"length":32,"start":1361},{"length":32,"start":2010},{"length":32,"start":2051}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100d45760003560e01c80638b25b62311610081578063c2f7070b1161005b578063c2f7070b14610267578063e65fed801461026f578063f0f442601461028c576100d4565b80638b25b6231461021f5780638d928af8146102425780639d8669d31461024a576100d4565b80637ab74be4116100b25780637ab74be41461015d578063817db73b14610198578063851c1bb3146101ce576100d4565b80630dbbe67f146100d95780633b19e84a146101245780634f4f4bc714610155575b600080fd5b6100f6600480360360208110156100ef57600080fd5b50356102bf565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301528051918290030190f35b61012c61032b565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61012c610347565b6101966004803603604081101561017357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff1661036b565b005b6101b5600480360360208110156101ae57600080fd5b503561054a565b6040805192835260208301919091528051918290030190f35b61020d600480360360208110156101e457600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166106c9565b60408051918252519081900360200190f35b6101966004803603604081101561023557600080fd5b508035906020013561073b565b61012c6107d8565b6101b56004803603602081101561026057600080fd5b50356107fc565b61020d6108b5565b6101966004803603602081101561028557600080fd5b50356108bb565b610196600480360360208110156102a257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610915565b6000806102ca6110cc565b5050506000908152600260209081526040918290208251808401909352546bffffffffffffffffffffffff81168084526c0100000000000000000000000090910473ffffffffffffffffffffffffffffffffffffffff169290910182905291565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927846040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156103dd57600080fd5b505afa1580156103f1573d6000803e3d6000fd5b505050506040513d604081101561040757600080fd5b5051604080517f893d20e800000000000000000000000000000000000000000000000000000000815290519192506104c29173ffffffffffffffffffffffffffffffffffffffff84169163893d20e8916004808301926020929190829003018186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60208110156104a057600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314610191610996565b60008381526002602090815260409182902080546bffffffffffffffffffffffff166c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716908102919091179091558251908152915185927fe465e96a44286b329b8c54cccf70d1d6274e8efaea722886b9859f2fe72e434c92908290030190a2505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b1580156105bf57600080fd5b505afa1580156105d3573d6000803e3d6000fd5b505050506040513d60408110156105e957600080fd5b505160008581526002602052604090205490915081906c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1661062f82876109a8565b909550935061063f828683610b74565b600054610665908390869073ffffffffffffffffffffffffffffffffffffffff16610b74565b6000546040805187815260208101879052815173ffffffffffffffffffffffffffffffffffffffff938416938516928a927f5e6a5d32e254e9a9ada84103f092032c1e3a9882a3a838d3fbe3a3d7e443d997929081900390910190a4505050915091565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff0000000000000000000000000000000000000000000000000000000084168284015282516024818403018152604490920190925280519101205b919050565b610743610d47565b61075a6706f05b59d3b200008211156102bc610996565b60008281526002602090815260409182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff85161790558151838152915184927f351d078d378f4b620d746f0652a508c25d9c47976faf18fa2effff8c7b2f92d792908290030190a25050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f6c00927856040518263ffffffff1660e01b815260040180828152602001915050604080518083038186803b15801561087157600080fd5b505afa158015610885573d6000803e3d6000fd5b505050506040513d604081101561089b57600080fd5b50519050806108aa81866109a8565b935093505050915091565b60015490565b6108c3610d47565b6108da6706f05b59d3b200008211156102bc610996565b60018190556040805182815290517f75ad8306cff34eadc5ae4b5655781cd0091fba009d93aaf6f1d0180a4e077dd29181900360200190a150565b61091d610d47565b6000805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fc714d22a2f08b695f81e7c707058db484aa5b4d6b4c9fd64beb10fe85832f6089181900360200190a150565b816109a4576109a481610d90565b5050565b60008060007f0000000000000000000000000000000000000000000000000000000000000000905060008573ffffffffffffffffffffffffffffffffffffffff166370a082318373ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610a3457600080fd5b505afa158015610a48573d6000803e3d6000fd5b505050506040513d6020811015610a5e57600080fd5b5051604080517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152516024808301926020929190829003018186803b158015610aca57600080fd5b505afa158015610ade573d6000803e3d6000fd5b505050506040513d6020811015610af457600080fd5b5051905080610b0b57600080935093505050610b6d565b6000858152600260205260409020546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1680610b535750600093509150610b6d9050565b610b6582610b6088610dba565b610ded565b945094505050505b9250929050565b81610b7e57610d42565b604080516001808252818301909252606091602080830190803683370190505090508381600081518110610bae57fe5b73ffffffffffffffffffffffffffffffffffffffff92909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508381600081518110610c0657fe5b6020026020010181815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab68383866040518463ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838103835286818151815260200191508051906020019060200280838360005b83811015610cc0578181015183820152602001610ca8565b50505050905001838103825285818151815260200191508051906020019060200280838360005b83811015610cff578181015183820152602001610ce7565b5050505090500195505050505050600060405180830381600087803b158015610d2757600080fd5b505af1158015610d3b573d6000803e3d6000fd5b5050505050505b505050565b6000610d766000357fffffffff00000000000000000000000000000000000000000000000000000000166106c9565b9050610d8d610d858233610e0f565b610191610996565b50565b610d8d817f42414c0000000000000000000000000000000000000000000000000000000000610ed8565b6000818152600260205260408120546bffffffffffffffffffffffff1680610de6575050600154610736565b9050610736565b600080610dfa8484610f53565b9150610e068483610f89565b90509250929050565b6000610e19610f9f565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610ea557600080fd5b505afa158015610eb9573d6000803e3d6000fd5b505050506040513d6020811015610ecf57600080fd5b50519392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b6000828202610f77841580610f70575083858381610f6d57fe5b04145b6003610996565b670de0b6b3a764000090049392505050565b6000610f99838311156001610996565b50900390565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561100757600080fd5b505afa15801561101b573d6000803e3d6000fd5b505050506040513d602081101561103157600080fd5b5051604080517faaabadc5000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163aaabadc591600480820192602092909190829003018186803b15801561109b57600080fd5b505afa1580156110af573d6000803e3d6000fd5b505050506040513d60208110156110c557600080fd5b5051905090565b60408051808201909152600080825260208201529056fea264697066735822122044b9a23842c69efa88bae2566432a4fa35aee6fb175864e5b2f02bf1ae10b0cf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8B25B623 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xC2F7070B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC2F7070B EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0xE65FED80 EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0xF0F44260 EQ PUSH2 0x28C JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x8B25B623 EQ PUSH2 0x21F JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x9D8669D3 EQ PUSH2 0x24A JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0x7AB74BE4 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x7AB74BE4 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x817DB73B EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1CE JUMPI PUSH2 0xD4 JUMP JUMPDEST DUP1 PUSH4 0xDBBE67F EQ PUSH2 0xD9 JUMPI DUP1 PUSH4 0x3B19E84A EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x4F4F4BC7 EQ PUSH2 0x155 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x2BF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x12C PUSH2 0x32B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x12C PUSH2 0x347 JUMP JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x36B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x20D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x235 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x73B JUMP JUMPDEST PUSH2 0x12C PUSH2 0x7D8 JUMP JUMPDEST PUSH2 0x1B5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7FC JUMP JUMPDEST PUSH2 0x20D PUSH2 0x8B5 JUMP JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x8BB JUMP JUMPDEST PUSH2 0x196 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x915 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CA PUSH2 0x10CC JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP1 DUP5 MSTORE PUSH13 0x1000000000000000000000000 SWAP1 SWAP2 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP1 SWAP2 ADD DUP3 SWAP1 MSTORE SWAP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x407 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x893D20E800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH2 0x4C2 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x893D20E8 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x48A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x191 PUSH2 0x996 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH13 0x1000000000000000000000000 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD DUP6 SWAP3 PUSH32 0xE465E96A44286B329B8C54CCCF70D1D6274E8EFAEA722886B9859F2FE72E434C SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP DUP2 SWAP1 PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x62F DUP3 DUP8 PUSH2 0x9A8 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x63F DUP3 DUP7 DUP4 PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x665 SWAP1 DUP4 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xB74 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP4 DUP6 AND SWAP3 DUP11 SWAP3 PUSH32 0x5E6A5D32E254E9A9ADA84103F092032C1E3A9882A3A838D3FBE3A3D7E443D997 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x743 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0x75A PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0x996 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND OR SWAP1 SSTORE DUP2 MLOAD DUP4 DUP2 MSTORE SWAP2 MLOAD DUP5 SWAP3 PUSH32 0x351D078D378F4B620D746F0652A508C25D9C47976FAF18FA2EFFFF8C7B2F92D7 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF6C00927 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x885 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0x8AA DUP2 DUP7 PUSH2 0x9A8 JUMP JUMPDEST SWAP4 POP SWAP4 POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x8C3 PUSH2 0xD47 JUMP JUMPDEST PUSH2 0x8DA PUSH8 0x6F05B59D3B20000 DUP3 GT ISZERO PUSH2 0x2BC PUSH2 0x996 JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH32 0x75AD8306CFF34EADC5AE4B5655781CD0091FBA009D93AAF6F1D0180A4E077DD2 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x91D PUSH2 0xD47 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD PUSH32 0xC714D22A2F08B695F81E7C707058DB484AA5B4D6B4C9FD64BEB10FE85832F608 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST DUP2 PUSH2 0x9A4 JUMPI PUSH2 0x9A4 DUP2 PUSH2 0xD90 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 SWAP1 POP PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA48 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE MLOAD PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xADE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP1 PUSH2 0xB0B JUMPI PUSH1 0x0 DUP1 SWAP4 POP SWAP4 POP POP POP PUSH2 0xB6D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH13 0x1000000000000000000000000 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xB53 JUMPI POP PUSH1 0x0 SWAP4 POP SWAP2 POP PUSH2 0xB6D SWAP1 POP JUMP JUMPDEST PUSH2 0xB65 DUP3 PUSH2 0xB60 DUP9 PUSH2 0xDBA JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST SWAP5 POP SWAP5 POP POP POP POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 PUSH2 0xB7E JUMPI PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xBAE JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP4 DUP4 DUP7 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCC0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCA8 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCFF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCE7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD3B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD76 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x6C9 JUMP JUMPDEST SWAP1 POP PUSH2 0xD8D PUSH2 0xD85 DUP3 CALLER PUSH2 0xE0F JUMP JUMPDEST PUSH2 0x191 PUSH2 0x996 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xD8D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xED8 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0xDE6 JUMPI POP POP PUSH1 0x1 SLOAD PUSH2 0x736 JUMP JUMPDEST SWAP1 POP PUSH2 0x736 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xDFA DUP5 DUP5 PUSH2 0xF53 JUMP JUMPDEST SWAP2 POP PUSH2 0xE06 DUP5 DUP4 PUSH2 0xF89 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE19 PUSH2 0xF9F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xEB9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xECF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xF77 DUP5 ISZERO DUP1 PUSH2 0xF70 JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xF6D JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0x996 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP1 DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF99 DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x996 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x101B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1031 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xAAABADC500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xAAABADC5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x109B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x10C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0xB9 LOG2 CODESIZE TIMESTAMP 0xC6 SWAP15 STATICCALL DUP9 0xBA 0xE2 JUMP PUSH5 0x32A4FA35AE 0xE6 0xFB OR PC PUSH5 0xE5B2F02BF1 0xAE LT 0xB0 0xCF PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1508:6751:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5562:328;;;;;;;;;;;;;;;;-1:-1:-1;5562:328:78;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;5459:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5061:141;;;:::i;3850:347::-;;;;;;;;;;;;;;;;-1:-1:-1;3850:347:78;;;;;;;;;:::i;:::-;;4203:556;;;;;;;;;;;;;;;;-1:-1:-1;4203:556:78;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2607:430:48;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:48;;;;:::i;:::-;;;;;;;;;;;;;;;;2890:433:78;;;;;;;;;;;;;;;;-1:-1:-1;2890:433:78;;;;;;;:::i;5363:90::-;;;:::i;4765:290::-;;;;;;;;;;;;;;;;-1:-1:-1;4765:290:78;;:::i;5208:149::-;;;:::i;3329:353::-;;;;;;;;;;;;;;;;-1:-1:-1;3329:353:78;;:::i;3688:156::-;;;;;;;;;;;;;;;;-1:-1:-1;3688:156:78;;;;:::i;5562:328::-;5667:38;5707:19;5742:36;;:::i;:::-;-1:-1:-1;;;5781:21:78;;;;:13;:21;;;;;;;;;5742:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5562:328::o;5459:97::-;5514:7;5540:9;;;5459:97;:::o;5061:141::-;5172:23;5061:141;:::o;3850:347::-;3947:12;3965:6;:14;;;3980:6;3965:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3965:22:78;;4020:21;;;;;;;3965:22;;-1:-1:-1;3997:72:78;;4020:19;;;;;;:21;;;;;3965:22;;4020:21;;;;;;;:19;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4020:21:78;4006:35;;:10;:35;10212:3:19;3997:8:78;:72::i;:::-;4079:21;;;;:13;:21;;;;;;;;;:50;;;;;;;;;;;;;;;;;;4144:46;;;;;;;4079:21;;4144:46;;;;;;;;;3850:347;;;:::o;4203:556::-;4267:25;4294:22;4329:12;4347:6;:14;;;4362:6;4347:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4347:22:78;4379:10;4436:21;;;:13;4347:22;4436:21;4347:22;4436:21;;:33;4347:22;;-1:-1:-1;4347:22:78;;4436:33;;;;;4518:24;4347:22;4436:21;4518:11;:24::i;:::-;4480:62;;-1:-1:-1;4480:62:78;-1:-1:-1;4553:49:78;4566:3;4480:62;4590:11;4553:12;:49::i;:::-;4646:9;;4612:44;;4625:3;;4630:14;;4646:9;;4612:12;:44::i;:::-;4726:9;;4672:80;;;;;;;;;;;;;;4726:9;;;;;4672:80;;;4686:6;;4672:80;;;;;;;;;;;4203:556;;;;;;:::o;2607:430:48:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;;:::o;2890:433:78:-;2276:21:48;:19;:21::i;:::-;3045:110:78::1;1798:5;3054:20;:59;;14912:3:19;3045:8:78;:110::i;:::-;3165:21;::::0;;;:13:::1;:21;::::0;;;;;;;;:83;;;::::1;;::::0;::::1;;::::0;;3263:53;;;;;;;3165:21;;3263:53:::1;::::0;;;;;;;::::1;2890:433:::0;;:::o;5363:90::-;5440:6;5363:90;:::o;4765:290::-;4865:25;4892:22;4931:12;4949:6;:14;;;4964:6;4949:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4949:22:78;;-1:-1:-1;4949:22:78;5024:24;4949:22;5041:6;5024:11;:24::i;:::-;5017:31;;;;;;4765:290;;;:::o;5208:149::-;5315:35;;5208:149;:::o;3329:353::-;2276:21:48;:19;:21::i;:::-;3440:103:78::1;1798:5;3449:13;:52;;14912:3:19;3440:8:78;:103::i;:::-;3553:35;:51:::0;;;3619:56:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;3329:353:::0;:::o;3688:156::-;2276:21:48;:19;:21::i;:::-;3771:9:78::1;:23:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;3809:28:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;3688:156:::0;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;6645:856:78:-;6716:7;6725;6744:46;6793:23;6744:72;;6826:30;6859:3;:13;;;6881:22;:47;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6881:49:78;6859:73;;;;;;;;;;;;;;;;;;;;;;;;;6881:49;;6859:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6859:73:78;;-1:-1:-1;6946:27:78;6942:71;;6997:1;7000;6989:13;;;;;;;;6942:71;7023:19;7045:21;;;:13;:21;;;;;:33;;;;;;;7089:406;;-1:-1:-1;7225:1:78;;-1:-1:-1;7228:22:78;-1:-1:-1;7217:34:78;;-1:-1:-1;7217:34:78;7089:406;7403:81;7419:22;7443:40;7476:6;7443:32;:40::i;:::-;7403:15;:81::i;:::-;7396:88;;;;;;;6645:856;;;;;;:::o;6239:400::-;6353:11;6349:48;;6380:7;;6349:48;6432:15;;;6445:1;6432:15;;;;;;;;;6407:22;;6432:15;;;;;;;;;;;-1:-1:-1;6432:15:78;6407:40;;6469:3;6457:6;6464:1;6457:9;;;;;;;;:15;;;;;:9;;;;;;;;;;;:15;6510:16;;;6524:1;6510:16;;;;;;;;;6483:24;;6510:16;;;;;;;;;;;;-1:-1:-1;6510:16:78;6483:43;;6549:6;6536:7;6544:1;6536:10;;;;;;;;;;;;;:19;;;;;6566:23;:45;;;6612:6;6620:7;6629:2;6566:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6239:400;;;;;;:::o;2420:181:48:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;:::-;2420:181;:::o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;7830:427:78:-;7910:7;7955:21;;;:13;:21;;;;;:52;;;8021:20;8017:234;;-1:-1:-1;;8152:35:78;;8145:42;;8017:234;8225:15;-1:-1:-1;8218:22:78;;7507:317;7633:19;;7706:45;:22;7737:13;7706:30;:45::i;:::-;7692:59;-1:-1:-1;7778:39:78;:22;7692:59;7778:26;:39::i;:::-;7761:56;;7507:317;;;;;:::o;5896:179::-;5984:4;6007:16;:14;:16::i;:::-;:27;;;6035:8;6045:7;6062:4;6007:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6007:61:78;;5896:179;-1:-1:-1;;;5896:179:78:o;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1833:209:56;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:19;1947:8:56;:57::i;:::-;988:4;2022:13;;;;-1:-1:-1;;;1833:209:56:o;1588:239::-;1646:7;1738:37;1752:1;1747;:6;;5194:1:19;1738:8:56;:37::i;:::-;-1:-1:-1;1797:5:56;;;1588:239::o;6081:152:78:-;6130:11;6160:23;:48;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6160:50:78;:66;;;;;;;;:64;;;;;;;:66;;;;;:50;;:66;;;;;;;;:64;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6160:66:78;;-1:-1:-1;6081:152:78;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"collectFees(bytes32)":"817db73b","getActionId(bytes4)":"851c1bb3","getAmounts(bytes32)":"9d8669d3","getDefaultRevenueSharingFeePercentage()":"c2f7070b","getPoolSettings(bytes32)":"0dbbe67f","getProtocolFeesWithdrawer()":"4f4f4bc7","getTreasury()":"3b19e84a","getVault()":"8d928af8","setDefaultRevenueSharingFeePercentage(uint256)":"e65fed80","setPoolBeneficiary(bytes32,address)":"7ab74be4","setRevenueSharingFeePercentage(bytes32,uint256)":"8b25b623","setTreasury(address)":"f0f44260"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IProtocolFeesWithdrawer\",\"name\":\"protocolFeesWithdrawer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"DefaultRevenueSharingFeePercentageChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"poolEarned\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"treasury\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"treasuryEarned\",\"type\":\"uint256\"}],\"name\":\"FeesCollected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"PoolBeneficiaryChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"revenueSharePercentage\",\"type\":\"uint256\"}],\"name\":\"PoolRevenueShareChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"TreasuryChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"collectFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"treasuryAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDefaultRevenueSharingFeePercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolSettings\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"revenueSharePercentageOverride\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesWithdrawer\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesWithdrawer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTreasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feePercentage\",\"type\":\"uint256\"}],\"name\":\"setDefaultRevenueSharingFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"newBeneficiary\",\"type\":\"address\"}],\"name\":\"setPoolBeneficiary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"newSwapFeePercentage\",\"type\":\"uint256\"}],\"name\":\"setRevenueSharingFeePercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newTreasury\",\"type\":\"address\"}],\"name\":\"setTreasury\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This contract is responsible for splitting the BPT profits collected by ProtocolFeeCollector between the pool's owner and Balancers DAO treasury Nothing happens for non-BPT tokens (WETH, WBTC, etc...)\",\"kind\":\"dev\",\"methods\":{\"collectFees(bytes32)\":{\"params\":{\"poolId\":\"- the poolId of the pool for which we collect fees\"},\"returns\":{\"beneficiaryAmount\":\"The amount of tokens sent to pool's beneficiary\",\"treasuryAmount\":\"The amount of tokens sent to Balancer's treasury\"}},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getAmounts(bytes32)\":{\"params\":{\"poolId\":\"- the poolId of the pool for which we collect fees\"},\"returns\":{\"beneficiaryAmount\":\"The amount of tokens sent to pool's beneficiary\",\"treasuryAmount\":\"The amount of tokens sent to Balancer's treasury\"}},\"setDefaultRevenueSharingFeePercentage(uint256)\":{\"params\":{\"feePercentage\":\"- new default revenue sharing fee percentage\"}},\"setPoolBeneficiary(bytes32,address)\":{\"params\":{\"newBeneficiary\":\"- beneficiary address\",\"poolId\":\"- the poolId of the pool where we want to change fee beneficiary\"}},\"setRevenueSharingFeePercentage(bytes32,uint256)\":{\"params\":{\"newSwapFeePercentage\":\"- new swap fee percentage\",\"poolId\":\"- the poolId of the pool where we want to change fee percentage\"}},\"setTreasury(address)\":{\"params\":{\"newTreasury\":\"- beneficiary address\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectFees(bytes32)\":{\"notice\":\"Collects and distributes fees for a `poolId`\"},\"getAmounts(bytes32)\":{\"notice\":\"Returns amounts that can be colected\"},\"getDefaultRevenueSharingFeePercentage()\":{\"notice\":\"Returns default revenue sharing fee percentage\"},\"getPoolSettings(bytes32)\":{\"notice\":\"Returns a Pool's settings.\"},\"getProtocolFeesWithdrawer()\":{\"notice\":\"Returns the Protocol Fees Withdrawer address.\"},\"getTreasury()\":{\"notice\":\"Returns Balancer's treasury address.\"},\"getVault()\":{\"notice\":\"Returns Balancer's vault address.\"},\"setDefaultRevenueSharingFeePercentage(uint256)\":{\"notice\":\"Allows a authorized user to change the default revenue sharing fee percentage\"},\"setPoolBeneficiary(bytes32,address)\":{\"notice\":\"Allows a pool owner to change the pool beneficiary settings\"},\"setRevenueSharingFeePercentage(bytes32,uint256)\":{\"notice\":\"Allows a authorized user to change revenueShare for a `poolId`\"},\"setTreasury(address)\":{\"notice\":\"Allows a authorized user to change the treasury address\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeeSplitter.sol\":\"ProtocolFeeSplitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeeSplitter.sol\":{\"keccak256\":\"0xe7d001454031b746cff5a8afacadf7ea5ca1458942cb9e928ff7233fe78b0d3e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4ce39b6781a4ad5ecf260eebe3dace4c9d28032d28fa7600a215b3376cab2d1c\",\"dweb:/ipfs/QmcYzvPJhaRFnWEhFhB9Jp1SzfFmLzY97A2RkdS79uuENz\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/ProtocolFeeSplitter.sol\":{\"keccak256\":\"0x4a6b7a45405f80cb591e787adeb8fa060a018b48f86ed48c11052f355505ada1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ecf6ca50c53c55a93954f0a66287b489510406f9454ee02ae33851280f60189f\",\"dweb:/ipfs/QmRchJ1sFesikjE8iS3h4V9FFnyFdxNixDeBZAbbsyGVdM\"]}},\"version\":1}"}},"contracts/ProtocolFeesWithdrawer.sol":{"ProtocolFeesWithdrawer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20[]","name":"initialDeniedTokens","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenAllowlisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract IERC20","name":"token","type":"address"}],"name":"TokenDenylisted","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"allowlistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"denylistToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getDenylistedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDenylistedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeesCollector","outputs":[{"internalType":"contract IProtocolFeesCollector","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"isWithdrawableToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"isWithdrawableTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"recipient","type":"address"}],"name":"withdrawCollectedFees","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200106438038062001064833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82518660208202830111640100000000821117156200009357600080fd5b82525081516020918201928201910280838360005b83811015620000c2578181015183820152602001620000a8565b50505050919091016040818152306080526001600160601b0319606089901b1660a05263d2946c2b60e01b8252516001600160a01b038816955063d2946c2b945060048083019450602093509091829003018186803b1580156200012557600080fd5b505afa1580156200013a573d6000803e3d6000fd5b505050506040513d60208110156200015157600080fd5b505160601b6001600160601b03191660c052805160005b818110156200019f57620001968382815181106200018257fe5b6020026020010151620001a960201b60201c565b60010162000168565b50505050620002df565b620001c48160006200025560201b620007b91790919060201c565b62000216576040805162461bcd60e51b815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b604080516001600160a01b038316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b6000620002638383620002be565b620002b457508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b03861690811790915585549082528286019093526040902091909155620002b8565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b60805160a05160601c60c05160601c610d4d62000317600039806103f952806106c152508061059752508061052a5250610d4d6000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a21dfaee11610081578063d2946c2b1161005b578063d2946c2b14610324578063de0b27c91461032c578063fd3a0cdd1461035f576100c9565b8063a21dfaee14610265578063aaabadc5146102e9578063cdf0e934146102f1576100c9565b8063851c1bb3116100b2578063851c1bb3146101db5780638d928af81461022c5780638dd26fc61461025d576100c9565b8063194d810f146100ce5780636daefab614610103575b600080fd5b610101600480360360208110156100e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037c565b005b6101016004803603606081101561011957600080fd5b81019060208101813564010000000081111561013457600080fd5b82018360208201111561014657600080fd5b8035906020019184602083028401116401000000008311171561016857600080fd5b91939092909160208101903564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16610390565b61021a600480360360208110156101f157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b60408051918252519081900360200190f35b610234610595565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61021a6105b9565b6102d56004803603602081101561027b57600080fd5b81019060208101813564010000000081111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111640100000000831117156102ca57600080fd5b5090925090506105ca565b604080519115158252519081900360200190f35b61023461062c565b6102d56004803603602081101561030757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ac565b6102346106bf565b6101016004803603602081101561034257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e3565b6102346004803603602081101561037557600080fd5b50356107ad565b610384610841565b61038d81610887565b50565b610398610841565b6103a285856105ca565b6103f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cf16027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab686868686866040518663ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352868152602090810191508790870280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105c56000610949565b905090565b600081815b8181101561061f576106088585838181106105e657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166106ac565b61061757600092505050610626565b6001016105cf565b5060019150505b92915050565b6000610636610595565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b5051905090565b60006106b8818361094d565b1592915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106eb610841565b6106f660008261097b565b61076157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e206973206e6f742064656e796c6973746564000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fecc8f38812b30ead07c6cdc6aa7b0eb8d42772335216e06122f7e821db6852589181900360200190a150565b60006106268183610b29565b60006107c5838361094d565b61083957508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610626565b506000610626565b60006108706000357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b905061038d61087f8233610b4c565b610191610c15565b6108926000826107b9565b6108fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b5490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610b1f5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a845760008660000182815481106109e957fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff90911691508190889085908110610a1f57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a8f57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061062692505050565b6000915050610626565b8154600090610b3b9083106064610c15565b610b458383610c27565b9392505050565b6000610b5661062c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610be257600080fd5b505afa158015610bf6573d6000803e3d6000fd5b505050506040513d6020811015610c0c57600080fd5b50519392505050565b81610c2357610c2381610c61565b5050565b6000826000018281548110610c3857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261038d917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656ea26469706673582212208f8e9c05295f5493f542d5a04bcb509bd44aa7d57da4657a09d344023e0bb14664736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1064 CODESIZE SUB DUP1 PUSH3 0x1064 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH3 0x93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA8 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 DUP2 DUP2 MSTORE ADDRESS PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP10 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH4 0xD2946C2B PUSH1 0xE0 SHL DUP3 MSTORE MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP6 POP PUSH4 0xD2946C2B SWAP5 POP PUSH1 0x4 DUP1 DUP4 ADD SWAP5 POP PUSH1 0x20 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x13A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x19F JUMPI PUSH3 0x196 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x182 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH3 0x1A9 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x1 ADD PUSH3 0x168 JUMP JUMPDEST POP POP POP POP PUSH3 0x2DF JUMP JUMPDEST PUSH3 0x1C4 DUP2 PUSH1 0x0 PUSH3 0x255 PUSH1 0x20 SHL PUSH3 0x7B9 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x216 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x263 DUP4 DUP4 PUSH3 0x2BE JUMP JUMPDEST PUSH3 0x2B4 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x2B8 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0xD4D PUSH3 0x317 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3F9 MSTORE DUP1 PUSH2 0x6C1 MSTORE POP DUP1 PUSH2 0x597 MSTORE POP DUP1 PUSH2 0x52A MSTORE POP PUSH2 0xD4D PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA21DFAEE GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2946C2B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2946C2B EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0xDE0B27C9 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xFD3A0CDD EQ PUSH2 0x35F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xA21DFAEE EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0xCDF0E934 EQ PUSH2 0x2F1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DD26FC6 EQ PUSH2 0x25D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x194D810F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x6DAEFAB6 EQ PUSH2 0x103 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x390 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x62C JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x234 PUSH2 0x6BF JUMP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AD JUMP JUMPDEST PUSH2 0x384 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x38D DUP2 PUSH2 0x887 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x398 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x3A2 DUP6 DUP6 PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x3F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCF1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP9 DUP9 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP8 SWAP1 DUP8 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C5 PUSH1 0x0 PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH2 0x608 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x626 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 PUSH2 0x595 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP2 DUP4 PUSH2 0x94D JUMP JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6EB PUSH2 0x841 JUMP JUMPDEST PUSH2 0x6F6 PUSH1 0x0 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x761 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F742064656E796C6973746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xECC8F38812B30EAD07C6CDC6AA7B0EB8D42772335216E06122F7E821DB685258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP2 DUP4 PUSH2 0xB29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C5 DUP4 DUP4 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x839 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x626 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x870 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST SWAP1 POP PUSH2 0x38D PUSH2 0x87F DUP3 CALLER PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0x892 PUSH1 0x0 DUP3 PUSH2 0x7B9 JUMP JUMPDEST PUSH2 0x8FD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xB1F JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA84 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x9E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA8F JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x626 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x626 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB3B SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0xB45 DUP4 DUP4 PUSH2 0xC27 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB56 PUSH2 0x62C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC23 JUMPI PUSH2 0xC23 DUP2 PUSH2 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x38D SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH21 0x74656D7074696E6720746F20776974686472617720 PUSH5 0x656E796C69 PUSH20 0x74656420746F6B656EA26469706673582212208F DUP15 SWAP13 SDIV 0x29 0x5F SLOAD SWAP4 CREATE2 TIMESTAMP 0xD5 LOG0 0x4B 0xCB POP SWAP12 0xD4 0x4A 0xA7 0xD5 PUSH30 0xA4657A09D344023E0BB14664736F6C634300070100330000000000000000 ","sourceMap":"1367:3591:79:-:0;;;1639:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1639:343:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1639:343:79;;;;;;;;1143:4:54;2049:46:48;;-1:-1:-1;;;;;;1162:14:54::1;::::0;;;;::::1;::::0;-1:-1:-1;;;1768:32:79;;;-1:-1:-1;;;;;1162:14:54;::::1;::::0;-1:-1:-1;1768:30:79::1;::::0;-1:-1:-1;1768:32:79::1;::::0;;::::1;::::0;-1:-1:-1;1768:32:79::1;::::0;-1:-1:-1;1768:32:79;;;;;;;1162:14:54;1768:32:79;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;1768:32:79;1743:57:::1;::::0;-1:-1:-1;;;;;;1743:57:79;::::1;::::0;1834:26;;1811:20:::1;1870:106;1894:12;1890:1;:16;1870:106;;;1927:38;1942:19;1962:1;1942:22;;;;;;;;;;;;;;1927:14;;;:38;;:::i;:::-;1908:3;;1870:106;;;;1639:343;::::0;;1367:3591;;4781:175;4846:37;4876:5;4846:17;:21;;;;;;:37;;;;:::i;:::-;4838:74;;;;;-1:-1:-1;;;4838:74:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;4927:22;;;-1:-1:-1;;;;;4927:22:79;;;;;;;;;;;;;;;4781:175;:::o;1851:410:64:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:64;;;;;;;;-1:-1:-1;1978:23:64;;;;;;;;;;;;-1:-1:-1;;;;;;1978:23:64;-1:-1:-1;;;;;1978:23:64;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:64;1937:318;1851:410;;;;:::o;3977:134::-;-1:-1:-1;;;;;4080:19:64;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;1367:3591:79:-;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3980":[{"length":32,"start":1322}],"4804":[{"length":32,"start":1431}],"10617":[{"length":32,"start":1017},{"length":32,"start":1729}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100c95760003560e01c8063a21dfaee11610081578063d2946c2b1161005b578063d2946c2b14610324578063de0b27c91461032c578063fd3a0cdd1461035f576100c9565b8063a21dfaee14610265578063aaabadc5146102e9578063cdf0e934146102f1576100c9565b8063851c1bb3116100b2578063851c1bb3146101db5780638d928af81461022c5780638dd26fc61461025d576100c9565b8063194d810f146100ce5780636daefab614610103575b600080fd5b610101600480360360208110156100e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661037c565b005b6101016004803603606081101561011957600080fd5b81019060208101813564010000000081111561013457600080fd5b82018360208201111561014657600080fd5b8035906020019184602083028401116401000000008311171561016857600080fd5b91939092909160208101903564010000000081111561018657600080fd5b82018360208201111561019857600080fd5b803590602001918460208302840111640100000000831117156101ba57600080fd5b91935091503573ffffffffffffffffffffffffffffffffffffffff16610390565b61021a600480360360208110156101f157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b60408051918252519081900360200190f35b610234610595565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61021a6105b9565b6102d56004803603602081101561027b57600080fd5b81019060208101813564010000000081111561029657600080fd5b8201836020820111156102a857600080fd5b803590602001918460208302840111640100000000831117156102ca57600080fd5b5090925090506105ca565b604080519115158252519081900360200190f35b61023461062c565b6102d56004803603602081101561030757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106ac565b6102346106bf565b6101016004803603602081101561034257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e3565b6102346004803603602081101561037557600080fd5b50356107ad565b610384610841565b61038d81610887565b50565b610398610841565b6103a285856105ca565b6103f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180610cf16027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636daefab686868686866040518663ffffffff1660e01b81526004018080602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381038352888882818152602001925060200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169091018481038352868152602090810191508790870280828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561050557600080fd5b505af1158015610519573d6000803e3d6000fd5b505050505050505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006105c56000610949565b905090565b600081815b8181101561061f576106088585838181106105e657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166106ac565b61061757600092505050610626565b6001016105cf565b5060019150505b92915050565b6000610636610595565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561067b57600080fd5b505afa15801561068f573d6000803e3d6000fd5b505050506040513d60208110156106a557600080fd5b5051905090565b60006106b8818361094d565b1592915050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6106eb610841565b6106f660008261097b565b61076157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f546f6b656e206973206e6f742064656e796c6973746564000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517fecc8f38812b30ead07c6cdc6aa7b0eb8d42772335216e06122f7e821db6852589181900360200190a150565b60006106268183610b29565b60006107c5838361094d565b61083957508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610626565b506000610626565b60006108706000357fffffffff0000000000000000000000000000000000000000000000000000000016610524565b905061038d61087f8233610b4c565b610191610c15565b6108926000826107b9565b6108fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f546f6b656e20616c72656164792064656e796c69737465640000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517ff1a0f8a2f72d5da4064fe8bb9f78d485b757edfbd004465e56f102f2b8ab6edb9181900360200190a150565b5490565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120548015610b1f5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214610a845760008660000182815481106109e957fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff90911691508190889085908110610a1f57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b8554869080610a8f57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061062692505050565b6000915050610626565b8154600090610b3b9083106064610c15565b610b458383610c27565b9392505050565b6000610b5661062c565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015610be257600080fd5b505afa158015610bf6573d6000803e3d6000fd5b505050506040513d6020811015610c0c57600080fd5b50519392505050565b81610c2357610c2381610c61565b5050565b6000826000018281548110610c3857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261038d917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfe417474656d7074696e6720746f2077697468647261772064656e796c697374656420746f6b656ea26469706673582212208f8e9c05295f5493f542d5a04bcb509bd44aa7d57da4657a09d344023e0bb14664736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA21DFAEE GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD2946C2B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD2946C2B EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0xDE0B27C9 EQ PUSH2 0x32C JUMPI DUP1 PUSH4 0xFD3A0CDD EQ PUSH2 0x35F JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0xA21DFAEE EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x2E9 JUMPI DUP1 PUSH4 0xCDF0E934 EQ PUSH2 0x2F1 JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x851C1BB3 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x1DB JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x8DD26FC6 EQ PUSH2 0x25D JUMPI PUSH2 0xC9 JUMP JUMPDEST DUP1 PUSH4 0x194D810F EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x6DAEFAB6 EQ PUSH2 0x103 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x37C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x146 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x198 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x390 JUMP JUMPDEST PUSH2 0x21A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x595 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x21A PUSH2 0x5B9 JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x5CA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x62C JUMP JUMPDEST PUSH2 0x2D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x234 PUSH2 0x6BF JUMP JUMPDEST PUSH2 0x101 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6E3 JUMP JUMPDEST PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AD JUMP JUMPDEST PUSH2 0x384 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x38D DUP2 PUSH2 0x887 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x398 PUSH2 0x841 JUMP JUMPDEST PUSH2 0x3A2 DUP6 DUP6 PUSH2 0x5CA JUMP JUMPDEST PUSH2 0x3F7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCF1 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6DAEFAB6 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP9 DUP9 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 POP DUP8 SWAP1 DUP8 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x505 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x519 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C5 PUSH1 0x0 PUSH2 0x949 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH2 0x608 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6AC JUMP JUMPDEST PUSH2 0x617 JUMPI PUSH1 0x0 SWAP3 POP POP POP PUSH2 0x626 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x5CF JUMP JUMPDEST POP PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x636 PUSH2 0x595 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x67B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x68F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B8 DUP2 DUP4 PUSH2 0x94D JUMP JUMPDEST ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x6EB PUSH2 0x841 JUMP JUMPDEST PUSH2 0x6F6 PUSH1 0x0 DUP3 PUSH2 0x97B JUMP JUMPDEST PUSH2 0x761 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E206973206E6F742064656E796C6973746564000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xECC8F38812B30EAD07C6CDC6AA7B0EB8D42772335216E06122F7E821DB685258 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x626 DUP2 DUP4 PUSH2 0xB29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7C5 DUP4 DUP4 PUSH2 0x94D JUMP JUMPDEST PUSH2 0x839 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP6 SLOAD SWAP1 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x626 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x626 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x870 PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x524 JUMP JUMPDEST SWAP1 POP PUSH2 0x38D PUSH2 0x87F DUP3 CALLER PUSH2 0xB4C JUMP JUMPDEST PUSH2 0x191 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0x892 PUSH1 0x0 DUP3 PUSH2 0x7B9 JUMP JUMPDEST PUSH2 0x8FD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x546F6B656E20616C72656164792064656E796C69737465640000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE SWAP1 MLOAD PUSH32 0xF1A0F8A2F72D5DA4064FE8BB9F78D485B757EDFBD004465E56F102F2B8AB6EDB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0xB1F JUMPI DUP4 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 ADD SWAP2 ADD DUP1 DUP3 EQ PUSH2 0xA84 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x9E9 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD DUP8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 POP DUP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP4 ADD SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0xA8F JUMPI INVALID JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP3 MSTORE PUSH1 0x1 DUP9 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SWAP4 POP PUSH2 0x626 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x626 JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB3B SWAP1 DUP4 LT PUSH1 0x64 PUSH2 0xC15 JUMP JUMPDEST PUSH2 0xB45 DUP4 DUP4 PUSH2 0xC27 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB56 PUSH2 0x62C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xC23 JUMPI PUSH2 0xC23 DUP2 PUSH2 0xC61 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x38D SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID COINBASE PUSH21 0x74656D7074696E6720746F20776974686472617720 PUSH5 0x656E796C69 PUSH20 0x74656420746F6B656EA26469706673582212208F DUP15 SWAP13 SDIV 0x29 0x5F SLOAD SWAP4 CREATE2 TIMESTAMP 0xD5 LOG0 0x4B 0xCB POP SWAP12 0xD4 0x4A 0xA7 0xD5 PUSH30 0xA4657A09D344023E0BB14664736F6C634300070100330000000000000000 ","sourceMap":"1367:3591:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4321:106;;;;;;;;;;;;;;;;-1:-1:-1;4321:106:79;;;;:::i;:::-;;3755:443;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3755:443:79;-1:-1:-1;3755:443:79;;;;:::i;2607:430:48:-;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:48;;;;:::i;:::-;;;;;;;;;;;;;;;;1247:79:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3260:128:79;;;:::i;2660:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2660:292:79;;-1:-1:-1;2660:292:79;-1:-1:-1;2660:292:79;:::i;:::-;;;;;;;;;;;;;;;;;;1386:109:54;;;:::i;2329:146:79:-;;;;;;;;;;;;;;;;-1:-1:-1;2329:146:79;;;;:::i;2070:138::-;;;:::i;4548:200::-;;;;;;;;;;;;;;;;-1:-1:-1;4548:200:79;;;;:::i;3040:142::-;;;;;;;;;;;;;;;;-1:-1:-1;3040:142:79;;:::i;4321:106::-;2276:21:48;:19;:21::i;:::-;4399::79::1;4414:5;4399:14;:21::i;:::-;4321:106:::0;:::o;3755:443::-;2276:21:48;:19;:21::i;:::-;3938:28:79::1;3959:6;;3938:20;:28::i;:::-;3930:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4119:22;:44;;;4164:6;;4172:7;;4181:9;4119:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;-1:-1:-1;4119:72:79;;;::::1;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3755:443:::0;;;;;:::o;2607:430:48:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1247:79:54:-;1313:6;1247:79;:::o;3260:128:79:-;3329:7;3355:26;:17;:24;:26::i;:::-;3348:33;;3260:128;:::o;2660:292::-;2746:4;2785:6;2746:4;2808:117;2832:12;2828:1;:16;2808:117;;;2870:30;2890:6;;2897:1;2890:9;;;;;;;;;;;;;;;2870:19;:30::i;:::-;2865:49;;2909:5;2902:12;;;;;;2865:49;2846:3;;2808:117;;;;2941:4;2934:11;;;2660:292;;;;;:::o;1386:109:54:-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1462:26:54;;-1:-1:-1;1386:109:54;:::o;2329:146:79:-;2402:4;2426:42;2402:4;2461:5;2426:26;:42::i;:::-;2425:43;;2329:146;-1:-1:-1;;2329:146:79:o;2070:138::-;2179:22;2070:138;:::o;4548:200::-;2276:21:48;:19;:21::i;:::-;4635:40:79::1;:17;4668:5:::0;4635:24:::1;:40::i;:::-;4627:76;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4718:23;::::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;4548:200:::0;:::o;3040:142::-;3115:6;3147:27;3115:6;3168:5;3147:20;:27::i;1851:410:64:-;1921:4;1942:20;1951:3;1956:5;1942:8;:20::i;:::-;1937:318;;-1:-1:-1;1978:23:64;;;;;;;;-1:-1:-1;1978:23:64;;;;;;;;;;;;;;;;;;;;;;;2158:18;;2136:19;;;:12;;;:19;;;;;;:40;;;;2190:11;;1937:318;-1:-1:-1;2239:5:64;2232:12;;2420:181:48;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;4781:175:79:-;4846:37;:17;4876:5;4846:21;:37::i;:::-;4838:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4927:22;;;;;;;;;;;;;;;;;;;4781:175;:::o;4192:114:64:-;4281:18;;4192:114::o;3977:134::-;4080:19;;4057:4;4080:19;;;:12;;;;;:19;;;;;;:24;;;3977:134::o;2429:1467::-;2639:19;;;2502:4;2639:19;;;:12;;;:19;;;;;;2673:15;;2669:1221;;3114:18;;3066:14;;;;;3114:22;3236:26;;;3232:389;;3282:17;3302:3;:11;;3314:9;3302:22;;;;;;;;;;;;;;;;;;3424:26;;3302:22;;;;;-1:-1:-1;3302:22:64;;3424:3;;3436:13;;3424:26;;;;;;;;;;;;;;;;;;:38;;;;;;;;;;;3536:23;;;;;;-1:-1:-1;3536:12:64;;;:23;;;;;;3562:17;;;3536:43;;3232:389;3699:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3791:19;;;;3699:17;3791:12;;;:19;;;;;;3784:26;;;;3699:17;-1:-1:-1;3825:11:64;;-1:-1:-1;;;3825:11:64;2669:1221;3874:5;3867:12;;;;;4648:199;4750:18;;4722:7;;4741:58;;4750:26;-1:-1:-1;5662:3:19;4741:8:64;:58::i;:::-;4816:24;4829:3;4834:5;4816:12;:24::i;:::-;4809:31;4648:199;-1:-1:-1;;;4648:199:64:o;1501:178:54:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1612:60:54;;1501:178;-1:-1:-1;;;1501:178:54:o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;5212:135:64:-;5296:7;5322:3;:11;;5334:5;5322:18;;;;;;;;;;;;;;;;;;;;;5212:135;-1:-1:-1;;;5212:135:64:o;1459:126:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"allowlistToken(address)":"de0b27c9","denylistToken(address)":"194d810f","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getDenylistedToken(uint256)":"fd3a0cdd","getDenylistedTokensLength()":"8dd26fc6","getProtocolFeesCollector()":"d2946c2b","getVault()":"8d928af8","isWithdrawableToken(address)":"cdf0e934","isWithdrawableTokens(address[])":"a21dfaee","withdrawCollectedFees(address[],uint256[],address)":"6daefab6"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"initialDeniedTokens\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenAllowlisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDenylisted\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"allowlistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"denylistToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getDenylistedToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDenylistedTokensLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeesCollector\",\"outputs\":[{\"internalType\":\"contract IProtocolFeesCollector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"isWithdrawableToken\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"isWithdrawableTokens\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawCollectedFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Balancer Labs\",\"kind\":\"dev\",\"methods\":{\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"isWithdrawableTokens(address[])\":{\"details\":\"Returns false if any token is denylisted.\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"details\":\"Reverts if attempting to withdraw a denylisted token.\",\"params\":{\"amounts\":\"- an array of the amounts of each token to withdraw.\",\"recipient\":\"- the address to which to send the withdrawn tokens.\",\"tokens\":\"- an array of token addresses to withdraw.\"}}},\"title\":\"Protocol Fees Withdrawer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowlistToken(address)\":{\"notice\":\"Marks the provided token as eligible for withdrawal from the Protocol Fee Collector\"},\"denylistToken(address)\":{\"notice\":\"Marks the provided token as ineligible for withdrawal from the Protocol Fee Collector\"},\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getDenylistedToken(uint256)\":{\"notice\":\"Returns the denylisted token at the given `index`.\"},\"getDenylistedTokensLength()\":{\"notice\":\"Returns the number of denylisted tokens.\"},\"getProtocolFeesCollector()\":{\"notice\":\"Returns the address of the Protocol Fee Collector.\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"},\"isWithdrawableToken(address)\":{\"notice\":\"Returns whether the provided token may be withdrawn from the Protocol Fee Collector\"},\"isWithdrawableTokens(address[])\":{\"notice\":\"Returns whether the provided array of tokens may be withdrawn from the Protocol Fee Collector\"},\"withdrawCollectedFees(address[],uint256[],address)\":{\"notice\":\"Withdraws fees from the Protocol Fee Collector.\"}},\"notice\":\"Safety layer around the Protocol Fees Collector which allows withdrawals of specific tokens to be blocked. This is useful for the case where tokens that shouldn't be distributed are unexpectedly paid into the Protocol Fees Collector.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ProtocolFeesWithdrawer.sol\":\"ProtocolFeesWithdrawer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x3f235f82df21b385822788f353cabd2e48acd35e337d90eda8afe67e0d18cc7f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://179069a97cdb7a48024e96448ea5bb72870efde39b285e5cd0445a442b7d6d0e\",\"dweb:/ipfs/QmNdAgcrCHySVWzpZ4va5rnL3ZJFNAWRKYqFf8i6Mi9QJ6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EnumerableSet.sol\":{\"keccak256\":\"0xa644f3f9066d6a300bd7c1c214ce55c1569bb5ec54815d49c5c7a1a63cd03df3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81ee2467e6a0f340d64738d7a03a407e88caa5ee31cb3c8bd6990985f1891acc\",\"dweb:/ipfs/QmP7s6CSdDLGFjNxi9Q8GEVJFiD6QkeseGD857bPE7E7Ki\"]},\"contracts/ProtocolFeesWithdrawer.sol\":{\"keccak256\":\"0x5be2d5002c3a011f5400af4fb194d7dae569aacd978df1c7f7e44fc9947e274a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://88a071fdf81242e4945c8b52883d4d2e20511c4f3829bdbbb86532fba94bd2e3\",\"dweb:/ipfs/QmPAHtgVGTkg5hR4KTG2VasEMyWpyaDQex3c4ZXBngCbRq\"]}},\"version\":1}"}},"contracts/relayer/AaveWrapping.sol":{"AaveWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"AaveWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Aave's aTokens into their StaticAToken wrappers\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/AaveWrapping.sol\":\"AaveWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0xf5cb22d0f0bf6ff9e72d5e0c18579c19be358c9ca84a9e4bc7aa8c6337d52e42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d8f401a270bb66d936e014ac7ed475d918ff63b4339daa9bd80330d3f8025ad6\",\"dweb:/ipfs/QmbBuChEaRuxEa6njBzoeYz1vkyg5ezV1sbY6FSsrpvrvM\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/BalancerRelayer.sol":{"BalancerRelayer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"address","name":"libraryAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220ae2986d189807b7f562b5667a0dc32043a64b5fc57d1cf73ab6628ca3f8dd6a864736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0x29 DUP7 0xD1 DUP10 DUP1 PUSH28 0x7F562B5667A0DC32043A64B5FC57D1CF73AB6628CA3F8DD6A864736F PUSH13 0x63430007010033000000000000 ","sourceMap":"2394:1831:81:-:0;;;2849:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2070:1:65;2175:7;:22;-1:-1:-1;;2909:14:81;;;;;;;2933:25;;;;;2394:1831;;317:429:-1;;;464:2;452:9;443:7;439:23;435:32;432:2;;;-1:-1;;470:12;432:2;245:6;239:13;257:48;299:5;257:48;:::i;:::-;648:2;698:22;;83:13;522:89;;-1:-1;101:33;83:13;101:33;:::i;:::-;656:74;;;;426:320;;;;;:::o;1092:117::-;-1:-1;1026:54;;1151:35;;1141:2;;1200:1;;1190:12;1141:2;1135:74;:::o;:::-;2394:1831:81;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11044":[{"length":32,"start":88},{"length":32,"start":288}],"11046":[{"length":32,"start":252},{"length":32,"start":527}]},"linkReferences":{},"object":"6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220ae2986d189807b7f562b5667a0dc32043a64b5fc57d1cf73ab6628ca3f8dd6a864736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0x29 DUP7 0xD1 DUP10 DUP1 PUSH28 0x7F562B5667A0DC32043A64B5FC57D1CF73AB6628CA3F8DD6A864736F PUSH13 0x63430007010033000000000000 ","sourceMap":"2394:1831:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3451:60;3460:10;:29;3482:6;3460:29;;13943:3:19;3451:8:81;:60::i;:::-;2394:1831;;;;;3620:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3524:90;;;;;;;;;;;;;:::i;3721:315::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;3620:95:81:-;3700:8;3620:95;:::o;3524:90::-;3601:6;3524:90;:::o;3721:315::-;3811:22;2613:20:65;:18;:20::i;:::-;3867:4:81;3855:24:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3845:34;;3894:9;3889:118;3909:15:::0;;::::1;3889:118;;;3958:38;3988:4;;3993:1;3988:7;;;;;;;;;;;;;;;;;;:::i;:::-;3958:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;3958:29:81::1;:8;:29;::::0;:38;-1:-1:-1;;3958:29:81::1;:38::i;:::-;3945:7;3953:1;3945:10;;;;;;;;;::::0;;::::1;::::0;;;;;:51;3926:3:::1;;3889:118;;;;4017:12;:10;:12::i;:::-;2654:19:65::0;:17;:19::i;:::-;3721:315:81;;;;:::o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;2686:271:65:-;2809:48;2113:1;2818:7;;:19;;10156:3:19;2809:8:65;:48::i;:::-;2113:1;2932:7;:18;2686:271::o;4539:294:59:-;4622:12;4706;4720:23;4747:6;:19;;4767:4;4747:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4705:67;;;;4789:37;4806:7;4815:10;4789:16;:37::i;:::-;4782:44;4539:294;-1:-1:-1;;;;;4539:294:59:o;4042:181:81:-;4105:21;4140:16;;4136:81;;4172:34;:10;4193:12;4172:20;:34::i;2963:208:65:-;2070:1;3142:7;:22;2963:208::o;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;5057:714:59;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:59;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12033:3:19;5703:7:59;:37::i;2421:369::-;2502:78;2536:6;2511:21;:31;;11367:3:19;2502:8:59;:78::i;:::-;2669:12;2687:9;:14;;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11430:3:19;2732:8:59;:51::i;:::-;2421:369;;;:::o;392:419:-1:-;;;542:2;530:9;521:7;517:23;513:32;510:2;;;-1:-1;;548:12;510:2;606:17;593:31;644:18;;636:6;633:30;630:2;;;-1:-1;;666:12;630:2;778:6;767:9;763:22;;;162:3;155:4;147:6;143:17;139:27;129:2;;-1:-1;;170:12;129:2;213:6;200:20;644:18;232:6;229:30;226:2;;;-1:-1;;262:12;226:2;357:3;542:2;;341:6;337:17;298:6;323:32;;320:41;317:2;;;-1:-1;;364:12;317:2;542;294:17;;;;;686:109;;-1:-1;504:307;;-1:-1;;;;504:307::o;3252:271::-;;2581:5;5609:12;2692:52;2737:6;2732:3;2725:4;2718:5;2714:16;2692:52;:::i;:::-;2756:16;;;;;3386:137;-1:-1;;3386:137::o;3530:379::-;3894:10;3718:191::o;3916:222::-;6583:42;6572:54;;;;1087:37;;4043:2;4028:18;;4014:124::o;4145:406::-;;4340:2;;4329:9;4325:18;4340:2;4361:17;4354:47;4415:126;1383:5;5609:12;6042:6;6037:3;6030:19;6070:14;4329:9;6070:14;1395:102;;6070:14;4340:2;1554:6;1550:17;4329:9;1541:27;;1529:39;;4340:2;1648:5;5454:14;-1:-1;1687:357;1712:6;1709:1;1706:13;1687:357;;;1764:20;4329:9;1768:4;1764:20;;1759:3;1752:33;1819:6;1813:13;2223:5;5609:12;6042:6;6037:3;6030:19;2306:52;2351:6;4340:2;6074:3;6070:14;4340:2;2332:5;2328:16;2306:52;:::i;:::-;7291:2;7271:14;7287:7;7267:28;2370:39;;;;;;;-1:-1;2023:14;;;;5876;;;;1734:1;1727:9;1687:357;;;-1:-1;4407:134;;4311:240;-1:-1;;;;;;;4311:240::o;4817:506::-;;;4952:11;4939:25;5003:48;5027:8;5011:14;5007:29;5003:48;4983:18;4979:73;4969:2;;-1:-1;;5056:12;4969:2;5083:33;;5137:18;;;-1:-1;5175:18;5164:30;;5161:2;;;-1:-1;;5197:12;5161:2;5042:4;5225:13;;-1:-1;5011:14;5257:38;;;5247:49;;5244:2;;;5309:1;;5299:12;5244:2;4907:416;;;;;:::o;6927:268::-;6992:1;6999:101;7013:6;7010:1;7007:13;6999:101;;;7080:11;;;7074:18;7061:11;;;7054:39;7035:2;7028:10;6999:101;;;7115:6;7112:1;7109:13;7106:2;;;6992:1;7171:6;7166:3;7162:16;7155:27;7106:2;;6976:219;;;:::o"},"methodIdentifiers":{"getLibrary()":"7678922e","getVault()":"8d928af8","multicall(bytes[])":"ac9650d8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"libraryAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"Relayers are composed of two contracts: - This contract, which acts as a single point of entry into the system through a multicall function. - A library contract, which defines the allowed behaviour of the relayer. The relayer entrypoint can then repeatedly delegatecall into the library's code to perform actions. We can then run combinations of the library contract's functions in the context of the relayer entrypoint, without having to expose all these functions on the entrypoint contract itself. The multicall function is then a single point of entry for all actions, so we can easily prevent reentrancy. This design gives much stronger reentrancy guarantees, as otherwise a malicious contract could reenter the relayer through another function (which must allow reentrancy for multicall logic), and that would potentially allow them to manipulate global state, resulting in loss of funds in some cases: e.g., sweeping any leftover ETH that should have been refunded to the user. NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault will reject calls from outside the context of the entrypoint: e.g., if a user mistakenly called directly into the library contract.\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"This contract is not meant to be deployed directly by an EOA, but rather during construction of a contract derived from `BaseRelayerLibrary`, which will provide its own address as the relayer's library.\"}},\"title\":\"Balancer Relayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows safe multicall execution of a relayer's functions\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/BalancerRelayer.sol\":\"BalancerRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]}},\"version\":1}"}},"contracts/relayer/BaseRelayerLibrary.sol":{"BaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e05234801561003557600080fd5b506040516114633803806114638339810160408190526100549161013b565b806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561008d57600080fd5b505afa1580156100a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c5919061013b565b6001600160601b0319606091821b81166080529082901b1660a052604051819030906100f09061012e565b6100fb92919061015e565b604051809103906000f080158015610117573d6000803e3d6000fd5b5060601b6001600160601b03191660c05250610190565b61078780610cdc83390190565b60006020828403121561014c578081fd5b815161015781610178565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461018d57600080fd5b50565b60805160601c60a05160601c60c05160601c60e051610b0e6101ce600039806106e652508061010352508061027c52806102ac525050610b0e6000f3fe60806040526004361061005a5760003560e01c80638d928af8116100435780638d928af81461009f578063b6d24737146100b4578063f3cab685146100d45761005a565b80637fd0e5d51461005f57806380db15bd1461008a575b600080fd5b34801561006b57600080fd5b50610074610101565b6040516100819190610a47565b60405180910390f35b61009d61009836600461082c565b610125565b005b3480156100ab57600080fd5b506100746102aa565b3480156100c057600080fd5b5061009d6100cf3660046108d5565b6102ce565b3480156100e057600080fd5b506100f46100ef366004610900565b610315565b6040516100819190610a9f565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610147575082155b610186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017d90610a68565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016101a5939291906109a0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251610232928691869101610975565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506102a273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682610327565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102d7816103ae565b156102e8576102e5816103f5565b90505b6103116102f36102aa565b73ffffffffffffffffffffffffffffffffffffffff84169083610420565b5050565b60006103208261059c565b9392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103529190610969565b6000604051808303816000865af19150503d806000811461038f576040519150601f19603f3d011682016040523d82523d6000602084013e610394565b606091505b50915091506103a382826105b3565b925050505b92915050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60008060006104038461059c565b91509150610410846105dd565b1561032057600082559392505050565b80158015906104d157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061047e90309086906004016109d1565b60206040518083038186803b15801561049657600080fd5b505afa1580156104aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ce9190610918565b15155b15610578576105788363095ea7b360e01b8460006040516024016104f69291906109f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610624565b6105978363095ea7b360e01b84846040516024016104f6929190610a21565b505050565b6000806105a8836106d7565b915081549050915091565b606082156105c25750806103a8565b8151156105d25781518083602001fd5b6103a86101ae610753565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161064d9190610969565b6000604051808303816000865af19150503d806000811461068a576040519150601f19603f3d011682016040523d82523d6000602084013e61068f565b606091505b509150915060008214156106a7573d6000803e3d6000fd5b6106d18151600014806106c95750818060200190518101906106c991906108b9565b6101a2610780565b50505050565b600060016106e48361078e565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001610716929190610992565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101200392915050565b61077d817f42414c00000000000000000000000000000000000000000000000000000000006107b1565b50565b816103115761031181610753565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610841578384fd5b843561084c81610aa8565b9350602085013561085c81610aca565b9250604085013567ffffffffffffffff80821115610878578384fd5b818701915087601f83011261088b578384fd5b813581811115610899578485fd5b8860208285010111156108aa578485fd5b95989497505060200194505050565b6000602082840312156108ca578081fd5b815161032081610aca565b600080604083850312156108e7578182fd5b82356108f281610aa8565b946020939093013593505050565b600060208284031215610911578081fd5b5035919050565b600060208284031215610929578081fd5b5051919050565b60008151815b818110156109505760208185018101518683015201610936565b8181111561095e5782828601525b509290920192915050565b60006103208284610930565b60006109818286610930565b838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461077d57600080fd5b801515811461077d57600080fdfea2646970667358221220bce469dc9af036d41cea81c0c151a7c4497e0e2089c306d0737dbef9e94d03cf64736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220ae2986d189807b7f562b5667a0dc32043a64b5fc57d1cf73ab6628ca3f8dd6a864736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1463 CODESIZE SUB DUP1 PUSH2 0x1463 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x54 SWAP2 PUSH2 0x13B JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC5 SWAP2 SWAP1 PUSH2 0x13B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH2 0xF0 SWAP1 PUSH2 0x12E JUMP JUMPDEST PUSH2 0xFB SWAP3 SWAP2 SWAP1 PUSH2 0x15E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x117 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE POP PUSH2 0x190 JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH2 0xCDC DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x157 DUP2 PUSH2 0x178 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0xB0E PUSH2 0x1CE PUSH1 0x0 CODECOPY DUP1 PUSH2 0x6E6 MSTORE POP DUP1 PUSH2 0x103 MSTORE POP DUP1 PUSH2 0x27C MSTORE DUP1 PUSH2 0x2AC MSTORE POP POP PUSH2 0xB0E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0xD4 JUMPI PUSH2 0x5A JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x101 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x82C JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x2AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x8D5 JUMP JUMPDEST PUSH2 0x2CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x900 JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA9F JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x147 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17D SWAP1 PUSH2 0xA68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x232 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x975 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x2A2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x327 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2D7 DUP2 PUSH2 0x3AE JUMP JUMPDEST ISZERO PUSH2 0x2E8 JUMPI PUSH2 0x2E5 DUP2 PUSH2 0x3F5 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x311 PUSH2 0x2F3 PUSH2 0x2AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x420 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x320 DUP3 PUSH2 0x59C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x352 SWAP2 SWAP1 PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x38F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x394 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3A3 DUP3 DUP3 PUSH2 0x5B3 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x403 DUP5 PUSH2 0x59C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x410 DUP5 PUSH2 0x5DD JUMP JUMPDEST ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4D1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x47E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0x918 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x578 JUMPI PUSH2 0x578 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4F6 SWAP3 SWAP2 SWAP1 PUSH2 0x9F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x624 JUMP JUMPDEST PUSH2 0x597 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4F6 SWAP3 SWAP2 SWAP1 PUSH2 0xA21 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5A8 DUP4 PUSH2 0x6D7 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5C2 JUMPI POP DUP1 PUSH2 0x3A8 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5D2 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3A8 PUSH2 0x1AE PUSH2 0x753 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x64D SWAP2 SWAP1 PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x68A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x68F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x6A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6D1 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x6C9 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x780 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x6E4 DUP4 PUSH2 0x78E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x716 SWAP3 SWAP2 SWAP1 PUSH2 0x992 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x77D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7B1 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x311 JUMPI PUSH2 0x311 DUP2 PUSH2 0x753 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x841 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x84C DUP2 PUSH2 0xAA8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x85C DUP2 PUSH2 0xACA JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x878 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x88B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x899 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x8AA JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8CA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x320 DUP2 PUSH2 0xACA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8E7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x8F2 DUP2 PUSH2 0xAA8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x911 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x929 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x950 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x936 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x95E JUMPI DUP3 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x320 DUP3 DUP5 PUSH2 0x930 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x981 DUP3 DUP7 PUSH2 0x930 JUMP JUMPDEST DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xE4 PUSH10 0xDC9AF036D41CEA81C0C1 MLOAD 0xA7 0xC4 0x49 PUSH31 0xE2089C306D0737DBEF9E94D03CF64736F6C6343000701003360C060405234 DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0x29 DUP7 0xD1 DUP10 DUP1 PUSH28 0x7F562B5667A0DC32043A64B5FC57D1CF73AB6628CA3F8DD6A864736F PUSH13 0x63430007010033000000000000 ","sourceMap":"1865:6968:82:-:0;;;7822:42;7773:91;;2076:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2122:5;-1:-1:-1;;;;;2122:10:82;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:71;;;;;;;;2146:14:82;;;;;::::1;::::0;2184:41:::1;::::0;2155:5;;2219:4:::1;::::0;2184:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2170:55:82::1;::::0;-1:-1:-1;;;;;;2170:55:82;::::1;::::0;-1:-1:-1;1865:6968:82;;;;;;;;;;:::o;345:293:-1:-;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1226:363::-;-1:-1;;;;;1981:54;;;1149:65;;1981:54;;1575:2;1560:18;;1014:37;1396:2;1381:18;;1367:222::o;2335:147::-;-1:-1;;;;;1981:54;;2409:50;;2399:2;;2473:1;;2463:12;2399:2;2393:89;:::o;:::-;1865:6968:82;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11191":[{"length":32,"start":636},{"length":32,"start":684}],"11193":[{"length":32,"start":259}],"11561":[{"length":32,"start":1766}]},"linkReferences":{},"object":"60806040526004361061005a5760003560e01c80638d928af8116100435780638d928af81461009f578063b6d24737146100b4578063f3cab685146100d45761005a565b80637fd0e5d51461005f57806380db15bd1461008a575b600080fd5b34801561006b57600080fd5b50610074610101565b6040516100819190610a47565b60405180910390f35b61009d61009836600461082c565b610125565b005b3480156100ab57600080fd5b506100746102aa565b3480156100c057600080fd5b5061009d6100cf3660046108d5565b6102ce565b3480156100e057600080fd5b506100f46100ef366004610900565b610315565b6040516100819190610a9f565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610147575082155b610186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017d90610a68565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016101a5939291906109a0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009095169490941790935251610232928691869101610975565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290506102a273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001682610327565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6102d7816103ae565b156102e8576102e5816103f5565b90505b6103116102f36102aa565b73ffffffffffffffffffffffffffffffffffffffff84169083610420565b5050565b60006103208261059c565b9392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516103529190610969565b6000604051808303816000865af19150503d806000811461038f576040519150601f19603f3d011682016040523d82523d6000602084013e610394565b606091505b50915091506103a382826105b3565b925050505b92915050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b60008060006104038461059c565b91509150610410846105dd565b1561032057600082559392505050565b80158015906104d157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e9061047e90309086906004016109d1565b60206040518083038186803b15801561049657600080fd5b505afa1580156104aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ce9190610918565b15155b15610578576105788363095ea7b360e01b8460006040516024016104f69291906109f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610624565b6105978363095ea7b360e01b84846040516024016104f6929190610a21565b505050565b6000806105a8836106d7565b915081549050915091565b606082156105c25750806103a8565b8151156105d25781518083602001fd5b6103a86101ae610753565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161064d9190610969565b6000604051808303816000865af19150503d806000811461068a576040519150601f19603f3d011682016040523d82523d6000602084013e61068f565b606091505b509150915060008214156106a7573d6000803e3d6000fd5b6106d18151600014806106c95750818060200190518101906106c991906108b9565b6101a2610780565b50505050565b600060016106e48361078e565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001610716929190610992565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905280516020909101200392915050565b61077d817f42414c00000000000000000000000000000000000000000000000000000000006107b1565b50565b816103115761031181610753565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610841578384fd5b843561084c81610aa8565b9350602085013561085c81610aca565b9250604085013567ffffffffffffffff80821115610878578384fd5b818701915087601f83011261088b578384fd5b813581811115610899578485fd5b8860208285010111156108aa578485fd5b95989497505060200194505050565b6000602082840312156108ca578081fd5b815161032081610aca565b600080604083850312156108e7578182fd5b82356108f281610aa8565b946020939093013593505050565b600060208284031215610911578081fd5b5035919050565b600060208284031215610929578081fd5b5051919050565b60008151815b818110156109505760208185018101518683015201610936565b8181111561095e5782828601525b509290920192915050565b60006103208284610930565b60006109818286610930565b838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461077d57600080fd5b801515811461077d57600080fdfea2646970667358221220bce469dc9af036d41cea81c0c151a7c4497e0e2089c306d0737dbef9e94d03cf64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x9F JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0xB4 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0xD4 JUMPI PUSH2 0x5A JUMP JUMPDEST DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x5F JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x8A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x101 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA47 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x9D PUSH2 0x98 CALLDATASIZE PUSH1 0x4 PUSH2 0x82C JUMP JUMPDEST PUSH2 0x125 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x74 PUSH2 0x2AA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0x8D5 JUMP JUMPDEST PUSH2 0x2CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0x900 JUMP JUMPDEST PUSH2 0x315 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x81 SWAP2 SWAP1 PUSH2 0xA9F JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x147 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x186 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x17D SWAP1 PUSH2 0xA68 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x1A5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x232 SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x975 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x2A2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x327 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2D7 DUP2 PUSH2 0x3AE JUMP JUMPDEST ISZERO PUSH2 0x2E8 JUMPI PUSH2 0x2E5 DUP2 PUSH2 0x3F5 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x311 PUSH2 0x2F3 PUSH2 0x2AA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x420 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x320 DUP3 PUSH2 0x59C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x352 SWAP2 SWAP1 PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x38F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x394 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3A3 DUP3 DUP3 PUSH2 0x5B3 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x403 DUP5 PUSH2 0x59C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x410 DUP5 PUSH2 0x5DD JUMP JUMPDEST ISZERO PUSH2 0x320 JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x4D1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x47E SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x496 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4CE SWAP2 SWAP1 PUSH2 0x918 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x578 JUMPI PUSH2 0x578 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4F6 SWAP3 SWAP2 SWAP1 PUSH2 0x9F8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x624 JUMP JUMPDEST PUSH2 0x597 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x4F6 SWAP3 SWAP2 SWAP1 PUSH2 0xA21 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5A8 DUP4 PUSH2 0x6D7 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x5C2 JUMPI POP DUP1 PUSH2 0x3A8 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x5D2 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x3A8 PUSH2 0x1AE PUSH2 0x753 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x64D SWAP2 SWAP1 PUSH2 0x969 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x68A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x68F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x6A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x6D1 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x6C9 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6C9 SWAP2 SWAP1 PUSH2 0x8B9 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x780 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x6E4 DUP4 PUSH2 0x78E JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x716 SWAP3 SWAP2 SWAP1 PUSH2 0x992 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x77D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x7B1 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x311 JUMPI PUSH2 0x311 DUP2 PUSH2 0x753 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x841 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x84C DUP2 PUSH2 0xAA8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x85C DUP2 PUSH2 0xACA JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x878 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x88B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x899 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x8AA JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8CA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x320 DUP2 PUSH2 0xACA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x8E7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x8F2 DUP2 PUSH2 0xAA8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x911 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x929 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x950 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x936 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x95E JUMPI DUP3 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x320 DUP3 DUP5 PUSH2 0x930 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x981 DUP3 DUP7 PUSH2 0x930 JUMP JUMPDEST DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC 0xE4 PUSH10 0xDC9AF036D41CEA81C0C1 MLOAD 0xA7 0xC4 0x49 PUSH31 0xE2089C306D0737DBEF9E94D03CF64736F6C63430007010033000000000000 ","sourceMap":"1865:6968:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2332:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2545:466;;;;;;:::i;:::-;;:::i;:::-;;2238:88;;;;;;;;;;;;;:::i;3189:277::-;;;;;;;;;;-1:-1:-1;3189:277:82;;;;;:::i;:::-;;:::i;3641:153::-;;;;;;;;;;-1:-1:-1;3641:153:82;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2332:99::-;2413:11;2332:99;:::o;2545:466::-;2700:24;;;2719:4;2700:24;;:37;;;2729:8;2728:9;2700:37;2692:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2783:17;2856:34;;;2892:10;2904:7;2913:8;2833:89;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:156;;;2936:13;;;;2803:156;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;2970:34:82;:28;2978:6;2970:28;2803:156;2970:28;:34::i;:::-;;2545:466;;;;;:::o;2238:88::-;2313:6;2238:88;:::o;3189:277::-;3271:27;3291:6;3271:19;:27::i;:::-;3267:100;;;3323:33;3349:6;3323:25;:33::i;:::-;3314:42;;3267:100;3413:46;3439:10;:8;:10::i;:::-;3413:17;;;;3452:6;3413:17;:46::i;:::-;3189:277;;:::o;3641:153::-;3719:13;3756:31;3783:3;3756:26;:31::i;:::-;3744:43;3641:153;-1:-1:-1;;;3641:153:82:o;3494:278:59:-;3569:12;3653;3667:23;3694:6;:11;;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;4912:358:82:-;5114:66;5105:75;5197:66;5104:159;;4912:358::o;6742:375::-;6817:7;6837:12;6851:13;6868:31;6895:3;6868:26;:31::i;:::-;6836:63;;;;6914:33;6943:3;6914:28;:33::i;:::-;6910:179;;;7063:1;7057:4;7050:15;7105:5;6742:375;-1:-1:-1;;;6742:375:82:o;1001:507:67:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:67;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;7311:404:82:-;7382:12;7396:13;7428:20;7444:3;7428:15;:20::i;:::-;7421:27;;7694:4;7688:11;7679:20;;7665:44;;;:::o;5057:714:59:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:59;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12033:3:19;5703:7:59;:37::i;5387:505:82:-;5736:66;5727:75;5819:66;5726:159;;5387:505::o;2324:914:67:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11301:3:19;3134:8:67;:97::i;:::-;2324:914;;;;:::o;7871:595:82:-;7931:7;8457:1;8402:27;8425:3;8402:22;:27::i;:::-;8431:20;8385:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;8375:78;;8385:67;8375:78;;;;8367:91;;7871:595;-1:-1:-1;;7871:595:82:o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;926:101::-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;8657:174:82:-;8757:66;8751:72;;8657:174::o;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1211:609:-1;;;;;1365:2;1353:9;1344:7;1340:23;1336:32;1333:2;;;-1:-1;;1371:12;1333:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1423:63;-1:-1;1523:2;1559:22;;206:20;231:30;206:20;231:30;:::i;:::-;1531:60;-1:-1;1656:2;1641:18;;1628:32;1680:18;1669:30;;;1666:2;;;-1:-1;;1702:12;1666:2;1787:6;1776:9;1772:22;;;536:3;529:4;521:6;517:17;513:27;503:2;;-1:-1;;544:12;503:2;587:6;574:20;1680:18;606:6;603:30;600:2;;;-1:-1;;636:12;600:2;731:3;1523:2;711:17;672:6;697:32;;694:41;691:2;;;-1:-1;;738:12;691:2;1327:493;;;;-1:-1;;1523:2;668:17;;-1:-1;;;1327:493::o;1827:257::-;;1939:2;1927:9;1918:7;1914:23;1910:32;1907:2;;;-1:-1;;1945:12;1907:2;354:6;348:13;366:30;390:5;366:30;:::i;2091:396::-;;;2227:2;2215:9;2206:7;2202:23;2198:32;2195:2;;;-1:-1;;2233:12;2195:2;861:6;848:20;873:48;915:5;873:48;:::i;:::-;2285:78;2400:2;2439:22;;;;1000:20;;-1:-1;;;2189:298::o;2494:241::-;;2598:2;2586:9;2577:7;2573:23;2569:32;2566:2;;;-1:-1;;2604:12;2566:2;-1:-1;1000:20;;2560:175;-1:-1;2560:175::o;2742:263::-;;2857:2;2845:9;2836:7;2832:23;2828:32;2825:2;;;-1:-1;;2863:12;2825:2;-1:-1;1148:13;;2819:186;-1:-1;2819:186::o;3887:356::-;;4047:5;9272:12;-1:-1;11373:101;11387:6;11384:1;11381:13;11373:101;;;4191:4;11454:11;;;;;11448:18;11435:11;;;11428:39;11402:10;11373:101;;;11489:6;11486:1;11483:13;11480:2;;;-1:-1;11545:6;11540:3;11536:16;11529:27;11480:2;-1:-1;4222:16;;;;;3995:248;-1:-1;;3995:248::o;5360:271::-;;5513:93;5602:3;5593:6;5513:93;:::i;5638:448::-;;5847:93;5936:3;5927:6;5847:93;:::i;:::-;11228:6;11223:3;11218;11205:30;11266:16;;;11259:27;;;-1:-1;11266:16;5828:258;-1:-1;;5828:258::o;6093:392::-;3476:58;;;6346:2;6337:12;;3476:58;6448:12;;;6237:248::o;6492:464::-;10199:42;10188:54;;;3099:45;;10188:54;;;;6865:2;6850:18;;3099:45;9908:13;;9901:21;6942:2;6927:18;;3341:34;6685:2;6670:18;;6656:300::o;6963:333::-;10199:42;10188:54;;;3099:45;;10188:54;;7282:2;7267:18;;3099:45;7118:2;7103:18;;7089:207::o;7303:345::-;10199:42;10188:54;;;;3099:45;;10404:4;10393:16;7634:2;7619:18;;4673:56;7464:2;7449:18;;7435:213::o;7655:333::-;10199:42;10188:54;;;;3099:45;;7974:2;7959:18;;3476:58;7810:2;7795:18;;7781:207::o;7995:272::-;10199:42;10188:54;;;;4346:75;;8147:2;8132:18;;8118:149::o;8533:416::-;8733:2;8747:47;;;4966:2;8718:18;;;9570:19;5002:33;9610:14;;;4982:54;5055:12;;;8704:245::o;8956:222::-;3476:58;;;9083:2;9068:18;;9054:124::o;11739:117::-;10199:42;11826:5;10188:54;11801:5;11798:35;11788:2;;11847:1;;11837:12;11863:111;11944:5;9908:13;9901:21;11922:5;11919:32;11909:2;;11965:1;;11955:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","setRelayerApproval(address,bool,bytes)":"80db15bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Relayers are composed of two contracts: - A `BalancerRelayer` contract, which acts as a single point of entry into the system through a multicall function - A library contract such as this one, which defines the allowed behaviour of the relayer NOTE: Only the entrypoint contract should be allowlisted by Balancer governance as a relayer, so that the Vault will reject calls from outside the entrypoint context. This contract should neither be allowlisted as a relayer, nor called directly by the user. No guarantees can be made about fund safety when calling this contract in an improper manner.\",\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"}},\"title\":\"Base Relayer Library\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"notice\":\"Core functionality of a relayer. Allow users to use a signature to approve this contract to take further actions on their behalf.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/BaseRelayerLibrary.sol\":\"BaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x8ff74ec1bf461e1a4b51ffbce56660a132fa764402cf2072166a16b20b351139\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e5428b6ec3f59b6537f81af5ce78a15ae5b680623a6c93cefd662a49048cb22\",\"dweb:/ipfs/QmRt2owUCTKjNoDYZhMNXX9AahWzFiMshSBjrroa5orrku\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/ERC4626Wrapping.sol":{"ERC4626Wrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ERC4626Wrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap ERC4626 tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/ERC4626Wrapping.sol\":\"ERC4626Wrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0x2c9be572de93bb1423664fe1870107606cc79956f7ed7bbfacedd6f5de590622\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b27218a9d66b8ffafa0df237e0d0504b60e9dcb025ce8ca86e5a8b9b1576c3b2\",\"dweb:/ipfs/QmNdgJmK69oP2BKseMuvk6fwS8yH9Po6T4z4aAfkMmCsEh\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/GaugeActions.sol":{"GaugeActions":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The zero address may be passed as balancerMinter to safely disable features which only exist on mainnet\"}},\"title\":\"GaugeActions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/GaugeActions.sol\":\"GaugeActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x5607c45e92f3c83411e576606a12fe46337013d142b7fb2cf4004b0d5cdbaadd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0df6e9a428d7b6cf7b2c4904141c1bf9bd13db655b5b5680bbe60a1daad55a75\",\"dweb:/ipfs/QmTZxPqfj7PZmX4n77b2i6WEz5Qri1fQy1WHjKa8XQg6b2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0x610350d55cff64fb001b59013903c5e47d16ed629868b7ba64a3f6418ea50bed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d89d3266385eccbd5fe83308aa1d049f58925712d2c5db464fcba87ceefc2a2\",\"dweb:/ipfs/Qmf6xpaWwQxbghyEAXK87bJMXFngX9SxijMtVMo71VZebW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x4371694195d18a899a5b2b5a76f15ef1c2cc5f5c865666d98e0888c40c8a43f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cee60f74e9cfb02a043fa6076a26eafd1c332744037cb8cbc2567086ee6d9d6\",\"dweb:/ipfs/Qmedh1b7WYcJekSQ2jkbhqb1nTgwJwcLw1wjfqoD1zyumo\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0xe609e605e5f3c49c924616d784b22bf4196cd64a0a4c43bcb54dd2122b31007a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://710645c2177d2ab22e5c58bd7238305b9761c13ac99b920106aa05bed9ecbd24\",\"dweb:/ipfs/QmP5ykTt1iyFEn3GfzZsvAZjs1B7Kfhk9g3mdfpRsgCWVX\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/IBaseRelayerLibrary.sol":{"IBaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"IBaseRelayerLibrary\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/IBaseRelayerLibrary.sol\":\"IBaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]}},\"version\":1}"}},"contracts/relayer/LidoWrapping.sol":{"LidoWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","wrapStETH(address,address,uint256,uint256)":"1c982441"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"The zero address may be passed as wstETH to safely disable this module\",\"params\":{\"wstETH\":\"- the address of Lido's wrapped stETH contract\"}}},\"title\":\"LidoWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap stETH\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/LidoWrapping.sol\":\"LidoWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xb3b3b982b65b19e0d9376ff4810af31cbb8616ca76072690f77c24b1b5793cfb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6eab2ca2c4bf9e8f3b6d002356d5e9848cab4956553e6102714e4215dcdbc884\",\"dweb:/ipfs/QmcTgkP8zpEi8DL3eSh7xXcgdoBppMH3YyuHjTX1fkdJd3\"]}},\"version\":1}"}},"contracts/relayer/ReaperWrapping.sol":{"ReaperWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so that it can be called as part of a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"ReaperWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap Reapers's rfTokens into their underlying main tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/ReaperWrapping.sol\":\"ReaperWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0xc38380673ab9eb3ba1a8fd67dadeba91b556d42bb2ba9703824b6066260b2292\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://72b3003a77268ba6ebe9a95127bc0f8f5df5260460c79d2730caf938e45c152d\",\"dweb:/ipfs/QmRzcmDborCULffVqWmtExwm8zy1abTfceMqA8LqEZmapP\"]}},\"version\":1}"}},"contracts/relayer/UnbuttonWrapping.sol":{"UnbuttonWrapping":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"@aalavandhan1984 (eng@fragments.org)\",\"details\":\"All functions must be payable so that it can be called as part of a multicall involving ETH. The rebasing token to be wrapped is called the \\\"underlying\\\" token. The wrapped non-rebasing token is called the \\\"wrapped\\\" token. Learn more: https://github.com/buttonwood-protocol/button-wrappers/blob/main/contracts/UnbuttonToken.sol\",\"kind\":\"dev\",\"methods\":{\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"title\":\"UnbuttonWrapping\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to wrap and unwrap any rebasing elastic balance token into a a non-rebasing static balance version using the Unbutton wrapper.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/UnbuttonWrapping.sol\":\"UnbuttonWrapping\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x0a5c4336f30926d6ff071b35c7ba85299d5d809567936e826bb95b6f647532a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1230d3df30cece5c8d9aa0ac59e920167be7c9a185f54d8037d754dccb7d64a\",\"dweb:/ipfs/QmcHnnRdhrdMAbFY8WgW3wpWxoULBrP6mw4TsR7E6k3bMq\"]}},\"version\":1}"}},"contracts/relayer/VaultActions.sol":{"VaultActions":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256)":"ecc02637","peekChainedReferenceValue(uint256)":"f3cab685","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Since the relayer is not expected to hold user funds, we expect the user to be the recipient of any token transfers from the Vault. All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VaultActions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to call the core functions on the Balancer Vault (swaps/joins/exits/user balance management)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultActions.sol\":\"VaultActions\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x777d58a20e0e7f71eea9dc59f936f78528c02037a47076ad0747a6cb15e2e42b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://837ae5259458637d2dcb23b1f0d7bda936a50745cb36a1d4211f2dc50f3caaaf\",\"dweb:/ipfs/QmaS4wwWtbZVkG8bVqSWRHn47MPfnRHL8eUfd8Z8FchAYC\"]}},\"version\":1}"}},"contracts/relayer/VaultPermit.sol":{"VaultPermit":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","getVault()":"8d928af8","peekChainedReferenceValue(uint256)":"f3cab685","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"All functions must be payable so they can be called from a multicall involving ETH\",\"kind\":\"dev\",\"methods\":{},\"title\":\"VaultPermit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Allows users to use permit (where supported) to approve the Balancer Vault to use their tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/VaultPermit.sol\":\"VaultPermit\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]}},\"version\":1}"}},"contracts/relayer/special/DoubleEntrypointFixRelayer.sol":{"DoubleEntrypointFixRelayer":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BTC_STABLE_POOL_ADDRESS","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BTC_STABLE_POOL_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_IMPLEMENTATION","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_WEIGHTED_POOL_ADDRESS","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SNX_WEIGHTED_POOL_ID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exitBTCStablePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exitSNXWeightedPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"receiveFlashLoan","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sBTC_IMPLEMENTATION","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20[]","name":"tokens","type":"address[]"}],"name":"sweepDoubleEntrypointToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepSNXsBTC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wBTC","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b5060405162001b7e38038062001b7e8339810160408190526200003491620000dd565b806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b031663d2946c2b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200008b57600080fd5b505afa158015620000a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c69190620000dd565b60601b6001600160601b03191660a052506200011c565b600060208284031215620000ef578081fd5b8151620000fc8162000103565b9392505050565b6001600160a01b03811681146200011957600080fd5b50565b60805160601c60a05160601c611a15620001696000398061077c5280610ccf52806110e252508061025c528061033c5280610a505280610f595280610f8652806111135250611a156000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80639b452931116100b2578063e043f56f11610081578063e8d6101e11610066578063e8d6101e146101c0578063f04f2707146101c8578063fd6ea58d146101db5761011b565b8063e043f56f146101b0578063e4231540146101b85761011b565b80639b45293114610190578063a2abb55f14610198578063ad5c4648146101a0578063cbc87782146101a85761011b565b80635fbc1031116100ee5780635fbc10311461017057806369af9c7e146101785780636ad3aaa4146101805780638d928af8146101885761011b565b80630306ae12146101205780630a5e13dc146101355780635dc80bd0146101535780635f5fb03614610168575b600080fd5b61013361012e3660046114a3565b6101e3565b005b61013d6103ab565b60405161014a9190611714565b60405180910390f35b61015b6103c3565b60405161014a91906117a7565b6101336103e7565b61013d6105ad565b6101336105c5565b61013d610a36565b61013d610a4e565b61013d610a72565b61013d610a8a565b61013d610aa2565b610133610aba565b61013d610eea565b61015b610f02565b61013d610f26565b6101336101d63660046114de565b610f3e565b61013d610ffa565b6060815167ffffffffffffffff811180156101fd57600080fd5b50604051908082528060200260200182016040528015610227578160200160208202803683370190505b5090508160008151811061023757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102979190611714565b60206040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611611565b816000815181106102f457fe5b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610375903090869086906004016118aa565b600060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050505050565b73072f14b85add63488ddad88f855fda4a99d6ac9b81565b7f072f14b85add63488ddad88f855fda4a99d6ac9b00020000000000000000002781565b604080516002808252606080830184529260208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061042957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160018151811061048557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506104c8816101e3565b60408051600280825260608083018452926020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d68160008151811061050a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc68160018151811061056657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506105a9816101e3565b5050565b73eb4c2781e4eba804ce9a9803c67d0893436bb27d81565b604080516002808252606080830184529260208301908036833701905050905073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160008151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061066357fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073072f14b85add63488ddad88f855fda4a99d6ac9b906370a08231906106db903390600401611714565b60206040518083038186803b1580156106f357600080fd5b505afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611611565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529091506107f99073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f9081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b60206040518083038186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611611565b611012565b606060018260405160200161080f92919061192d565b604051602081830303815290604052905061082861137f565b604051806080016040528061083c86611173565b8152602001855167ffffffffffffffff8111801561085957600080fd5b50604051908082528060200260200182016040528015610883578160200160208202803683370190505b508152602081018490526000604090910152905061089f610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610919907f072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027903390819087906004016117b0565b600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50506040805160028082526060808301845294509092509060208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061099057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f816001815181106109ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a2f816101e3565b5050505050565b7318fcc34bdeaaf9e3b69d2500343527c0c995b1d681565b7f000000000000000000000000000000000000000000000000000000000000000090565b732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b73639032d3900875a4cf4960ad6b9ee441657aa93c81565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60408051600380825260808201909252606091602082018380368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600081518110610afe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073eb4c2781e4eba804ce9a9803c67d0893436bb27d81600181518110610b5a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681600281518110610bb657fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073feadd389a5c427952d8fdb8057d6c8ba1156cc56906370a0823190610c2e903390600401611714565b60206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611611565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909150610cf79073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc69081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b6060600182604051602001610d0d929190611945565b6040516020818303038152906040529050610d2661137f565b6040518060800160405280610d3a86611173565b8152602001855167ffffffffffffffff81118015610d5757600080fd5b50604051908082528060200260200182016040528015610d81578160200160208202803683370190505b5081526020810184905260006040909101529050610d9d610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610e17907ffeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066903390819087906004016117b0565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b5050604080516002808252606080830184529450909250906020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d681600081518110610e8e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc6816001815181106109ec57fe5b73fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681565b7ffeadd389a5c427952d8fdb8057d6c8ba1156cc5600000000000000000000006681565b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f81565b610f813373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161460cd611176565b610ff47f000000000000000000000000000000000000000000000000000000000000000084600081518110610fb257fe5b602002602001015186600081518110610fc757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166111849092919063ffffffff16565b50505050565b73feadd389a5c427952d8fdb8057d6c8ba1156cc5681565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061104257fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061109a57fe5b60209081029190910101526040517f6daefab600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636daefab69061113b90859085907f00000000000000000000000000000000000000000000000000000000000000009060040161175b565b600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b5050505050505050565b90565b816105a9576105a98161122a565b6112258363a9059cbb60e01b84846040516024016111a3929190611735565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611257565b505050565b611254817f42414c0000000000000000000000000000000000000000000000000000000000611304565b50565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161128091906116f8565b6000604051808303816000865af19150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b509150915060008214156112da573d6000803e3d6000fd5b610ff48151600014806112fc5750818060200190518101906112fc91906115ea565b6101a2611176565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f8301126113b9578081fd5b81356113cc6113c78261197a565b611953565b8181529150602080830190848101818402860182018710156113ed57600080fd5b6000805b8581101561142e57823573ffffffffffffffffffffffffffffffffffffffff8116811461141c578283fd5b855293830193918301916001016113f1565b50505050505092915050565b600082601f83011261144a578081fd5b81356114586113c78261197a565b81815291506020808301908481018184028601820187101561147957600080fd5b60005b848110156114985781358452928201929082019060010161147c565b505050505092915050565b6000602082840312156114b4578081fd5b813567ffffffffffffffff8111156114ca578182fd5b6114d6848285016113a9565b949350505050565b600080600080608085870312156114f3578283fd5b843567ffffffffffffffff8082111561150a578485fd5b611516888389016113a9565b955060209150818701358181111561152c578586fd5b61153889828a0161143a565b95505060408701358181111561154c578485fd5b61155889828a0161143a565b94505060608701358181111561156c578384fd5b8701601f8101891361157c578384fd5b80358281111561158a578485fd5b6115ba847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611953565b925080835289848284010111156115cf578485fd5b80848301858501378201909201929092525092959194509250565b6000602082840312156115fb578081fd5b8151801515811461160a578182fd5b9392505050565b600060208284031215611622578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561166e57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161163c565b509495945050505050565b6000815180845260208085019450808401835b8381101561166e5781518752958201959082019060010161168c565b15159052565b600081518084526116c68160208601602086016119b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161170a8184602087016119b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006060825261176e6060830186611629565b82810360208401526117808186611679565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b90815260200190565b6000858252602073ffffffffffffffffffffffffffffffffffffffff8087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561182e57611818845161199a565b8252928401926001929092019190840190611806565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261186c8185611679565b935050506040850151818584030160c086015261188983826116ae565b92505050606084015161189f60e08501826116a8565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85168252608060208301526118d96080830185611629565b82810360408401526118eb8185611679565b8381036060909401939093525050600281527f307800000000000000000000000000000000000000000000000000000000000060208201526040019392505050565b604081016003841061193b57fe5b9281526020015290565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561197257600080fd5b604052919050565b600067ffffffffffffffff821115611990578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b838110156119ce5781810151838201526020016119b6565b83811115610ff4575050600091015256fea2646970667358221220451f53f4fa1f8d4d0a0bb505b746bdeffbea77139dbadeb966e33c7e1d01309d64736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1B7E CODESIZE SUB DUP1 PUSH3 0x1B7E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xDD JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD2946C2B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xA0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xC6 SWAP2 SWAP1 PUSH3 0xDD JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE POP PUSH3 0x11C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xEF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xFC DUP2 PUSH3 0x103 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x1A15 PUSH3 0x169 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x77C MSTORE DUP1 PUSH2 0xCCF MSTORE DUP1 PUSH2 0x10E2 MSTORE POP DUP1 PUSH2 0x25C MSTORE DUP1 PUSH2 0x33C MSTORE DUP1 PUSH2 0xA50 MSTORE DUP1 PUSH2 0xF59 MSTORE DUP1 PUSH2 0xF86 MSTORE DUP1 PUSH2 0x1113 MSTORE POP PUSH2 0x1A15 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9B452931 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE043F56F GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xE8D6101E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE8D6101E EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF04F2707 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFD6EA58D EQ PUSH2 0x1DB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xE043F56F EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE4231540 EQ PUSH2 0x1B8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x9B452931 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xA2ABB55F EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xCBC87782 EQ PUSH2 0x1A8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x5FBC1031 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x5FBC1031 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x69AF9C7E EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x6AD3AAA4 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x188 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x306AE12 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xA5E13DC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5DC80BD0 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x5F5FB036 EQ PUSH2 0x168 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x133 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x13D PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0xABA JUMP JUMPDEST PUSH2 0x13D PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x15B PUSH2 0xF02 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x14DE JUMP JUMPDEST PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xFFA JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x297 SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E7 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2F4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x5C38449E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x5C38449E SWAP1 PUSH2 0x375 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B DUP2 JUMP JUMPDEST PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x429 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x4C8 DUP2 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x5A9 DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x663 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x6DB SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72B SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x7F9 SWAP1 PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7F4 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80F SWAP3 SWAP2 SWAP1 PUSH2 0x192D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x828 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x83C DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0x89F PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0x919 SWAP1 PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x990 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0xA2F DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 JUMP JUMPDEST PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAFE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xB5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xBB6 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC2E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC7E SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0xCF7 SWAP1 PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0D SWAP3 SWAP2 SWAP1 PUSH2 0x1945 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xD26 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xD3A DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD81 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0xD9D PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0xE17 SWAP1 PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 JUMP JUMPDEST PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 DUP2 JUMP JUMPDEST PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 JUMP JUMPDEST PUSH2 0xF81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH1 0xCD PUSH2 0x1176 JUMP JUMPDEST PUSH2 0xFF4 PUSH32 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFC7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1184 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x109A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x6DAEFAB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6DAEFAB6 SWAP1 PUSH2 0x113B SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x175B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5A9 JUMPI PUSH2 0x5A9 DUP2 PUSH2 0x122A JUMP JUMPDEST PUSH2 0x1225 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11A3 SWAP3 SWAP2 SWAP1 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1304 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1280 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF4 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12FC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x15EA JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CC PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x1953 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x142E JUMPI DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x141C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x13F1 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1458 PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1498 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x14D6 DUP5 DUP3 DUP6 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14F3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1516 DUP9 DUP4 DUP10 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 SWAP2 POP DUP2 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x152C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1538 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x154C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1558 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x156C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 ADD PUSH1 0x1F DUP2 ADD DUP10 SGT PUSH2 0x157C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x158A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x15BA DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1953 JUMP JUMPDEST SWAP3 POP DUP1 DUP4 MSTORE DUP10 DUP5 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x15CF JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP4 ADD DUP6 DUP6 ADD CALLDATACOPY DUP3 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x160A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1622 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x163C JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x16C6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x170A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19B3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x176E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1780 DUP2 DUP7 PUSH2 0x1679 JUMP JUMPDEST SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP3 DUP6 ADD MSTORE DUP1 DUP7 AND PUSH1 0x40 DUP6 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP5 MLOAD PUSH1 0x80 DUP1 DUP7 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x120 DUP8 ADD SWAP2 POP DUP5 DUP4 ADD SWAP4 POP DUP6 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x182E JUMPI PUSH2 0x1818 DUP5 MLOAD PUSH2 0x199A JUMP JUMPDEST DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 PUSH1 0x1 SWAP3 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1806 JUMP JUMPDEST POP DUP4 DUP8 ADD MLOAD SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 SWAP3 POP DUP3 DUP7 DUP3 SUB ADD PUSH1 0xA0 DUP8 ADD MSTORE PUSH2 0x186C DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x40 DUP6 ADD MLOAD DUP2 DUP6 DUP5 SUB ADD PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x1889 DUP4 DUP3 PUSH2 0x16AE JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x189F PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16A8 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP3 MSTORE PUSH1 0x80 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x18D9 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x18EB DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x60 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP POP PUSH1 0x2 DUP2 MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x3 DUP5 LT PUSH2 0x193B JUMPI INVALID JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1990 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19CE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0x1F MSTORE8 DELEGATECALL STATICCALL 0x1F DUP14 0x4D EXP SIGNEXTEND 0xB5 SDIV 0xB7 CHAINID 0xBD 0xEF 0xFB 0xEA PUSH24 0x139DBADEB966E33C7E1D01309D64736F6C63430007010033 ","sourceMap":"1472:6809:91:-:0;;;3050:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3095:5;-1:-1:-1;;;;;3086:14:91;;;-1:-1:-1;;;;;3086:14:91;;;;;;;3134:5;-1:-1:-1;;;;;3134:30:91;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3110:56;;-1:-1:-1;;;;;;3110:56:91;;;-1:-1:-1;1472:6809:91;;379:325:-1;;525:2;513:9;504:7;500:23;496:32;493:2;;;-1:-1;;531:12;493:2;120:6;114:13;132:64;190:5;132:64;:::i;:::-;583:105;487:217;-1:-1;;;487:217::o;1479:179::-;-1:-1;;;;;1413:54;;1569:66;;1559:2;;1649:1;;1639:12;1559:2;1553:105;:::o;:::-;1472:6809:91;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"13881":[{"length":32,"start":604},{"length":32,"start":828},{"length":32,"start":2640},{"length":32,"start":3929},{"length":32,"start":3974},{"length":32,"start":4371}],"13883":[{"length":32,"start":1916},{"length":32,"start":3279},{"length":32,"start":4322}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061011b5760003560e01c80639b452931116100b2578063e043f56f11610081578063e8d6101e11610066578063e8d6101e146101c0578063f04f2707146101c8578063fd6ea58d146101db5761011b565b8063e043f56f146101b0578063e4231540146101b85761011b565b80639b45293114610190578063a2abb55f14610198578063ad5c4648146101a0578063cbc87782146101a85761011b565b80635fbc1031116100ee5780635fbc10311461017057806369af9c7e146101785780636ad3aaa4146101805780638d928af8146101885761011b565b80630306ae12146101205780630a5e13dc146101355780635dc80bd0146101535780635f5fb03614610168575b600080fd5b61013361012e3660046114a3565b6101e3565b005b61013d6103ab565b60405161014a9190611714565b60405180910390f35b61015b6103c3565b60405161014a91906117a7565b6101336103e7565b61013d6105ad565b6101336105c5565b61013d610a36565b61013d610a4e565b61013d610a72565b61013d610a8a565b61013d610aa2565b610133610aba565b61013d610eea565b61015b610f02565b61013d610f26565b6101336101d63660046114de565b610f3e565b61013d610ffa565b6060815167ffffffffffffffff811180156101fd57600080fd5b50604051908082528060200260200182016040528015610227578160200160208202803683370190505b5090508160008151811061023757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b81526004016102979190611714565b60206040518083038186803b1580156102af57600080fd5b505afa1580156102c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e79190611611565b816000815181106102f457fe5b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635c38449e90610375903090869086906004016118aa565b600060405180830381600087803b15801561038f57600080fd5b505af11580156103a3573d6000803e3d6000fd5b505050505050565b73072f14b85add63488ddad88f855fda4a99d6ac9b81565b7f072f14b85add63488ddad88f855fda4a99d6ac9b00020000000000000000002781565b604080516002808252606080830184529260208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061042957fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160018151811061048557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506104c8816101e3565b60408051600280825260608083018452926020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d68160008151811061050a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc68160018151811061056657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506105a9816101e3565b5050565b73eb4c2781e4eba804ce9a9803c67d0893436bb27d81565b604080516002808252606080830184529260208301908036833701905050905073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f8160008151811061060757fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061066357fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073072f14b85add63488ddad88f855fda4a99d6ac9b906370a08231906106db903390600401611714565b60206040518083038186803b1580156106f357600080fd5b505afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611611565b6040517f70a082310000000000000000000000000000000000000000000000000000000081529091506107f99073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f9081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b60206040518083038186803b1580156107bc57600080fd5b505afa1580156107d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f49190611611565b611012565b606060018260405160200161080f92919061192d565b604051602081830303815290604052905061082861137f565b604051806080016040528061083c86611173565b8152602001855167ffffffffffffffff8111801561085957600080fd5b50604051908082528060200260200182016040528015610883578160200160208202803683370190505b508152602081018490526000604090910152905061089f610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610919907f072f14b85add63488ddad88f855fda4a99d6ac9b000200000000000000000027903390819087906004016117b0565b600060405180830381600087803b15801561093357600080fd5b505af1158015610947573d6000803e3d6000fd5b50506040805160028082526060808301845294509092509060208301908036833701905050905073639032d3900875a4cf4960ad6b9ee441657aa93c8160008151811061099057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f816001815181106109ec57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610a2f816101e3565b5050505050565b7318fcc34bdeaaf9e3b69d2500343527c0c995b1d681565b7f000000000000000000000000000000000000000000000000000000000000000090565b732260fac5e5542a773aa44fbcfedf7c193bc2c59981565b73639032d3900875a4cf4960ad6b9ee441657aa93c81565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b60408051600380825260808201909252606091602082018380368337019050509050732260fac5e5542a773aa44fbcfedf7c193bc2c59981600081518110610afe57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073eb4c2781e4eba804ce9a9803c67d0893436bb27d81600181518110610b5a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681600281518110610bb657fe5b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073feadd389a5c427952d8fdb8057d6c8ba1156cc56906370a0823190610c2e903390600401611714565b60206040518083038186803b158015610c4657600080fd5b505afa158015610c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611611565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152909150610cf79073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc69081906370a08231906107a4907f000000000000000000000000000000000000000000000000000000000000000090600401611714565b6060600182604051602001610d0d929190611945565b6040516020818303038152906040529050610d2661137f565b6040518060800160405280610d3a86611173565b8152602001855167ffffffffffffffff81118015610d5757600080fd5b50604051908082528060200260200182016040528015610d81578160200160208202803683370190505b5081526020810184905260006040909101529050610d9d610a4e565b6040517f8bdb391300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9190911690638bdb391390610e17907ffeadd389a5c427952d8fdb8057d6c8ba1156cc56000000000000000000000066903390819087906004016117b0565b600060405180830381600087803b158015610e3157600080fd5b505af1158015610e45573d6000803e3d6000fd5b5050604080516002808252606080830184529450909250906020830190803683370190505090507318fcc34bdeaaf9e3b69d2500343527c0c995b1d681600081518110610e8e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073fe18be6b3bd88a2d2a7f928d00292e7a9963cfc6816001815181106109ec57fe5b73fe18be6b3bd88a2d2a7f928d00292e7a9963cfc681565b7ffeadd389a5c427952d8fdb8057d6c8ba1156cc5600000000000000000000006681565b73c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f81565b610f813373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161460cd611176565b610ff47f000000000000000000000000000000000000000000000000000000000000000084600081518110610fb257fe5b602002602001015186600081518110610fc757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166111849092919063ffffffff16565b50505050565b73feadd389a5c427952d8fdb8057d6c8ba1156cc5681565b60408051600180825281830190925260609160208083019080368337019050509050828160008151811061104257fe5b73ffffffffffffffffffffffffffffffffffffffff9290921660209283029190910190910152604080516001808252818301909252606091816020016020820280368337019050509050828160008151811061109a57fe5b60209081029190910101526040517f6daefab600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636daefab69061113b90859085907f00000000000000000000000000000000000000000000000000000000000000009060040161175b565b600060405180830381600087803b15801561115557600080fd5b505af1158015611169573d6000803e3d6000fd5b5050505050505050565b90565b816105a9576105a98161122a565b6112258363a9059cbb60e01b84846040516024016111a3929190611735565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611257565b505050565b611254817f42414c0000000000000000000000000000000000000000000000000000000000611304565b50565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161128091906116f8565b6000604051808303816000865af19150503d80600081146112bd576040519150601f19603f3d011682016040523d82523d6000602084013e6112c2565b606091505b509150915060008214156112da573d6000803e3d6000fd5b610ff48151600014806112fc5750818060200190518101906112fc91906115ea565b6101a2611176565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f8301126113b9578081fd5b81356113cc6113c78261197a565b611953565b8181529150602080830190848101818402860182018710156113ed57600080fd5b6000805b8581101561142e57823573ffffffffffffffffffffffffffffffffffffffff8116811461141c578283fd5b855293830193918301916001016113f1565b50505050505092915050565b600082601f83011261144a578081fd5b81356114586113c78261197a565b81815291506020808301908481018184028601820187101561147957600080fd5b60005b848110156114985781358452928201929082019060010161147c565b505050505092915050565b6000602082840312156114b4578081fd5b813567ffffffffffffffff8111156114ca578182fd5b6114d6848285016113a9565b949350505050565b600080600080608085870312156114f3578283fd5b843567ffffffffffffffff8082111561150a578485fd5b611516888389016113a9565b955060209150818701358181111561152c578586fd5b61153889828a0161143a565b95505060408701358181111561154c578485fd5b61155889828a0161143a565b94505060608701358181111561156c578384fd5b8701601f8101891361157c578384fd5b80358281111561158a578485fd5b6115ba847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611953565b925080835289848284010111156115cf578485fd5b80848301858501378201909201929092525092959194509250565b6000602082840312156115fb578081fd5b8151801515811461160a578182fd5b9392505050565b600060208284031215611622578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561166e57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010161163c565b509495945050505050565b6000815180845260208085019450808401835b8381101561166e5781518752958201959082019060010161168c565b15159052565b600081518084526116c68160208601602086016119b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161170a8184602087016119b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60006060825261176e6060830186611629565b82810360208401526117808186611679565b91505073ffffffffffffffffffffffffffffffffffffffff83166040830152949350505050565b90815260200190565b6000858252602073ffffffffffffffffffffffffffffffffffffffff8087168285015280861660408501525060806060840152610100830184516080808601528181518084526101208701915084830193508592505b8083101561182e57611818845161199a565b8252928401926001929092019190840190611806565b508387015193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809250828682030160a087015261186c8185611679565b935050506040850151818584030160c086015261188983826116ae565b92505050606084015161189f60e08501826116a8565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff85168252608060208301526118d96080830185611629565b82810360408401526118eb8185611679565b8381036060909401939093525050600281527f307800000000000000000000000000000000000000000000000000000000000060208201526040019392505050565b604081016003841061193b57fe5b9281526020015290565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561197257600080fd5b604052919050565b600067ffffffffffffffff821115611990578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff1690565b60005b838110156119ce5781810151838201526020016119b6565b83811115610ff4575050600091015256fea2646970667358221220451f53f4fa1f8d4d0a0bb505b746bdeffbea77139dbadeb966e33c7e1d01309d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9B452931 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xE043F56F GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xE8D6101E GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xE8D6101E EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0xF04F2707 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFD6EA58D EQ PUSH2 0x1DB JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xE043F56F EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xE4231540 EQ PUSH2 0x1B8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x9B452931 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xA2ABB55F EQ PUSH2 0x198 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x1A0 JUMPI DUP1 PUSH4 0xCBC87782 EQ PUSH2 0x1A8 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x5FBC1031 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x5FBC1031 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x69AF9C7E EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x6AD3AAA4 EQ PUSH2 0x180 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x188 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x306AE12 EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0xA5E13DC EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0x5DC80BD0 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0x5F5FB036 EQ PUSH2 0x168 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x14A3 JUMP JUMPDEST PUSH2 0x1E3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x13D PUSH2 0x3AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15B PUSH2 0x3C3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14A SWAP2 SWAP1 PUSH2 0x17A7 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x13D PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x133 PUSH2 0x5C5 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA4E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA72 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xA8A JUMP JUMPDEST PUSH2 0x13D PUSH2 0xAA2 JUMP JUMPDEST PUSH2 0x133 PUSH2 0xABA JUMP JUMPDEST PUSH2 0x13D PUSH2 0xEEA JUMP JUMPDEST PUSH2 0x15B PUSH2 0xF02 JUMP JUMPDEST PUSH2 0x13D PUSH2 0xF26 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x14DE JUMP JUMPDEST PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x13D PUSH2 0xFFA JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x227 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x237 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 PUSH32 0x0 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x297 SWAP2 SWAP1 PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E7 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2F4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x5C38449E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x5C38449E SWAP1 PUSH2 0x375 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x18AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B DUP2 JUMP JUMPDEST PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x429 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x485 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x4C8 DUP2 PUSH2 0x1E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x50A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x566 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0x5A9 DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x607 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x663 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x6DB SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x707 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72B SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0x7F9 SWAP1 PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7F4 SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH2 0x1012 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x80F SWAP3 SWAP2 SWAP1 PUSH2 0x192D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0x828 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x83C DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x883 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0x89F PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0x919 SWAP1 PUSH32 0x72F14B85ADD63488DDAD88F855FDA4A99D6AC9B000200000000000000000027 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x933 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x947 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x990 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH2 0xA2F DUP2 PUSH2 0x1E3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 JUMP JUMPDEST PUSH20 0x639032D3900875A4CF4960AD6B9EE441657AA93C DUP2 JUMP JUMPDEST PUSH20 0xC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x3 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP3 ADD DUP4 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x2260FAC5E5542A773AA44FBCFEDF7C193BC2C599 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xAFE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xEB4C2781E4EBA804CE9A9803C67D0893436BB27D DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0xB5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x2 DUP2 MLOAD DUP2 LT PUSH2 0xBB6 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0xC2E SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC5A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC7E SWAP2 SWAP1 PUSH2 0x1611 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH2 0xCF7 SWAP1 PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 SWAP1 DUP2 SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x7A4 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1714 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xD0D SWAP3 SWAP2 SWAP1 PUSH2 0x1945 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xD26 PUSH2 0x137F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0xD3A DUP7 PUSH2 0x1173 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP6 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD57 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD81 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 POP PUSH2 0xD9D PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8BDB391300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x8BDB3913 SWAP1 PUSH2 0xE17 SWAP1 PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 SWAP1 CALLER SWAP1 DUP2 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x17B0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH20 0x18FCC34BDEAAF9E3B69D2500343527C0C995B1D6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x9EC JUMPI INVALID JUMPDEST PUSH20 0xFE18BE6B3BD88A2D2A7F928D00292E7A9963CFC6 DUP2 JUMP JUMPDEST PUSH32 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56000000000000000000000066 DUP2 JUMP JUMPDEST PUSH20 0xC011A73EE8576FB46F5E1C5751CA3B9FE0AF2A6F DUP2 JUMP JUMPDEST PUSH2 0xF81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH1 0xCD PUSH2 0x1176 JUMP JUMPDEST PUSH2 0xFF4 PUSH32 0x0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xFC7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1184 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFEADD389A5C427952D8FDB8057D6C8BA1156CC56 DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x109A JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 MLOAD PUSH32 0x6DAEFAB600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x6DAEFAB6 SWAP1 PUSH2 0x113B SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x175B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1155 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1169 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x5A9 JUMPI PUSH2 0x5A9 DUP2 PUSH2 0x122A JUMP JUMPDEST PUSH2 0x1225 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x11A3 SWAP3 SWAP2 SWAP1 PUSH2 0x1735 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x1257 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x1254 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x1304 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x1280 SWAP2 SWAP1 PUSH2 0x16F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x12BD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x12C2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x12DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xFF4 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x12FC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x12FC SWAP2 SWAP1 PUSH2 0x15EA JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x1176 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x13B9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x13CC PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST PUSH2 0x1953 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x13ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x142E JUMPI DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x141C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x13F1 JUMP JUMPDEST POP POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x144A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1458 PUSH2 0x13C7 DUP3 PUSH2 0x197A JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1498 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x147C JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x14B4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14CA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x14D6 DUP5 DUP3 DUP6 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x14F3 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x150A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1516 DUP9 DUP4 DUP10 ADD PUSH2 0x13A9 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 SWAP2 POP DUP2 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x152C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x1538 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x154C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1558 DUP10 DUP3 DUP11 ADD PUSH2 0x143A JUMP JUMPDEST SWAP5 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x156C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 ADD PUSH1 0x1F DUP2 ADD DUP10 SGT PUSH2 0x157C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x158A JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x15BA DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x1953 JUMP JUMPDEST SWAP3 POP DUP1 DUP4 MSTORE DUP10 DUP5 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x15CF JUMPI DUP5 DUP6 REVERT JUMPDEST DUP1 DUP5 DUP4 ADD DUP6 DUP6 ADD CALLDATACOPY DUP3 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x15FB JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x160A JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1622 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x163C JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x166E JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x168C JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x16C6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x19B3 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x170A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x19B3 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x176E PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1780 DUP2 DUP7 PUSH2 0x1679 JUMP JUMPDEST SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x20 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP3 DUP6 ADD MSTORE DUP1 DUP7 AND PUSH1 0x40 DUP6 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x100 DUP4 ADD DUP5 MLOAD PUSH1 0x80 DUP1 DUP7 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x120 DUP8 ADD SWAP2 POP DUP5 DUP4 ADD SWAP4 POP DUP6 SWAP3 POP JUMPDEST DUP1 DUP4 LT ISZERO PUSH2 0x182E JUMPI PUSH2 0x1818 DUP5 MLOAD PUSH2 0x199A JUMP JUMPDEST DUP3 MSTORE SWAP3 DUP5 ADD SWAP3 PUSH1 0x1 SWAP3 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x1806 JUMP JUMPDEST POP DUP4 DUP8 ADD MLOAD SWAP4 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 SWAP3 POP DUP3 DUP7 DUP3 SUB ADD PUSH1 0xA0 DUP8 ADD MSTORE PUSH2 0x186C DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST SWAP4 POP POP POP PUSH1 0x40 DUP6 ADD MLOAD DUP2 DUP6 DUP5 SUB ADD PUSH1 0xC0 DUP7 ADD MSTORE PUSH2 0x1889 DUP4 DUP3 PUSH2 0x16AE JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x60 DUP5 ADD MLOAD PUSH2 0x189F PUSH1 0xE0 DUP6 ADD DUP3 PUSH2 0x16A8 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP3 MSTORE PUSH1 0x80 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x18D9 PUSH1 0x80 DUP4 ADD DUP6 PUSH2 0x1629 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x18EB DUP2 DUP6 PUSH2 0x1679 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x60 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP POP PUSH1 0x2 DUP2 MSTORE PUSH32 0x3078000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH1 0x3 DUP5 LT PUSH2 0x193B JUMPI INVALID JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1990 JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19CE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B6 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xFF4 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASLIMIT 0x1F MSTORE8 DELEGATECALL STATICCALL 0x1F DUP14 0x4D EXP SIGNEXTEND 0xB5 SDIV 0xB7 CHAINID 0xBD 0xEF 0xFB 0xEA PUSH24 0x139DBADEB966E33C7E1D01309D64736F6C63430007010033 ","sourceMap":"1472:6809:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:253;;;;;;:::i;:::-;;:::i;:::-;;2243:101;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2350:113;;;:::i;:::-;;;;;;;:::i;6866:462::-;;;:::i;1967:82::-;;;:::i;5133:1283::-;;;:::i;2141:95::-;;;:::i;3179:79::-;;;:::i;1881:80::-;;;:::i;2640:94::-;;;:::i;2554:80::-;;;:::i;3545:1310::-;;;:::i;2055:80::-;;;:::i;1719:111::-;;;:::i;2469:79::-;;;:::i;7973:306::-;;;;;;:::i;:::-;;:::i;1614:99::-;;;:::i;7481:253::-;7558:24;7599:6;:13;7585:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7585:28:91;;7558:55;;7636:6;7643:1;7636:9;;;;;;;;;;;;;;:19;;;7664:6;7636:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7623:7;7631:1;7623:10;;;;;;;;;;;;;;;;;:49;7682:45;;;;;:16;:6;:16;;;;:45;;7699:4;;7705:6;;7713:7;;7682:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7481:253;;:::o;2243:101::-;2301:42;2243:101;:::o;2350:113::-;2397:66;2350:113;:::o;6866:462::-;6940:15;;;6953:1;6940:15;;;6907:30;6940:15;;;;;6907:30;6940:15;;;;;;;;;;-1:-1:-1;6940:15:91;6907:48;;2691:42;6965:14;6980:1;6965:17;;;;;;;;;;;;;:38;;;;;;;;;;;2505:42;7013:14;7028:1;7013:17;;;;;;;;;;;;;:40;;;;;;;;;;;7064:42;7091:14;7064:26;:42::i;:::-;7151:15;;;7164:1;7151:15;;;7117:31;7151:15;;;;;7117:31;7151:15;;;;;;;;;;-1:-1:-1;7151:15:91;7117:49;;2193:42;7176:15;7192:1;7176:18;;;;;;;;;;;;;:40;;;;;;;;;;;2092:42;7226:15;7242:1;7226:18;;;;;;;;;;;;;:42;;;;;;;;;;;7278:43;7305:15;7278:26;:43::i;:::-;6866:462;;:::o;1967:82::-;2006:42;1967:82;:::o;5133:1283::-;5208:15;;;5221:1;5208:15;;;5183:22;5208:15;;;;;5183:22;5208:15;;;;;;;;;;-1:-1:-1;5208:15:91;5183:40;;2505:42;5233:6;5240:1;5233:9;;;;;;;;;;;;;:15;;;;;;;;;;;2591:42;5258:6;5265:1;5258:9;;;;;;;;:16;;;;:9;;;;;;;;;;;:16;5306:47;;;;;5284:19;;2301:42;;5306:35;;:47;;5342:10;;5306:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5655:45;;;;;5284:69;;-1:-1:-1;5616:85:91;;2505:42;;;;5655:13;;:45;;5677:21;;5655:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5616:33;:85::i;:::-;5741:21;5776:57;5835:11;5765:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5741:106;;5857:37;;:::i;:::-;5897:146;;;;;;;;5933:17;5943:6;5933:9;:17::i;:::-;5897:146;;;;5978:6;:13;5964:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5964:28:91;-1:-1:-1;5897:146:91;;;;;;;;-1:-1:-1;5897:146:91;;;;;5857:186;-1:-1:-1;6053:10:91;:8;:10::i;:::-;:74;;;;;:19;;;;;;;;:74;;2397:66;;6095:10;;;;6119:7;;6053:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6244:15:91;;;6257:1;6244:15;;;6211:30;6244:15;;;;;6211:30;-1:-1:-1;6244:15:91;;-1:-1:-1;6257:1:91;6244:15;;;;;;;;;;-1:-1:-1;6244:15:91;6211:48;;2691:42;6269:14;6284:1;6269:17;;;;;;;;;;;;;:38;;;;;;;;;;;2505:42;6317:14;6332:1;6317:17;;;;;;;;;;;;;:40;;;;;;;;;;;6367:42;6394:14;6367:26;:42::i;:::-;5133:1283;;;;;:::o;2141:95::-;2193:42;2141:95;:::o;3179:79::-;3245:6;3179:79;:::o;1881:80::-;1918:42;1881:80;:::o;2640:94::-;2691:42;2640:94;:::o;2554:80::-;2591:42;2554:80;:::o;3545:1310::-;3618:15;;;3631:1;3618:15;;;;;;;;;3593:22;;3618:15;;;3593:22;;3618:15;;;;;-1:-1:-1;3618:15:91;3593:40;;1918:42;3643:6;3650:1;3643:9;;;;;;;;;;;;;:16;;;;;;;;;;;2006:42;3669:6;3676:1;3669:9;;;;;;;;;;;;;:18;;;;;;;;;;;2092:42;3697:6;3704:1;3697:9;;;;;;;;:16;;;;:9;;;;;;;;;;;:16;3745:45;;;;;3723:19;;1670:42;;3745:33;;:45;;3779:10;;3745:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4095:46;;;;;3723:67;;-1:-1:-1;4055:87:91;;2092:42;;;;4095:14;;:46;;4118:21;;4095:46;;;:::i;4055:87::-;4182:21;2936:1;4269:11;4206:75;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4182:99;;4291:37;;:::i;:::-;4331:146;;;;;;;;4367:17;4377:6;4367:9;:17::i;:::-;4331:146;;;;4412:6;:13;4398:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4398:28:91;-1:-1:-1;4331:146:91;;;;;;;;-1:-1:-1;4331:146:91;;;;;4291:186;-1:-1:-1;4487:10:91;:8;:10::i;:::-;:72;;;;;:19;;;;;;;;:72;;1764:66;;4527:10;;;;4551:7;;4487:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4678:15:91;;;4691:1;4678:15;;;4644:31;4678:15;;;;;4644:31;-1:-1:-1;4678:15:91;;-1:-1:-1;4691:1:91;4678:15;;;;;;;;;;-1:-1:-1;4678:15:91;4644:49;;2193:42;4703:15;4719:1;4703:18;;;;;;;;;;;;;:40;;;;;;;;;;;2092:42;4753:15;4769:1;4753:18;;;;;;;2055:80;2092:42;2055:80;:::o;1719:111::-;1764:66;1719:111;:::o;2469:79::-;2505:42;2469:79;:::o;7973:306::-;8147:64;8156:10;:29;8178:6;8156:29;;6271:3:19;8147:8:91;:64::i;:::-;8221:51;8252:6;8261:7;8269:1;8261:10;;;;;;;;;;;;;;8221:6;8228:1;8221:9;;;;;;;;;;;;;;:22;;;;:51;;;;;:::i;:::-;7973:306;;;;:::o;1614:99::-;1670:42;1614:99;:::o;6422:336::-;6539:15;;;6552:1;6539:15;;;;;;;;;6514:22;;6539:15;;;;;;;;;;;-1:-1:-1;6539:15:91;6514:40;;6576:5;6564:6;6571:1;6564:9;;;;;;;;:17;;;;;:9;;;;;;;;;;;:17;6618:16;;;6632:1;6618:16;;;;;;;;;6591:24;;6618:16;;;;;;;;;;;;-1:-1:-1;6618:16:91;6591:43;;6657:6;6644:7;6652:1;6644:10;;;;;;;;;;;;;;;;;:19;6674:77;;;;;:43;:21;:43;;;;:77;;6718:6;;6726:7;;6743:6;;6674:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:336;;;;:::o;979:182:52:-;1147:6;1127:32::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;1514:214:67:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1626:19;:95::i;:::-;1514:214;;;:::o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;2324:914:67:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11301:3:19;3134:8:67;:97::i;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31:752::-;;163:3;156:4;148:6;144:17;140:27;130:2;;-1:-1;;171:12;130:2;218:6;205:20;240:95;255:79;327:6;255:79;:::i;:::-;240:95;:::i;:::-;363:21;;;231:104;-1:-1;407:4;420:14;;;;395:17;;;509;;;500:27;;;;497:36;-1:-1;494:2;;;546:1;;536:12;494:2;571:1;;556:221;581:6;578:1;575:13;556:221;;;2203:6;2190:20;22262:42;25011:5;22251:54;24971:5;24968:50;24958:2;;571:1;;25022:12;24958:2;649:65;;728:14;;;;756;;;;603:1;596:9;556:221;;;560:14;;;;;;123:660;;;;:::o;809:707::-;;926:3;919:4;911:6;907:17;903:27;893:2;;-1:-1;;934:12;893:2;981:6;968:20;1003:80;1018:64;1075:6;1018:64;:::i;1003:80::-;1111:21;;;994:89;-1:-1;1155:4;1168:14;;;;1143:17;;;1257;;;1248:27;;;;1245:36;-1:-1;1242:2;;;1294:1;;1284:12;1242:2;1319:1;1304:206;1329:6;1326:1;1323:13;1304:206;;;2342:20;;1397:50;;1461:14;;;;1489;;;;1351:1;1344:9;1304:206;;;1308:14;;;;;886:630;;;;:::o;2553:407::-;;2697:2;2685:9;2676:7;2672:23;2668:32;2665:2;;;-1:-1;;2703:12;2665:2;2761:17;2748:31;2799:18;2791:6;2788:30;2785:2;;;-1:-1;;2821:12;2785:2;2851:93;2936:7;2927:6;2916:9;2912:22;2851:93;:::i;:::-;2841:103;2659:301;-1:-1;;;;2659:301::o;2967:1159::-;;;;;3221:3;3209:9;3200:7;3196:23;3192:33;3189:2;;;-1:-1;;3228:12;3189:2;3286:17;3273:31;3324:18;;3316:6;3313:30;3310:2;;;-1:-1;;3346:12;3310:2;3376:93;3461:7;3452:6;3441:9;3437:22;3376:93;:::i;:::-;3366:103;;3534:2;;;;3523:9;3519:18;3506:32;3324:18;3550:6;3547:30;3544:2;;;-1:-1;;3580:12;3544:2;3610:78;3680:7;3671:6;3660:9;3656:22;3610:78;:::i;:::-;3600:88;;;3753:2;3742:9;3738:18;3725:32;3324:18;3769:6;3766:30;3763:2;;;-1:-1;;3799:12;3763:2;3829:78;3899:7;3890:6;3879:9;3875:22;3829:78;:::i;:::-;3819:88;;;3972:2;3961:9;3957:18;3944:32;3324:18;3988:6;3985:30;3982:2;;;-1:-1;;4018:12;3982:2;4078:22;;1754:4;1742:17;;1738:27;-1:-1;1728:2;;-1:-1;;1769:12;1728:2;1816:6;1803:20;3324:18;18687:6;18684:30;18681:2;;;-1:-1;;18717:12;18681:2;1838:64;3534:2;18790:9;1754:4;18775:6;18771:17;18767:33;18848:15;1838:64;:::i;:::-;1829:73;;1922:6;1915:5;1908:21;2026:3;3534:2;2017:6;1950;2008:16;;2005:25;2002:2;;;-1:-1;;2033:12;2002:2;24211:6;3534:2;1950:6;1946:17;3534:2;1984:5;1980:16;24188:30;24249:16;;;;;24242:27;;;;-1:-1;3183:943;;;;-1:-1;3183:943;-1:-1;3183:943::o;4133:257::-;;4245:2;4233:9;4224:7;4220:23;4216:32;4213:2;;;-1:-1;;4251:12;4213:2;1605:6;1599:13;24857:5;21832:13;21825:21;24835:5;24832:32;24822:2;;-1:-1;;24868:12;24822:2;4303:71;4207:183;-1:-1;;;4207:183::o;4397:263::-;;4512:2;4500:9;4491:7;4487:23;4483:32;4480:2;;;-1:-1;;4518:12;4480:2;-1:-1;2490:13;;4474:186;-1:-1;4474:186::o;6517:765::-;;6740:5;19502:12;20470:6;20465:3;20458:19;20507:4;;20502:3;20498:14;6752:93;;20507:4;6931:5;19010:14;-1:-1;6970:290;6995:6;6992:1;6989:13;6970:290;;;7056:13;;22262:42;22251:54;9749:86;;5063:14;;;;20078;;;;7017:1;7010:9;6970:290;;;-1:-1;7266:10;;6656:626;-1:-1;;;;;6656:626::o;7321:670::-;;7504:5;19502:12;20470:6;20465:3;20458:19;20507:4;;20502:3;20498:14;7516:83;;20507:4;7670:5;19010:14;-1:-1;7709:260;7734:6;7731:1;7728:13;7709:260;;;7795:13;;8900:37;;5245:14;;;;20078;;;;7756:1;7749:9;7709:260;;8728:94;21832:13;21825:21;8783:34;;8777:45::o;8949:323::-;;9081:5;19502:12;20470:6;20465:3;20458:19;9164:52;9209:6;20507:4;20502:3;20498:14;20507:4;9190:5;9186:16;9164:52;:::i;:::-;24648:2;24628:14;24644:7;24624:28;9228:39;;;;20507:4;9228:39;;9029:243;-1:-1;;9029:243::o;12390:271::-;;9439:5;19502:12;9550:52;9595:6;9590:3;9583:4;9576:5;9572:16;9550:52;:::i;:::-;9614:16;;;;;12524:137;-1:-1;;12524:137::o;12668:222::-;22262:42;22251:54;;;;5509:45;;12795:2;12780:18;;12766:124::o;13142:333::-;22262:42;22251:54;;;;5509:45;;13461:2;13446:18;;8900:37;13297:2;13282:18;;13268:207::o;13482:770::-;;13780:2;13801:17;13794:47;13855:123;13780:2;13769:9;13765:18;13964:6;13855:123;:::i;:::-;14026:9;14020:4;14016:20;14011:2;14000:9;13996:18;13989:48;14051:108;14154:4;14145:6;14051:108;:::i;:::-;14043:116;;;22262:42;21642:5;22251:54;14238:2;14227:9;14223:18;5509:45;13751:501;;;;;;:::o;14259:222::-;8900:37;;;14386:2;14371:18;;14357:124::o;14488:784::-;;8930:5;8907:3;8900:37;14962:2;22262:42;;21642:5;22251:54;14962:2;14951:9;14947:18;5352:58;22262:42;21642:5;22251:54;15061:2;15050:9;15046:18;5509:45;;14789:3;15098:2;15087:9;15083:18;15076:48;11169:14;14778:9;11169:14;11252:16;11246:23;14789:3;;14778:9;14774:19;11282:38;11335:118;5938:5;19502:12;20470:6;20465:3;20458:19;20498:14;14778:9;20498:14;5950:83;;14962:2;6119:5;19010:14;6131:21;;-1:-1;6164:10;;6158:290;6183:6;6180:1;6177:13;6158:290;;;22647:73;6250:6;6244:13;22647:73;:::i;:::-;9749:86;;20078:14;;;;6205:1;6198:9;;;;;4851:14;;;;6158:290;;;6162:14;14962:2;11540:5;11536:16;11530:23;11510:43;;11589:14;;;;14778:9;11593:4;11589:14;;11573;14778:9;11573:14;11566:38;11619:103;11717:4;11703:12;11619:103;:::i;:::-;11611:111;;;;15061:2;11804:5;11800:16;11794:23;11589:14;14778:9;11857:4;11853:14;;11837;14778:9;11837:14;11830:38;11883:71;11949:4;11935:12;11883:71;:::i;:::-;11875:79;;;;15098:2;12045:5;12041:16;12035:23;12064:57;12106:14;14778:9;12106:14;12092:12;12064:57;:::i;:::-;-1:-1;15130:132;14760:512;-1:-1;;;;;;14760:512::o;15279:1146::-;;22262:42;21642:5;22251:54;9756:3;9749:86;15713:3;15868:2;15857:9;15853:18;15846:48;15908:123;15713:3;15702:9;15698:19;16017:6;15908:123;:::i;:::-;16079:9;16073:4;16069:20;16064:2;16053:9;16049:18;16042:48;16104:108;16207:4;16198:6;16104:108;:::i;:::-;16250:20;;;16245:2;16230:18;;;16223:48;;;;-1:-1;;10857:1;20458:19;;10892:4;15868:2;20498:14;;10872:25;16064:2;10916:12;;15684:741;-1:-1;;;15684:741::o;16950:355::-;17116:2;17101:18;;24747:1;24737:12;;24727:2;;24753:9;24727:2;10561:61;;;17291:2;17276:18;8900:37;17087:218;:::o;17312:333::-;8900:37;;;17631:2;17616:18;;8900:37;17467:2;17452:18;;17438:207::o;17652:256::-;17714:2;17708:9;17740:17;;;17815:18;17800:34;;17836:22;;;17797:62;17794:2;;;17872:1;;17862:12;17794:2;17714;17881:22;17692:216;;-1:-1;17692:216::o;17915:319::-;;18089:18;18081:6;18078:30;18075:2;;;-1:-1;;18111:12;18075:2;-1:-1;18156:4;18144:17;;;18209:15;;18012:222::o;21562:91::-;22262:42;22251:54;;21607:46::o;24284:268::-;24349:1;24356:101;24370:6;24367:1;24364:13;24356:101;;;24437:11;;;24431:18;24418:11;;;24411:39;24392:2;24385:10;24356:101;;;24472:6;24469:1;24466:13;24463:2;;;-1:-1;;24349:1;24519:16;;24512:27;24333:219::o"},"methodIdentifiers":{"BTC_STABLE_POOL_ADDRESS()":"fd6ea58d","BTC_STABLE_POOL_ID()":"e4231540","SNX()":"e8d6101e","SNX_IMPLEMENTATION()":"a2abb55f","SNX_WEIGHTED_POOL_ADDRESS()":"0a5e13dc","SNX_WEIGHTED_POOL_ID()":"5dc80bd0","WETH()":"ad5c4648","exitBTCStablePool()":"cbc87782","exitSNXWeightedPool()":"69af9c7e","getVault()":"8d928af8","receiveFlashLoan(address[],uint256[],uint256[],bytes)":"f04f2707","renBTC()":"5fbc1031","sBTC()":"e043f56f","sBTC_IMPLEMENTATION()":"6ad3aaa4","sweepDoubleEntrypointToken(address[])":"0306ae12","sweepSNXsBTC()":"5f5fb036","wBTC()":"9b452931"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BTC_STABLE_POOL_ADDRESS\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BTC_STABLE_POOL_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_WEIGHTED_POOL_ADDRESS\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SNX_WEIGHTED_POOL_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exitBTCStablePool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exitSNXWeightedPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"receiveFlashLoan\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sBTC_IMPLEMENTATION\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"sweepDoubleEntrypointToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sweepSNXsBTC\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wBTC\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"receiveFlashLoan(address[],uint256[],uint256[],bytes)\":{\"details\":\"Flash loan callback. Assumes that it receives a flashloan of multiple assets (all entrypoints of a Synthetix synth). We only need to repay the first loan as that will automatically all other loans.\"}},\"title\":\"DoubleEntrypointFixRelayer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exitBTCStablePool()\":{\"notice\":\"Fully exit the BTC Stable Pool into its three components (wBTC, renBTC and sBTC), with no price impact nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by Balancer Governance.\"},\"exitSNXWeightedPool()\":{\"notice\":\"Fully exit the SNX Weighted Pool into its two components (SNX and WETH), with no price impact nor swap fees. This relayer must have been previously approved by the caller, and proper permissions granted by Balancer Governance.\"},\"sweepDoubleEntrypointToken(address[])\":{\"notice\":\"Sweep a double-entrypoint token into the Protocol Fee Collector by passing all entrypoints of a given token.\"},\"sweepSNXsBTC()\":{\"notice\":\"Sweep all SNX and sBTC from the Vault into the Protocol Fee Collector.\"}},\"notice\":\"This contract performs mitigations to safeguard funds affected by double-entrypoint tokens (mostly Synthetix tokens). It doesn't use the standard relayer architecture to simplify the code.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/relayer/special/DoubleEntrypointFixRelayer.sol\":\"DoubleEntrypointFixRelayer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-stable/StablePoolUserData.sol\":{\"keccak256\":\"0xbbb6cfea06c1f6b74296b3235598fccd5b29f77089de3021a34541e438b9a1cf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a4b321da063f2b8d5b15d94a14cdf4571568df0e764b1ffcf02081215206beba\",\"dweb:/ipfs/QmQa313rbXMPjbdELyKpdhbD8wiV2f2iPuZouafZqVon4d\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/ERC20Helpers.sol\":{\"keccak256\":\"0xebc6984a89c85fa96037bf7aaceb9439494ee0edfe836fc45327ff2567f744af\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2d1734395d4a6657f420baeb1d871169eec42df72fb208a2def223b941d60eb3\",\"dweb:/ipfs/QmUkv1zrvhm42SazeUMhF7fm2iNfoJWwkEvtva33U8pSFX\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"contracts/relayer/special/DoubleEntrypointFixRelayer.sol\":{\"keccak256\":\"0xfdba1eecf46a85f5dd250ba8c27e9f5495677f1fca380c09d1b6f6b3c9d4aed3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b79d37733121b67ac700e40f159859d2659270a8d5a01d2bb43d900cd3a3a705\",\"dweb:/ipfs/QmbF3eM5ct61ejj1AguHWUwPMfx53Vhz4Y3pq25jA6ev62\"]}},\"version\":1}"}},"contracts/test/MockBaseRelayerLibrary.sol":{"MockBaseRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChainedReferenceValueRead","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"input","type":"bytes"}],"name":"bytesTunnel","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"getChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"isChainedReference","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101006040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e05234801561003557600080fd5b506040516200163c3803806200163c83398101604081905261005691610141565b80806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561009057600080fd5b505afa1580156100a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100c89190610141565b6001600160601b0319606091821b81166080529082901b1660a052604051819030906100f390610133565b6100fe929190610164565b604051809103906000f08015801561011a573d6000803e3d6000fd5b5060601b6001600160601b03191660c052506101969050565b6107878062000eb583390190565b600060208284031215610152578081fd5b815161015d8161017e565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b038116811461019357600080fd5b50565b60805160601c60a05160601c60c05160601c60e051610ce0620001d5600039806107d352508061021e52508061035b528061038b525050610ce06000f3fe6080604052600436106100965760003560e01c80638d928af811610069578063c518e5311161004e578063c518e5311461015d578063ec6edf001461017d578063f3cab685146101aa57610096565b80638d928af814610128578063b6d247371461013d57610096565b806356cc064e1461009b5780635967b696146100d15780637fd0e5d5146100f357806380db15bd14610115575b600080fd5b3480156100a757600080fd5b506100bb6100b63660046109a4565b6101d7565b6040516100c89190610bba565b60405180910390f35b3480156100dd57600080fd5b506100f16100ec366004610a68565b6101da565b005b3480156100ff57600080fd5b5061010861021c565b6040516100c89190610bed565b6100f16101233660046108fb565b610240565b34801561013457600080fd5b50610108610389565b34801561014957600080fd5b506100f1610158366004610a3d565b6103ad565b34801561016957600080fd5b506100f1610178366004610a98565b6103f4565b34801561018957600080fd5b5061019d610198366004610a68565b6103fe565b6040516100c89190610baf565b3480156101b657600080fd5b506101ca6101c5366004610a68565b61040f565b6040516100c89190610c45565b90565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb07875261020482610421565b6040516102119190610c45565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610262575082155b6102a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029890610c0e565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016102c093929190610b08565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161032f928691869101610ad5565b60408051601f19818403018152919052905061038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168261044c565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6103b6816104d1565b156103c7576103c481610421565b90505b6103f06103d2610389565b73ffffffffffffffffffffffffffffffffffffffff84169083610518565b5050565b6103f08282610676565b6000610409826104d1565b92915050565b600061041a82610689565b9392505050565b600080600061042f84610689565b9150915061043c846106a0565b1561041a57600082559392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516104779190610ab9565b6000604051808303816000865af19150503d80600081146104b4576040519150601f19603f3d011682016040523d82523d6000602084013e6104b9565b606091505b50915091506104c882826106e7565b95945050505050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b80158015906105c957506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906105769030908690600401610b39565b60206040518083038186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190610a80565b15155b15610652576106528363095ea7b360e01b8460006040516024016105ee929190610b60565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610711565b6106718363095ea7b360e01b84846040516024016105ee929190610b89565b505050565b6000610681836107c4565b919091555050565b600080610695836107c4565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b606082156106f6575080610409565b8151156107065781518083602001fd5b6104096101ae610822565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161073a9190610ab9565b6000604051808303816000865af19150503d8060008114610777576040519150601f19603f3d011682016040523d82523d6000602084013e61077c565b606091505b50915091506000821415610794573d6000803e3d6000fd5b6107be8151600014806107b65750818060200190518101906107b69190610988565b6101a261084f565b50505050565b600060016107d18361085d565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001610803929190610afa565b60408051808303601f1901815291905280516020909101200392915050565b61084c817f42414c0000000000000000000000000000000000000000000000000000000000610880565b50565b816103f0576103f081610822565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610910578384fd5b843561091b81610c7a565b9350602085013561092b81610c9c565b9250604085013567ffffffffffffffff80821115610947578384fd5b818701915087601f83011261095a578384fd5b813581811115610968578485fd5b886020828501011115610979578485fd5b95989497505060200194505050565b600060208284031215610999578081fd5b815161041a81610c9c565b600060208083850312156109b6578182fd5b823567ffffffffffffffff808211156109cd578384fd5b818501915085601f8301126109e0578384fd5b8135818111156109ee578485fd5b60405184601f19601f8401168201018181108482111715610a0d578687fd5b6040528181528382018501881015610a23578586fd5b818585018683013790810190930193909352509392505050565b60008060408385031215610a4f578182fd5b8235610a5a81610c7a565b946020939093013593505050565b600060208284031215610a79578081fd5b5035919050565b600060208284031215610a91578081fd5b5051919050565b60008060408385031215610aaa578182fd5b50508035926020909101359150565b60008251610acb818460208701610c4e565b9190910192915050565b60008451610ae7818460208901610c4e565b8201838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b6000602082528251806020840152610bd9816040850160208701610c4e565b601f01601f19169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b60005b83811015610c69578181015183820152602001610c51565b838111156107be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461084c57600080fd5b801515811461084c57600080fdfea2646970667358221220d10942e7e5451fad03968561c8febda1c73762685e640be3db520c2e0d4b0f4a64736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220ae2986d189807b7f562b5667a0dc32043a64b5fc57d1cf73ab6628ca3f8dd6a864736f6c63430007010033","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x163C CODESIZE SUB DUP1 PUSH3 0x163C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x56 SWAP2 PUSH2 0x141 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0x141 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH2 0xF3 SWAP1 PUSH2 0x133 JUMP JUMPDEST PUSH2 0xFE SWAP3 SWAP2 SWAP1 PUSH2 0x164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x11A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE POP PUSH2 0x196 SWAP1 POP JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH3 0xEB5 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x152 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x15D DUP2 PUSH2 0x17E JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x193 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0xCE0 PUSH3 0x1D5 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x7D3 MSTORE POP DUP1 PUSH2 0x21E MSTORE POP DUP1 PUSH2 0x35B MSTORE DUP1 PUSH2 0x38B MSTORE POP POP PUSH2 0xCE0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x96 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xEC6EDF00 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x1AA JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x13D JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x56CC064E EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x1DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x21C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBED JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x8FB JUMP JUMPDEST PUSH2 0x240 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x389 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x158 CALLDATASIZE PUSH1 0x4 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0x3AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0xA98 JUMP JUMPDEST PUSH2 0x3F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH2 0x1C5 CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xC45 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x204 DUP3 PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0xC45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x262 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x298 SWAP1 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x32F SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x381 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x44C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x3B6 DUP2 PUSH2 0x4D1 JUMP JUMPDEST ISZERO PUSH2 0x3C7 JUMPI PUSH2 0x3C4 DUP2 PUSH2 0x421 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x3F0 PUSH2 0x3D2 PUSH2 0x389 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x518 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F0 DUP3 DUP3 PUSH2 0x676 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x409 DUP3 PUSH2 0x4D1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A DUP3 PUSH2 0x689 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x42F DUP5 PUSH2 0x689 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x43C DUP5 PUSH2 0x6A0 JUMP JUMPDEST ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x477 SWAP2 SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4C8 DUP3 DUP3 PUSH2 0x6E7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5C9 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x576 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xB39 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0xA80 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x652 JUMPI PUSH2 0x652 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5EE SWAP3 SWAP2 SWAP1 PUSH2 0xB60 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x711 JUMP JUMPDEST PUSH2 0x671 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5EE SWAP3 SWAP2 SWAP1 PUSH2 0xB89 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x681 DUP4 PUSH2 0x7C4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x695 DUP4 PUSH2 0x7C4 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x6F6 JUMPI POP DUP1 PUSH2 0x409 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x706 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x409 PUSH2 0x1AE PUSH2 0x822 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x73A SWAP2 SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x77C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x794 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7BE DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7B6 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7B6 SWAP2 SWAP1 PUSH2 0x988 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x84F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x7D1 DUP4 PUSH2 0x85D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x803 SWAP3 SWAP2 SWAP1 PUSH2 0xAFA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x84C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x880 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x3F0 JUMPI PUSH2 0x3F0 DUP2 PUSH2 0x822 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x910 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x91B DUP2 PUSH2 0xC7A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x92B DUP2 PUSH2 0xC9C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x947 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x968 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x979 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x999 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x41A DUP2 PUSH2 0xC9C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9CD JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9E0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x9EE JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xA0D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0xA23 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA4F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xA5A DUP2 PUSH2 0xC7A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA79 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA91 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAAA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xACB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xC4E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0xAE7 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0xC4E JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xBD9 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xC4E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC69 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC51 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 MULMOD TIMESTAMP 0xE7 0xE5 GASLIMIT 0x1F 0xAD SUB SWAP7 DUP6 PUSH2 0xC8FE 0xBD LOG1 0xC7 CALLDATACOPY PUSH3 0x685E64 SIGNEXTEND 0xE3 0xDB MSTORE 0xC 0x2E 0xD 0x4B 0xF 0x4A PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0x29 DUP7 0xD1 DUP10 DUP1 PUSH28 0x7F562B5667A0DC32043A64B5FC57D1CF73AB6628CA3F8DD6A864736F PUSH13 0x63430007010033000000000000 ","sourceMap":"928:676:92:-:0;;;7822:42:82;7773:91;;1041:54:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1086:5;2122::82;-1:-1:-1;;;;;2122:10:82;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:71;;;;;;;;2146:14:82;;;;;::::1;::::0;2184:41:::1;::::0;2155:5;;2219:4:::1;::::0;2184:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2170:55:82::1;::::0;-1:-1:-1;;;;;;2170:55:82;::::1;::::0;-1:-1:-1;928:676:92;;-1:-1:-1;928:676:92;;;;;;;;;:::o;345:293:-1:-;;475:2;463:9;454:7;450:23;446:32;443:2;;;-1:-1;;481:12;443:2;104:6;98:13;116:48;158:5;116:48;:::i;:::-;533:89;437:201;-1:-1;;;437:201::o;1226:363::-;-1:-1;;;;;1981:54;;;1149:65;;1981:54;;1575:2;1560:18;;1014:37;1396:2;1381:18;;1367:222::o;2335:147::-;-1:-1;;;;;1981:54;;2409:50;;2399:2;;2473:1;;2463:12;2399:2;2393:89;:::o;:::-;928:676:92;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11191":[{"length":32,"start":859},{"length":32,"start":907}],"11193":[{"length":32,"start":542}],"11561":[{"length":32,"start":2003}]},"linkReferences":{},"object":"6080604052600436106100965760003560e01c80638d928af811610069578063c518e5311161004e578063c518e5311461015d578063ec6edf001461017d578063f3cab685146101aa57610096565b80638d928af814610128578063b6d247371461013d57610096565b806356cc064e1461009b5780635967b696146100d15780637fd0e5d5146100f357806380db15bd14610115575b600080fd5b3480156100a757600080fd5b506100bb6100b63660046109a4565b6101d7565b6040516100c89190610bba565b60405180910390f35b3480156100dd57600080fd5b506100f16100ec366004610a68565b6101da565b005b3480156100ff57600080fd5b5061010861021c565b6040516100c89190610bed565b6100f16101233660046108fb565b610240565b34801561013457600080fd5b50610108610389565b34801561014957600080fd5b506100f1610158366004610a3d565b6103ad565b34801561016957600080fd5b506100f1610178366004610a98565b6103f4565b34801561018957600080fd5b5061019d610198366004610a68565b6103fe565b6040516100c89190610baf565b3480156101b657600080fd5b506101ca6101c5366004610a68565b61040f565b6040516100c89190610c45565b90565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb07875261020482610421565b6040516102119190610c45565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000090565b73ffffffffffffffffffffffffffffffffffffffff8416301480610262575082155b6102a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029890610c0e565b60405180910390fd5b606063fa6e671d60e01b3386866040516024016102c093929190610b08565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161032f928691869101610ad5565b60408051601f19818403018152919052905061038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168261044c565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6103b6816104d1565b156103c7576103c481610421565b90505b6103f06103d2610389565b73ffffffffffffffffffffffffffffffffffffffff84169083610518565b5050565b6103f08282610676565b6000610409826104d1565b92915050565b600061041a82610689565b9392505050565b600080600061042f84610689565b9150915061043c846106a0565b1561041a57600082559392505050565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516104779190610ab9565b6000604051808303816000865af19150503d80600081146104b4576040519150601f19603f3d011682016040523d82523d6000602084013e6104b9565b606091505b50915091506104c882826106e7565b95945050505050565b7ffff0000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b80158015906105c957506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063dd62ed3e906105769030908690600401610b39565b60206040518083038186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190610a80565b15155b15610652576106528363095ea7b360e01b8460006040516024016105ee929190610b60565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610711565b6106718363095ea7b360e01b84846040516024016105ee929190610b89565b505050565b6000610681836107c4565b919091555050565b600080610695836107c4565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b606082156106f6575080610409565b8151156107065781518083602001fd5b6104096101ae610822565b600060608373ffffffffffffffffffffffffffffffffffffffff168360405161073a9190610ab9565b6000604051808303816000865af19150503d8060008114610777576040519150601f19603f3d011682016040523d82523d6000602084013e61077c565b606091505b50915091506000821415610794573d6000803e3d6000fd5b6107be8151600014806107b65750818060200190518101906107b69190610988565b6101a261084f565b50505050565b600060016107d18361085d565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001610803929190610afa565b60408051808303601f1901815291905280516020909101200392915050565b61084c817f42414c0000000000000000000000000000000000000000000000000000000000610880565b50565b816103f0576103f081610822565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60008060008060608587031215610910578384fd5b843561091b81610c7a565b9350602085013561092b81610c9c565b9250604085013567ffffffffffffffff80821115610947578384fd5b818701915087601f83011261095a578384fd5b813581811115610968578485fd5b886020828501011115610979578485fd5b95989497505060200194505050565b600060208284031215610999578081fd5b815161041a81610c9c565b600060208083850312156109b6578182fd5b823567ffffffffffffffff808211156109cd578384fd5b818501915085601f8301126109e0578384fd5b8135818111156109ee578485fd5b60405184601f19601f8401168201018181108482111715610a0d578687fd5b6040528181528382018501881015610a23578586fd5b818585018683013790810190930193909352509392505050565b60008060408385031215610a4f578182fd5b8235610a5a81610c7a565b946020939093013593505050565b600060208284031215610a79578081fd5b5035919050565b600060208284031215610a91578081fd5b5051919050565b60008060408385031215610aaa578182fd5b50508035926020909101359150565b60008251610acb818460208701610c4e565b9190910192915050565b60008451610ae7818460208901610c4e565b8201838582379092019182525092915050565b918252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152901515604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92909216825260ff16602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b6000602082528251806020840152610bd9816040850160208701610c4e565b601f01601f19169190910160400192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b90815260200190565b60005b83811015610c69578181015183820152602001610c51565b838111156107be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461084c57600080fd5b801515811461084c57600080fdfea2646970667358221220d10942e7e5451fad03968561c8febda1c73762685e640be3db520c2e0d4b0f4a64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x96 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8D928AF8 GT PUSH2 0x69 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xC518E531 EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0xEC6EDF00 EQ PUSH2 0x17D JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x1AA JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x13D JUMPI PUSH2 0x96 JUMP JUMPDEST DUP1 PUSH4 0x56CC064E EQ PUSH2 0x9B JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A4 JUMP JUMPDEST PUSH2 0x1D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBBA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0xEC CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x1DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x21C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBED JUMP JUMPDEST PUSH2 0xF1 PUSH2 0x123 CALLDATASIZE PUSH1 0x4 PUSH2 0x8FB JUMP JUMPDEST PUSH2 0x240 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x108 PUSH2 0x389 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x149 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x158 CALLDATASIZE PUSH1 0x4 PUSH2 0xA3D JUMP JUMPDEST PUSH2 0x3AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x169 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF1 PUSH2 0x178 CALLDATASIZE PUSH1 0x4 PUSH2 0xA98 JUMP JUMPDEST PUSH2 0x3F4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x3FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xBAF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CA PUSH2 0x1C5 CALLDATASIZE PUSH1 0x4 PUSH2 0xA68 JUMP JUMPDEST PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC8 SWAP2 SWAP1 PUSH2 0xC45 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0x204 DUP3 PUSH2 0x421 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x211 SWAP2 SWAP1 PUSH2 0xC45 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ DUP1 PUSH2 0x262 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x2A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x298 SWAP1 PUSH2 0xC0E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2C0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xB08 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x32F SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0xAD5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x381 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP3 PUSH2 0x44C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x3B6 DUP2 PUSH2 0x4D1 JUMP JUMPDEST ISZERO PUSH2 0x3C7 JUMPI PUSH2 0x3C4 DUP2 PUSH2 0x421 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x3F0 PUSH2 0x3D2 PUSH2 0x389 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 PUSH2 0x518 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x3F0 DUP3 DUP3 PUSH2 0x676 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x409 DUP3 PUSH2 0x4D1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x41A DUP3 PUSH2 0x689 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x42F DUP5 PUSH2 0x689 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x43C DUP5 PUSH2 0x6A0 JUMP JUMPDEST ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x477 SWAP2 SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x4C8 DUP3 DUP3 PUSH2 0x6E7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5C9 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x576 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xB39 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x58E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5A2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5C6 SWAP2 SWAP1 PUSH2 0xA80 JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x652 JUMPI PUSH2 0x652 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5EE SWAP3 SWAP2 SWAP1 PUSH2 0xB60 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x711 JUMP JUMPDEST PUSH2 0x671 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x5EE SWAP3 SWAP2 SWAP1 PUSH2 0xB89 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x681 DUP4 PUSH2 0x7C4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x695 DUP4 PUSH2 0x7C4 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x6F6 JUMPI POP DUP1 PUSH2 0x409 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x706 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x409 PUSH2 0x1AE PUSH2 0x822 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x73A SWAP2 SWAP1 PUSH2 0xAB9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x777 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x77C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x794 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x7BE DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x7B6 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7B6 SWAP2 SWAP1 PUSH2 0x988 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x84F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x7D1 DUP4 PUSH2 0x85D JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x803 SWAP3 SWAP2 SWAP1 PUSH2 0xAFA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x84C DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x880 JUMP JUMPDEST POP JUMP JUMPDEST DUP2 PUSH2 0x3F0 JUMPI PUSH2 0x3F0 DUP2 PUSH2 0x822 JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x910 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x91B DUP2 PUSH2 0xC7A JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x92B DUP2 PUSH2 0xC9C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x947 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x95A JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x968 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x979 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x999 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x41A DUP2 PUSH2 0xC9C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x9CD JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9E0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x9EE JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP5 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND DUP3 ADD ADD DUP2 DUP2 LT DUP5 DUP3 GT OR ISZERO PUSH2 0xA0D JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP9 LT ISZERO PUSH2 0xA23 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP2 DUP6 DUP6 ADD DUP7 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD SWAP1 SWAP4 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA4F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xA5A DUP2 PUSH2 0xC7A JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA79 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA91 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xAAA JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xACB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xC4E JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0xAE7 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0xC4E JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xBD9 DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xC4E JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC69 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC51 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x7BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x84C JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD1 MULMOD TIMESTAMP 0xE7 0xE5 GASLIMIT 0x1F 0xAD SUB SWAP7 DUP6 PUSH2 0xC8FE 0xBD LOG1 0xC7 CALLDATACOPY PUSH3 0x685E64 SIGNEXTEND 0xE3 0xDB MSTORE 0xC 0x2E 0xD 0x4B 0xF 0x4A PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"928:676:92:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1497:105;;;;;;;;;;-1:-1:-1;1497:105:92;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1358:133;;;;;;;;;;-1:-1:-1;1358:133:92;;;;;:::i;:::-;;:::i;:::-;;2332:99:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2545:466::-;;;;;;:::i;:::-;;:::i;2238:88::-;;;;;;;;;;;;;:::i;3189:277::-;;;;;;;;;;-1:-1:-1;3189:277:82;;;;;:::i;:::-;;:::i;1229:123:92:-;;;;;;;;;;-1:-1:-1;1229:123:92;;;;;:::i;:::-;;:::i;1101:122::-;;;;;;;;;;-1:-1:-1;1101:122:92;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3641:153:82:-;;;;;;;;;;-1:-1:-1;3641:153:82;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1497:105:92:-;1590:5;1497:105::o;1358:133::-;1427:57;1453:30;1479:3;1453:25;:30::i;:::-;1427:57;;;;;;:::i;:::-;;;;;;;;1358:133;:::o;2332:99:82:-;2413:11;2332:99;:::o;2545:466::-;2700:24;;;2719:4;2700:24;;:37;;;2729:8;2728:9;2700:37;2692:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2783:17;2856:34;;;2892:10;2904:7;2913:8;2833:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2833:89:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:156;;;2936:13;;;;2803:156;;:::i;:::-;;;;-1:-1:-1;;2803:156:82;;;;;;;;;;-1:-1:-1;2970:34:82;:28;2978:6;2970:28;2803:156;2970:28;:34::i;:::-;;2545:466;;;;;:::o;2238:88::-;2313:6;2238:88;:::o;3189:277::-;3271:27;3291:6;3271:19;:27::i;:::-;3267:100;;;3323:33;3349:6;3323:25;:33::i;:::-;3314:42;;3267:100;3413:46;3439:10;:8;:10::i;:::-;3413:17;;;;3452:6;3413:17;:46::i;:::-;3189:277;;:::o;1229:123:92:-;1308:37;1334:3;1339:5;1308:25;:37::i;1101:122::-;1166:4;1189:27;1209:6;1189:19;:27::i;:::-;1182:34;1101:122;-1:-1:-1;;1101:122:92:o;3641:153:82:-;3719:13;3756:31;3783:3;3756:26;:31::i;:::-;3744:43;3641:153;-1:-1:-1;;;3641:153:82:o;6742:375::-;6817:7;6837:12;6851:13;6868:31;6895:3;6868:26;:31::i;:::-;6836:63;;;;6914:33;6943:3;6914:28;:33::i;:::-;6910:179;;;7063:1;7057:4;7050:15;7105:5;6742:375;-1:-1:-1;;;6742:375:82:o;3494:278:59:-;3569:12;3653;3667:23;3694:6;:11;;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;3494:278;-1:-1:-1;;;;;3494:278:59:o;4912:358:82:-;5114:66;5105:75;5197:66;5104:159;;4912:358::o;1001:507:67:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:67;;;;;:15;;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1332:53:67;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:19;:90::i;:::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;1407:94::-;1001:507;;;:::o;5994:392:82:-;6085:12;6100:20;6116:3;6100:15;:20::i;:::-;6351:19;;;;-1:-1:-1;;6337:43:82:o;7311:404::-;7382:12;7396:13;7428:20;7444:3;7428:15;:20::i;:::-;7421:27;;7694:4;7688:11;7679:20;;7665:44;;;:::o;5387:505::-;5736:66;5727:75;5819:66;5726:159;;5387:505::o;5057:714:59:-;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:59;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12033:3:19;5703:7:59;:37::i;2324:914:67:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11301:3:19;3134:8:67;:97::i;:::-;2324:914;;;;:::o;7871:595:82:-;7931:7;8457:1;8402:27;8425:3;8402:22;:27::i;:::-;8431:20;8385:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8385:67:82;;;;;;8375:78;;8385:67;8375:78;;;;8367:91;;7871:595;-1:-1:-1;;7871:595:82:o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;926:101::-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;8657:174:82:-;8757:66;8751:72;;8657:174::o;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1660:609:-1;;;;;1814:2;1802:9;1793:7;1789:23;1785:32;1782:2;;;-1:-1;;1820:12;1782:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1872:63;-1:-1;1972:2;2008:22;;206:20;231:30;206:20;231:30;:::i;:::-;1980:60;-1:-1;2105:2;2090:18;;2077:32;2129:18;2118:30;;;2115:2;;;-1:-1;;2151:12;2115:2;2236:6;2225:9;2221:22;;;536:3;529:4;521:6;517:17;513:27;503:2;;-1:-1;;544:12;503:2;587:6;574:20;2129:18;606:6;603:30;600:2;;;-1:-1;;636:12;600:2;731:3;1972:2;711:17;672:6;697:32;;694:41;691:2;;;-1:-1;;738:12;691:2;1776:493;;;;-1:-1;;1972:2;668:17;;-1:-1;;;1776:493::o;2276:257::-;;2388:2;2376:9;2367:7;2363:23;2359:32;2356:2;;;-1:-1;;2394:12;2356:2;354:6;348:13;366:30;390:5;366:30;:::i;2540:345::-;;2653:2;;2641:9;2632:7;2628:23;2624:32;2621:2;;;-1:-1;;2659:12;2621:2;2717:17;2704:31;2755:18;;2747:6;2744:30;2741:2;;;-1:-1;;2777:12;2741:2;2852:6;2841:9;2837:22;;;868:3;861:4;853:6;849:17;845:27;835:2;;-1:-1;;876:12;835:2;923:6;910:20;2755:18;11637:6;11634:30;11631:2;;;-1:-1;;11667:12;11631:2;11301;11295:9;2653:2;-1:-1;;861:4;11725:6;11721:17;11717:33;11331:6;11327:17;;11438:6;11426:10;11423:22;2755:18;11390:10;11387:34;11384:62;11381:2;;;-1:-1;;11449:12;11381:2;11301;11468:22;1015:21;;;1115:16;;;;;1112:25;-1:-1;1109:2;;;-1:-1;;1140:12;1109:2;14044:6;2653:2;1057:6;1053:17;2653:2;1091:5;1087:16;14021:30;14082:16;;;;;;14075:27;;;;-1:-1;1091:5;2615:270;-1:-1;;;2615:270::o;2892:396::-;;;3028:2;3016:9;3007:7;3003:23;2999:32;2996:2;;;-1:-1;;3034:12;2996:2;1310:6;1297:20;1322:48;1364:5;1322:48;:::i;:::-;3086:78;3201:2;3240:22;;;;1449:20;;-1:-1;;;2990:298::o;3295:241::-;;3399:2;3387:9;3378:7;3374:23;3370:32;3367:2;;;-1:-1;;3405:12;3367:2;-1:-1;1449:20;;3361:175;-1:-1;3361:175::o;3543:263::-;;3658:2;3646:9;3637:7;3633:23;3629:32;3626:2;;;-1:-1;;3664:12;3626:2;-1:-1;1597:13;;3620:186;-1:-1;3620:186::o;3813:366::-;;;3934:2;3922:9;3913:7;3909:23;3905:32;3902:2;;;-1:-1;;3940:12;3902:2;-1:-1;;1449:20;;;4092:2;4131:22;;;1449:20;;-1:-1;3896:283::o;6884:271::-;;5571:5;11917:12;5682:52;5727:6;5722:3;5715:4;5708:5;5704:16;5682:52;:::i;:::-;5746:16;;;;;7018:137;-1:-1;;7018:137::o;7162:448::-;;5571:5;11917:12;5682:52;5727:6;5722:3;5715:4;5708:5;5704:16;5682:52;:::i;:::-;5746:16;;14044:6;14039:3;5746:16;14021:30;14082:16;;;14075:27;;;-1:-1;14082:16;7352:258;-1:-1;;7352:258::o;7617:392::-;4650:58;;;7870:2;7861:12;;4650:58;7972:12;;;7761:248::o;8016:464::-;13015:42;13004:54;;;4273:45;;13004:54;;;;8389:2;8374:18;;4273:45;12724:13;;12717:21;8466:2;8451:18;;4515:34;8209:2;8194:18;;8180:300::o;8487:333::-;13015:42;13004:54;;;4273:45;;13004:54;;8806:2;8791:18;;4273:45;8642:2;8627:18;;8613:207::o;8827:345::-;13015:42;13004:54;;;;4273:45;;13220:4;13209:16;9158:2;9143:18;;6197:56;8988:2;8973:18;;8959:213::o;9179:333::-;13015:42;13004:54;;;;4273:45;;9498:2;9483:18;;4650:58;9334:2;9319:18;;9305:207::o;9519:210::-;12724:13;;12717:21;4515:34;;9640:2;9625:18;;9611:118::o;9736:306::-;;9881:2;9902:17;9895:47;5203:5;11917:12;12073:6;9881:2;9870:9;9866:18;12061:19;5296:52;5341:6;12101:14;9870:9;12101:14;9881:2;5322:5;5318:16;5296:52;:::i;:::-;14643:2;14623:14;-1:-1;;14619:28;5360:39;;;;12101:14;5360:39;;9852:190;-1:-1;;9852:190::o;10049:272::-;13015:42;13004:54;;;;5870:75;;10201:2;10186:18;;10172:149::o;10587:416::-;10787:2;10801:47;;;6490:2;10772:18;;;12061:19;6526:33;12101:14;;;6506:54;6579:12;;;10758:245::o;11010:222::-;4650:58;;;11137:2;11122:18;;11108:124::o;14117:268::-;14182:1;14189:101;14203:6;14200:1;14197:13;14189:101;;;14270:11;;;14264:18;14251:11;;;14244:39;14225:2;14218:10;14189:101;;;14305:6;14302:1;14299:13;14296:2;;;-1:-1;;14182:1;14352:16;;14345:27;14166:219::o;14660:117::-;13015:42;14747:5;13004:54;14722:5;14719:35;14709:2;;14768:1;;14758:12;14784:111;14865:5;12724:13;12717:21;14843:5;14840:32;14830:2;;14886:1;;14876:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","bytesTunnel(bytes)":"56cc064e","getChainedReferenceValue(uint256)":"5967b696","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","isChainedReference(uint256)":"ec6edf00","peekChainedReferenceValue(uint256)":"f3cab685","setChainedReferenceValue(uint256,uint256)":"c518e531","setRelayerApproval(address,bool,bytes)":"80db15bd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ChainedReferenceValueRead\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"bytesTunnel\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"getChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"isChainedReference\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBaseRelayerLibrary.sol\":\"MockBaseRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x8ff74ec1bf461e1a4b51ffbce56660a132fa764402cf2072166a16b20b351139\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e5428b6ec3f59b6537f81af5ce78a15ae5b680623a6c93cefd662a49048cb22\",\"dweb:/ipfs/QmRt2owUCTKjNoDYZhMNXX9AahWzFiMshSBjrroa5orrku\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/test/MockBaseRelayerLibrary.sol\":{\"keccak256\":\"0xa17d727ab4a6f90276bc8e0116e1985b201f44121e8cd834c725c43483cf8532\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5c35cfe80e6f43bc434fc33735c00a9b739513b7a4ee10c1fe9d03cbf2d40f6d\",\"dweb:/ipfs/QmdNPJCk5ntmDpGg5pxPGfLqyLdmritYu3MpZPhSKuG1i8\"]}},\"version\":1}"}},"contracts/test/MockBatchRelayerLibrary.sol":{"MockBatchRelayerLibrary":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IERC20","name":"wstETH","type":"address"},{"internalType":"contract IBalancerMinter","name":"minter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"ChainedReferenceValueRead","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approveVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"uint256","name":"assetInIndex","type":"uint256"},{"internalType":"uint256","name":"assetOutIndex","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.BatchSwapStep[]","name":"swaps","type":"tuple[]"},{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"int256[]","name":"limits","type":"int256[]"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"batchSwap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"minAmountsOut","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.ExitPoolRequest","name":"request","type":"tuple"},{"components":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"key","type":"uint256"}],"internalType":"struct VaultActions.OutputReference[]","name":"outputReferences","type":"tuple[]"}],"name":"exitPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge[]","name":"gauges","type":"address[]"}],"name":"gaugeClaimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"gauges","type":"address[]"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"gaugeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"approval","type":"bool"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"gaugeSetMinterApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStakingLiquidityGauge","name":"gauge","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"gaugeWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"getChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getEntrypoint","outputs":[{"internalType":"contract IBalancerRelayer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum VaultActions.PoolKind","name":"kind","type":"uint8"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"components":[{"internalType":"contract IAsset[]","name":"assets","type":"address[]"},{"internalType":"uint256[]","name":"maxAmountsIn","type":"uint256[]"},{"internalType":"bytes","name":"userData","type":"bytes"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"}],"internalType":"struct IVault.JoinPoolRequest","name":"request","type":"tuple"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"joinPool","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"enum IVault.UserBalanceOpKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"asset","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address payable","name":"recipient","type":"address"}],"internalType":"struct IVault.UserBalanceOp[]","name":"ops","type":"tuple[]"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"manageUserBalance","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"}],"name":"peekChainedReferenceValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ref","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setChainedReferenceValue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"relayer","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"bytes","name":"authorisation","type":"bytes"}],"name":"setRelayerApproval","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"stakeETHAndWrap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes32","name":"poolId","type":"bytes32"},{"internalType":"enum IVault.SwapKind","name":"kind","type":"uint8"},{"internalType":"contract IAsset","name":"assetIn","type":"address"},{"internalType":"contract IAsset","name":"assetOut","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"userData","type":"bytes"}],"internalType":"struct IVault.SingleSwap","name":"singleSwap","type":"tuple"},{"components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bool","name":"fromInternalBalance","type":"bool"},{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"bool","name":"toInternalBalance","type":"bool"}],"internalType":"struct IVault.FundManagement","name":"funds","type":"tuple"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapAaveStaticToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"unwrapWstETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20Permit","name":"token","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20PermitDAI","name":"token","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"bool","name":"allowed","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"vaultPermitDAI","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IStaticATokenLM","name":"staticToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"fromUnderlying","type":"bool"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapAaveDynamicToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC4626","name":"wrappedToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapERC4626","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IReaperTokenVault","name":"vaultToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapReaperVaultToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapStETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IUnbuttonToken","name":"wrapperToken","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"uAmount","type":"uint256"},{"internalType":"uint256","name":"outputReference","type":"uint256"}],"name":"wrapUnbuttonToken","outputs":[],"stateMutability":"payable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101606040527fae1dc54057af8e8e5ce068cdd4383149c7efcb30e8fb95b592ee1594367fb50960e0523480156200003657600080fd5b50604051620056f6380380620056f683398101604081905262000059916200020f565b828282818184806001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009957600080fd5b505afa158015620000ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d4919062000262565b6001600160601b0319606091821b81166080529082901b1660a05260405181903090620001019062000201565b6200010e92919062000288565b604051809103906000f0801580156200012b573d6000803e3d6000fd5b506001600160601b0319606091821b811660c05292901b90911661010052506001600160a01b03811662000161576000620001d8565b806001600160a01b031663c1fe3e486040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200019d57600080fd5b505af1158015620001b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d8919062000262565b6001600160601b0319606091821b81166101205291901b166101405250620002bb945050505050565b6107878062004f6f83390190565b60008060006060848603121562000224578283fd5b83516200023181620002a2565b60208501519093506200024481620002a2565b60408501519092506200025781620002a2565b809150509250925092565b60006020828403121562000274578081fd5b81516200028181620002a2565b9392505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b0381168114620002b857600080fd5b50565b60805160601c60a05160601c60c05160601c60e0516101005160601c6101205160601c6101405160601c614c126200035d6000398061056f52806106035280610646528061093a52806109925280610a3852806124df52806125375250806108e652806109185280610a9c5280610b5852806125dd525080610cdb52806117c4525080612ef352508061166e52508061176e52806118bb525050614c126000f3fe6080604052600436106101d85760003560e01c806380db15bd11610102578063c518e53111610095578063e8210e3c11610064578063e8210e3c14610421578063ecc0263714610434578063efe6910814610447578063f3cab6851461045a576101d8565b8063c518e531146103c8578063d293f290146103e8578063d80952d5146103fb578063db4c0e911461040e576101d8565b80638fe4624f116100d15780638fe4624f1461036f578063959fc17a14610382578063abf6d39914610395578063b6d24737146103a8576101d8565b806380db15bd146103215780638c57198b146103345780638d64cfbc146103475780638d928af81461035a576101d8565b8063433b08651161017a5780636d307ea8116101495780636d307ea8146102bd5780637ab6e03c146102d05780637bc008f5146102e35780637fd0e5d5146102f6576101d8565b8063433b0865146102645780635967b69614610277578063611b90dd1461029757806365ca4804146102aa576101d8565b80631c982441116101b65780631c982441146102185780632cbec84e1461022b5780632e6272ea1461023e5780633f85d39014610251576101d8565b80630e248fea146101dd5780631089e5e3146101f25780631836944614610205575b600080fd5b6101f06101eb366004613971565b610487565b005b6101f06102003660046138f3565b610522565b6101f0610213366004613fcb565b610685565b6101f0610226366004613821565b61088e565b6101f06102393660046138f3565b610a7e565b6101f061024c3660046140c7565b610b7f565b6101f061025f366004613927565b610ca8565b6101f0610272366004613e6c565b610d71565b34801561028357600080fd5b506101f06102923660046141b5565b610f9a565b6101f06102a5366004613dc2565b610fdc565b6101f06102b8366004613e1c565b6110f7565b6101f06102cb366004613dc2565b611264565b6101f06102de366004613e6c565b611400565b6101f06102f1366004613e1c565b611506565b34801561030257600080fd5b5061030b61166c565b604051610318919061444e565b60405180910390f35b6101f061032f366004613866565b611690565b6101f0610342366004613b0e565b611794565b6101f0610355366004613d29565b61183f565b34801561036657600080fd5b5061030b6118b9565b6101f061037d366004613c19565b6118dd565b6101f0610390366004613ca8565b611b07565b6101f06103a3366004613dc2565b611b84565b3480156103b457600080fd5b506101f06103c3366004613d97565b611cb4565b3480156103d457600080fd5b506101f06103e33660046141e5565b611cee565b6101f06103f6366004613dc2565b611cf8565b6101f0610409366004613b71565b611ef9565b6101f061041c366004613821565b612487565b6101f061042f366004613dc2565b612604565b6101f0610442366004613a41565b61280f565b6101f0610455366004613dc2565b612907565b34801561046657600080fd5b5061047a6104753660046141b5565b6129b0565b6040516103189190614acf565b8060005b8181101561051c5783838281811061049f57fe5b90506020020160208101906104b491906137e9565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104df919061444e565b600060405180830381600087803b1580156104f957600080fd5b505af115801561050d573d6000803e3d6000fd5b5050505080600101905061048b565b50505050565b61052b826129c2565b1561053c5761053982612a0d565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e38900906105a4908690600401614acf565b60206040518083038186803b1580156105bc57600080fd5b505afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f491906141cd565b90506106296001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612a38565b6001600160a01b038416301461066d5761066d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b610676826129c2565b1561051c5761051c8282612b3a565b3361069360208901896137e9565b6001600160a01b031614806106bc5750306106b160208901896137e9565b6001600160a01b0316145b6106e15760405162461bcd60e51b81526004016106d89061499f565b60405180910390fd5b60005b8a518110156107465760008b82815181106106fb57fe5b6020026020010151606001519050610712816129c2565b1561073d5761072081612a0d565b8c838151811061072c57fe5b602002602001015160600181815250505b506001016106e4565b5060606107516118b9565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b815260040161078b989796959493929190614896565b6000604051808303818588803b1580156107a457600080fd5b505af11580156107b8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526107e191908101906139b1565b905060005b8281101561087f5761080c8484838181106107fd57fe5b905060400201602001356129c2565b6108285760405162461bcd60e51b81526004016106d890614a0d565b61087784848381811061083757fe5b905060400201602001356108728487878681811061085157fe5b905060400201600001358151811061086557fe5b6020026020010151612b4d565b612b3a565b6001016107e6565b50505050505050505050505050565b610897826129c2565b156108a8576108a582612a0d565b91505b6001600160a01b038416301461090b576001600160a01b03841633146108e05760405162461bcd60e51b81526004016106d89061499f565b61090b847f000000000000000000000000000000000000000000000000000000000000000084612b59565b61095f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084612bf5565b6040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb0906109c7908690600401614acf565b602060405180830381600087803b1580156109e157600080fd5b505af11580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1991906141cd565b90506001600160a01b0384163014610a5f57610a5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b610a68826129c2565b15610a7757610a778282612b3a565b5050505050565b610a87826129c2565b15610a9857610a9582612a0d565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610ae7919061444e565b6020604051808303818588803b158015610b0057600080fd5b505af1158015610b14573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b3991906141cd565b90506001600160a01b038416301461066d5761066d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b33610b8d60208701876137e9565b6001600160a01b03161480610bb6575030610bab60208701876137e9565b6001600160a01b0316145b610bd25760405162461bcd60e51b81526004016106d89061499f565b610bdf86608001516129c2565b15610bf757610bf18660800151612a0d565b60808701525b6000610c016118b9565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610c339493929190614a44565b6020604051808303818588803b158015610c4c57600080fd5b505af1158015610c60573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c8591906141cd565b9050610c90826129c2565b15610c9f57610c9f8282612b3a565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610d149087908790339060040161464c565b602060405180830381600087803b158015610d2e57600080fd5b505af1158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906141cd565b9050610676826129c2565b610d7a836129c2565b15610d8b57610d8883612a0d565b92505b600082610e0a57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610dcd57600080fd5b505af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190613805565b610e7d565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d9190613805565b90506001600160a01b0386163014610ec2576001600160a01b0386163314610eb75760405162461bcd60e51b81526004016106d89061499f565b610ec2868286612b59565b610ed66001600160a01b0382168886612bf5565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790610f24908990899086908a90600401614620565b602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7691906141cd565b9050610f81836129c2565b15610f9057610f908382612b3a565b5050505050505050565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb078752610fc482612a0d565b604051610fd19190614acf565b60405180910390a150565b610fe5826129c2565b15610ff657610ff382612a0d565b91505b6001600160a01b0384163014611039576001600160a01b038416331461102e5760405162461bcd60e51b81526004016106d89061499f565b611039848684612b59565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e9061108390879087906004016145e4565b602060405180830381600087803b15801561109d57600080fd5b505af11580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d591906141cd565b90506110e0826129c2565b156110ef576110ef8282612b3a565b505050505050565b611100816129c2565b156111115761110e81612a0d565b90505b6001600160a01b0383163014611154576001600160a01b03831633146111495760405162461bcd60e51b81526004016106d89061499f565b611154838583612b59565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d90611199908490600401614acf565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506001600160a01b038216301461051c576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561121657600080fd5b505afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190613805565b9050610a776001600160a01b0382168484612ab7565b61126d826129c2565b1561127e5761127b82612a0d565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f19190613805565b90506001600160a01b0385163014611336576001600160a01b038516331461132b5760405162461bcd60e51b81526004016106d89061499f565b611336858285612b59565b61134a6001600160a01b0382168785612bf5565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906113949087908990600401614ad8565b602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e691906141cd565b90506113f1836129c2565b15610c9f57610c9f8382612b3a565b611409836129c2565b1561141a5761141783612a0d565b92505b6001600160a01b038516301461145d576001600160a01b03851633146114525760405162461bcd60e51b81526004016106d89061499f565b61145d858785612b59565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906114a9908890889088906004016145fd565b6040805180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614206565b915050610c90826129c2565b61150f816129c2565b156115205761151d81612a0d565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561155b57600080fd5b505afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190613805565b90506001600160a01b03841630146115d8576001600160a01b03841633146115cd5760405162461bcd60e51b81526004016106d89061499f565b6115d8848284612b59565b6115ec6001600160a01b0382168684612bf5565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f65906116339085908790600401614ad8565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806116a5575082155b6116c15760405162461bcd60e51b81526004016106d8906149d6565b606063fa6e671d60e01b3386866040516024016116e093929190614462565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161174f92869186910161441b565b60408051601f1981840301815291905290506110ef6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682612cdd565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906118059030908a908a908a908a908a908a90600401614584565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf876118576118b9565b88888888886040518863ffffffff1660e01b815260040161187e9796959493929190614543565b600060405180830381600087803b15801561189857600080fd5b505af11580156118ac573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0385163314806118fc57506001600160a01b03851630145b6119185760405162461bcd60e51b81526004016106d89061499f565b600061192388612d57565b90506000611930836129c2565b61193b5760006119d0565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a082319061198090899060040161444e565b60206040518083038186803b15801561199857600080fd5b505afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d091906141cd565b90506119e0888660400151612d5d565b60408601526119ed6118b9565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611a1f94939291906147f0565b6000604051808303818588803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b5050505050611a5a836129c2565b15611661576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611aa7908a9060040161444e565b60206040518083038186803b158015611abf57600080fd5b505afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af791906141cd565b9050611833846108728385612d8b565b876001600160a01b0316638fcbaf0c88611b1f6118b9565b8989898989896040518963ffffffff1660e01b8152600401611b489897969594939291906144fa565b600060405180830381600087803b158015611b6257600080fd5b505af1158015611b76573d6000803e3d6000fd5b505050505050505050505050565b611b8d826129c2565b15611b9e57611b9b82612a0d565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bd957600080fd5b505afa158015611bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c119190613805565b90506001600160a01b0385163014611c56576001600160a01b0385163314611c4b5760405162461bcd60e51b81526004016106d89061499f565b611c56858285612b59565b611c6a6001600160a01b0382168785612bf5565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e29061139490889088906004016145e4565b611cbd816129c2565b15611cce57611ccb81612a0d565b90505b611cea611cd96118b9565b6001600160a01b0384169083612bf5565b5050565b611cea8282612b3a565b611d01826129c2565b15611d1257611d0f82612a0d565b91505b6001600160a01b0384163014611d55576001600160a01b0384163314611d4a5760405162461bcd60e51b81526004016106d89061499f565b611d55848684612b59565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9057600080fd5b505afa158015611da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc89190613805565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d90611e10908690600401614acf565b600060405180830381600087803b158015611e2a57600080fd5b505af1158015611e3e573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a0823190611e8a90309060040161444e565b60206040518083038186803b158015611ea257600080fd5b505afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda91906141cd565b9050611ef06001600160a01b0383168683612ab7565b6113f1836129c2565b6001600160a01b038516331480611f1857506001600160a01b03851630145b611f345760405162461bcd60e51b81526004016106d89061499f565b60608167ffffffffffffffff81118015611f4d57600080fd5b50604051908082528060200260200182016040528015611f77578160200160208202803683370190505b50905060608267ffffffffffffffff81118015611f9357600080fd5b50604051908082528060200260200182016040528015611fbd578160200160208202803683370190505b50905060005b8381101561212d57611fda8585838181106107fd57fe5b611ff65760405162461bcd60e51b81526004016106d890614a0d565b855160009086868481811061200757fe5b905060400201600001358151811061201b57fe5b602002602001015190508660600151156120695761203881612da1565b84838151811061204457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612124565b61207281612da4565b6120ff5761207f81612da1565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016120aa919061444e565b60206040518083038186803b1580156120c257600080fd5b505afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa91906141cd565b61210b565b876001600160a01b0316315b83838151811061211757fe5b6020026020010181815250505b50600101611fc3565b508460600151156121c4576121406118b9565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b815260040161216d929190614486565b60006040518083038186803b15801561218557600080fd5b505afa158015612199573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c19190810190613ab7565b90505b6121d2888660400151612db1565b60408601526121df6118b9565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161221094939291906147f0565b600060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561225d57600080fd5b50604051908082528060200260200182016040528015612287578160200160208202803683370190505b5090508560600151156123245761229c6118b9565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b81526004016122c9929190614486565b60006040518083038186803b1580156122e157600080fd5b505afa1580156122f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261231d9190810190613ab7565b9050612422565b60005b8481101561242057865160009087878481811061234057fe5b905060400201600001358151811061235457fe5b6020026020010151905061236781612da4565b6123f45761237481612da1565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040161239f919061444e565b60206040518083038186803b1580156123b757600080fd5b505afa1580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef91906141cd565b612400565b886001600160a01b0316315b83838151811061240c57fe5b602090810291909101015250600101612327565b505b60005b848110156118ac5761247f86868381811061243c57fe5b9050604002016020013561087285848151811061245557fe5b602002602001015185858151811061246957fe5b6020026020010151612d8b90919063ffffffff16565b600101612425565b612490826129c2565b156124a15761249e82612a0d565b91505b6001600160a01b0384163014612504576001600160a01b03841633146124d95760405162461bcd60e51b81526004016106d89061499f565b612504847f000000000000000000000000000000000000000000000000000000000000000084612b59565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e9061256c908690600401614acf565b602060405180830381600087803b15801561258657600080fd5b505af115801561259a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125be91906141cd565b90506001600160a01b0384163014610a5f57610a5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b61260d826129c2565b1561261e5761261b82612a0d565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561265957600080fd5b505afa15801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190613805565b90506001600160a01b03851630146126d6576001600160a01b03851633146126cb5760405162461bcd60e51b81526004016106d89061499f565b6126d6858285612b59565b6126ea6001600160a01b0382168785612bf5565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f259061272f908690600401614acf565b600060405180830381600087803b15801561274957600080fd5b505af115801561275d573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a08231906127a990309060040161444e565b60206040518083038186803b1580156127c157600080fd5b505afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f991906141cd565b9050611ef06001600160a01b0388168683612ab7565b60005b828110156128a3573384848381811061282757fe5b905060a00201606001602081019061283f91906137e9565b6001600160a01b0316148061287f57503084848381811061285c57fe5b905060a00201606001602081019061287491906137e9565b6001600160a01b0316145b61289b5760405162461bcd60e51b81526004016106d89061499f565b600101612812565b506128ac6118b9565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b81526004016128da9291906146ac565b6000604051808303818588803b1580156128f357600080fd5b505af1158015610f90573d6000803e3d6000fd5b612910826129c2565b156129215761291e82612a0d565b91505b6001600160a01b0384163014612964576001600160a01b03841633146129595760405162461bcd60e51b81526004016106d89061499f565b612964848684612b59565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba0876529061108390869088903090600401614aef565b60006129bb82612dd8565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000612a1b84612dd8565b91509150612a2884612def565b156129bb57600082559392505050565b612a47814710156101a3612e36565b6000826001600160a01b031682604051612a6090612da1565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b50509050612ab2816101a4612e36565b505050565b612ab28363a9059cbb60e01b8484604051602401612ad69291906145e4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612e44565b6000612b4583612ee4565b919091555050565b60ff81901d9081180390565b80612b6357612ab2565b604080516001808252818301909252606091602080830190803683370190505090508281600081518110612b9357fe5b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508281600081518110612bde57fe5b602002602001018181525050610a77858383612f42565b8015801590612c9957506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e90612c4690309086906004016144e0565b60206040518083038186803b158015612c5e57600080fd5b505afa158015612c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9691906141cd565b15155b15612cbe57612cbe8363095ea7b360e01b846000604051602401612ad69291906145c8565b612ab28363095ea7b360e01b8484604051602401612ad69291906145e4565b606060006060846001600160a01b031684604051612cfb91906143ff565b6000604051808303816000865af19150503d8060008114612d38576040519150601f19603f3d011682016040523d82523d6000602084013e612d3d565b606091505b5091509150612d4c828261307c565b925050505b92915050565b60601c90565b60606000838015612d6a57fe5b1415612d8057612d79826130a6565b9050612d51565b612d516101366130e3565b6000612d9b838311156001612e36565b50900390565b90565b6001600160a01b03161590565b60606000838015612dbe57fe5b1415612dcd57612d7982613110565b612d516101506130e3565b600080612de483612ee4565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b81611cea57611cea816130e3565b60006060836001600160a01b031683604051612e6091906143ff565b6000604051808303816000865af19150503d8060008114612e9d576040519150601f19603f3d011682016040523d82523d6000602084013e612ea2565b606091505b50915091506000821415612eba573d6000803e3d6000fd5b61051c815160001480612edc575081806020019051810190612edc9190613af2565b6101a2612e36565b60006001612ef183613159565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001612f23929190614440565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015612f5c57600080fd5b50604051908082528060200260200182016040528015612f9657816020015b612f836133be565b815260200190600190039081612f7b5790505b50905060005b835181101561302e576040805160a081019091528060038152602001858381518110612fc457fe5b60200260200101516001600160a01b03168152602001848381518110612fe657fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b031681525082828151811061301b57fe5b6020908102919091010152600101612f9c565b506130376118b9565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613062919061475a565b600060405180830381600087803b1580156128f357600080fd5b6060821561308b575080612d51565b81511561309b5781518083602001fd5b612d516101ae6130e3565b606060006130b38361317c565b905060018160038111156130c357fe5b14156130da576130d283613192565b915050612a08565b82915050612a08565b61310d817f42414c0000000000000000000000000000000000000000000000000000000000613241565b50565b6060600061311d836132a2565b9050600081600281111561312d57fe5b141561313c576130d2836132b8565b600181600281111561314a57fe5b14156130da576130d28361331b565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600081806020019051810190612d519190613f57565b60608060006131a08461336e565b915091506000805b83518110156132065760008482815181106131bf57fe5b602002602001015190506131d2816129c2565b156131fd576131e081612a0d565b8583815181106131ec57fe5b602002602001018181525050600192505b506001016131a8565b50806132125784613238565b6001838360405160200161322893929190614864565b6040516020818303038152906040525b95945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600081806020019051810190612d519190613edb565b60606000806132c684613391565b915091506132d3826129c2565b15613311576132e182612a0d565b9150600082826040516020016132f993929190614843565b60405160208183030381529060405292505050612a08565b8392505050612a08565b60606000613328836133a8565b9050613333816129c2565b156130da5761334181612a0d565b905060018160405160200161335792919061482c565b604051602081830303815290604052915050612a08565b60606000828060200190518101906133869190613f73565b909590945092505050565b600080828060200190518101906133869190613f22565b6000818060200190518101906129bb9190613ef6565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035612d5181614bac565b60008083601f84011261340a578182fd5b50813567ffffffffffffffff811115613421578182fd5b602083019150836020808302850101111561343b57600080fd5b9250929050565b600082601f830112613452578081fd5b813561346561346082614b35565b614b0e565b81815291506020808301908481018184028601820187101561348657600080fd5b60005b848110156134ae57813561349c81614bac565b84529282019290820190600101613489565b505050505092915050565b600082601f8301126134c9578081fd5b81356134d761346082614b35565b818152915060208083019084810160005b848110156134ae578135870160a080601f19838c0301121561350957600080fd5b61351281614b0e565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561355457600080fd5b6135628c8885870101613684565b908201528652505092820192908201906001016134e8565b60008083601f84011261358b578182fd5b50813567ffffffffffffffff8111156135a2578182fd5b60208301915083602060408302850101111561343b57600080fd5b600082601f8301126135cd578081fd5b81356135db61346082614b35565b8181529150602080830190848101818402860182018710156135fc57600080fd5b60005b848110156134ae578135845292820192908201906001016135ff565b600082601f83011261362b578081fd5b815161363961346082614b35565b81815291506020808301908481018184028601820187101561365a57600080fd5b60005b848110156134ae5781518452928201929082019060010161365d565b8035612d5181614bc1565b600082601f830112613694578081fd5b813567ffffffffffffffff8111156136aa578182fd5b6136bd6020601f19601f84011601614b0e565b91508082528360208285010111156136d457600080fd5b8060208401602084013760009082016020015292915050565b805160038110612d5157600080fd5b803560018110612d5157600080fd5b803560028110612d5157600080fd5b60006080828403121561372b578081fd5b6137356080614b0e565b9050813567ffffffffffffffff8082111561374f57600080fd5b61375b85838601613442565b8352602084013591508082111561377157600080fd5b61377d858386016135bd565b6020840152604084013591508082111561379657600080fd5b506137a384828501613684565b6040830152506137b68360608401613679565b606082015292915050565b6000608082840312156137d2578081fd5b50919050565b803560ff81168114612d5157600080fd5b6000602082840312156137fa578081fd5b81356129bb81614bac565b600060208284031215613816578081fd5b81516129bb81614bac565b60008060008060808587031215613836578283fd5b843561384181614bac565b9350602085013561385181614bac565b93969395505050506040820135916060013590565b6000806000806060858703121561387b578182fd5b843561388681614bac565b9350602085013561389681614bc1565b9250604085013567ffffffffffffffff808211156138b2578384fd5b818701915087601f8301126138c5578384fd5b8135818111156138d3578485fd5b8860208285010111156138e4578485fd5b95989497505060200194505050565b600080600060608486031215613907578081fd5b833561391281614bac565b95602085013595506040909401359392505050565b60008060006040848603121561393b578081fd5b833567ffffffffffffffff811115613951578182fd5b61395d868287016133f9565b909790965060209590950135949350505050565b60008060208385031215613983578182fd5b823567ffffffffffffffff811115613999578283fd5b6139a5858286016133f9565b90969095509350505050565b600060208083850312156139c3578182fd5b825167ffffffffffffffff8111156139d9578283fd5b8301601f810185136139e9578283fd5b80516139f761346082614b35565b8181528381019083850185840285018601891015613a13578687fd5b8694505b83851015613a35578051835260019490940193918501918501613a17565b50979650505050505050565b600080600060408486031215613a55578081fd5b833567ffffffffffffffff80821115613a6c578283fd5b818601915086601f830112613a7f578283fd5b813581811115613a8d578384fd5b87602060a083028501011115613aa1578384fd5b6020928301989097509590910135949350505050565b600060208284031215613ac8578081fd5b815167ffffffffffffffff811115613ade578182fd5b613aea8482850161361b565b949350505050565b600060208284031215613b03578081fd5b81516129bb81614bc1565b60008060008060008060c08789031215613b26578384fd5b8635613b3181614bc1565b95506020870135613b4181614bac565b945060408701359350613b5788606089016137d8565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613b8b578485fd5b87359650613b9c8960208a016136fc565b95506040880135613bac81614bac565b94506060880135613bbc81614bac565b9350608088013567ffffffffffffffff80821115613bd8578283fd5b613be48b838c0161371a565b945060a08a0135915080821115613bf9578283fd5b50613c068a828b0161357a565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613c33578081fd5b87359650613c448960208a016136fc565b95506040880135613c5481614bac565b94506060880135613c6481614bac565b9350608088013567ffffffffffffffff811115613c7f578182fd5b613c8b8a828b0161371a565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215613cc4578182fd5b8835613ccf81614bac565b97506020890135613cdf81614bac565b965060408901359550606089013594506080890135613cfd81614bc1565b9350613d0c8a60a08b016137d8565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215613d43578081fd5b8735613d4e81614bac565b96506020880135613d5e81614bac565b95506040880135945060608801359350613d7b8960808a016137d8565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613da9578182fd5b8235613db481614bac565b946020939093013593505050565b600080600080600060a08688031215613dd9578283fd5b8535613de481614bac565b94506020860135613df481614bac565b93506040860135613e0481614bac565b94979396509394606081013594506080013592915050565b60008060008060808587031215613e31578182fd5b8435613e3c81614bac565b93506020850135613e4c81614bac565b92506040850135613e5c81614bac565b9396929550929360600135925050565b60008060008060008060c08789031215613e84578384fd5b8635613e8f81614bac565b95506020870135613e9f81614bac565b94506040870135613eaf81614bac565b9350606087013592506080870135613ec681614bc1565b8092505060a087013590509295509295509295565b600060208284031215613eec578081fd5b6129bb83836136ed565b60008060408385031215613f08578182fd5b613f1284846136ed565b9150602083015190509250929050565b600080600060608486031215613f36578081fd5b613f4085856136ed565b925060208401519150604084015190509250925092565b600060208284031215613f68578081fd5b81516129bb81614bcf565b600080600060608486031215613f87578081fd5b8351613f9281614bcf565b602085015190935067ffffffffffffffff811115613fae578182fd5b613fba8682870161361b565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215613fec578485fd5b613ff68d8d61370b565b9a5067ffffffffffffffff8060208e01351115614011578586fd5b6140218e60208f01358f016134b9565b9a508060408e01351115614033578586fd5b6140438e60408f01358f016133f9565b909a5098506140558e60608f016137c1565b97508060e08e01351115614067578586fd5b6140778e60e08f01358f016133f9565b90975095506101008d013594506101208d013593506101408d013581101561409d578283fd5b506140af8d6101408e01358e0161357a565b81935080925050509295989b509295989b9093969950565b60008060008060008061012087890312156140e0578384fd5b863567ffffffffffffffff808211156140f7578586fd5b9088019060c0828b03121561410a578586fd5b61411460c0614b0e565b823581526141258b6020850161370b565b6020820152604083013561413881614bac565b604082015261414a8b606085016133ee565b60608201526080830135608082015260a08301358281111561416a578788fd5b6141768c828601613684565b60a08301525080985050505061418f88602089016137c1565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156141c6578081fd5b5035919050565b6000602082840312156141de578081fd5b5051919050565b600080604083850312156141f7578182fd5b50508035926020909101359150565b60008060408385031215614218578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561427357813561425881614bac565b6001600160a01b031687529582019590820190600101614245565b509495945050505050565b60008284526020808501945082825b858110156142735781358752958201959082019060010161428d565b6000815180845260208085019450808401835b83811015614273578151875295820195908201906001016142bc565b15159052565b600081518084526142f6816020860160208601614b62565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561434f5783516001600160a01b03168352928401929184019160010161432a565b50508285015191508581038387015261436881836142a9565b925050506040830151848203604086015261438382826142de565b915050606083015161439860608601826142d8565b509392505050565b80356143ab81614bac565b6001600160a01b0390811683526020820135906143c782614bc1565b90151560208401526040820135906143de82614bac565b16604083015260608101356143f281614bc1565b8015156060840152505050565b60008251614411818460208701614b62565b9190910192915050565b6000845161442d818460208901614b62565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156144d25785518516835294830194918301916001016144b4565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561468f576020833561467481614bac565b6001600160a01b03168352928301929091019060010161465f565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b8781101561474d5781356146d581614bcf565b6146de81614b98565b8352818501356146ed81614bac565b6001600160a01b0316838601528184013584840152606061471081840184614b55565b61471c82860182614229565b5050608061472c81840184614b55565b61473882860182614229565b505060a09283019291909101906001016146c2565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156147e3578151805161478c81614b98565b8552808701516001600160a01b03168786015285810151868601526060808201516147b982880182614229565b5050608090810151906147ce86820183614229565b505060a0939093019290850190600101614777565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614822608083018461430a565b9695505050505050565b6040810161483984614b8e565b9281526020015290565b6060810161485085614b8e565b938152602081019290925260409091015290565b600061486f85614b98565b8482526060602083015261488660608301856142a9565b9050826040830152949350505050565b60006101208083016148a78c614ba2565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b8281101561494e578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a09187018290529061493a818801836142de565b9786019796505050908301906001016148ce565b505050508381036040850152614965818a8c614236565b91505061497560608401886143a0565b82810360e084015261498881868861427e565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614a5f81614ba2565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614aad6101a08401826142de565b915050614abd60208301866143a0565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614b2d57600080fd5b604052919050565b600067ffffffffffffffff821115614b4b578081fd5b5060209081020190565b600082356129bb81614bac565b60005b83811015614b7d578181015183820152602001614b65565b8381111561051c5750506000910152565b6003811061310d57fe5b6004811061310d57fe5b6002811061310d57fe5b6001600160a01b038116811461310d57600080fd5b801515811461310d57600080fd5b6004811061310d57600080fdfea2646970667358221220f31b3f5824a536399d37890ed168c08dad110bfe76feeb787541ddeb0b46782d64736f6c6343000701003360c060405234801561001057600080fd5b5060405161078738038061078783398101604081905261002f91610052565b60016000556001600160601b0319606092831b8116608052911b1660a0526100a3565b60008060408385031215610064578182fd5b825161006f8161008b565b60208401519092506100808161008b565b809150509250929050565b6001600160a01b03811681146100a057600080fd5b50565b60805160601c60a05160601c6106b36100d46000398060fc528061020f5250806058528061012052506106b36000f3fe6080604052600436106100385760003560e01c80637678922e146100885780638d928af8146100b3578063ac9650d8146100c857610083565b36610083576100813373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102066100e8565b005b600080fd5b34801561009457600080fd5b5061009d6100fa565b6040516100aa919061050e565b60405180910390f35b3480156100bf57600080fd5b5061009d61011e565b6100db6100d6366004610480565b610142565b6040516100aa919061052f565b816100f6576100f68161026e565b5050565b7f000000000000000000000000000000000000000000000000000000000000000090565b7f000000000000000000000000000000000000000000000000000000000000000090565b606061014c61029b565b8167ffffffffffffffff8111801561016357600080fd5b5060405190808252806020026020018201604052801561019757816020015b60608152602001906001900390816101825790505b50905060005b82811015610257576102388484838181106101b457fe5b90506020028101906101c691906105e3565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016929150506102b4565b82828151811061024457fe5b602090810291909101015260010161019d565b50610260610337565b610268610348565b92915050565b610298817f42414c000000000000000000000000000000000000000000000000000000000061034f565b50565b6102ad600260005414156101906100e8565b6002600055565b6060600060608473ffffffffffffffffffffffffffffffffffffffff16846040516102df91906104ef565b600060405180830381855af49150503d806000811461031a576040519150601f19603f3d011682016040523d82523d6000602084013e61031f565b606091505b509150915061032e82826103ca565b95945050505050565b4780156102985761029833826103f4565b6001600055565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b606082156103d9575080610268565b8151156103e95781518083602001fd5b6102686101ae61026e565b610403814710156101a36100e8565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516104299061050b565b60006040518083038185875af1925050503d8060008114610466576040519150601f19603f3d011682016040523d82523d6000602084013e61046b565b606091505b5050905061047b816101a46100e8565b505050565b60008060208385031215610492578182fd5b823567ffffffffffffffff808211156104a9578384fd5b818501915085601f8301126104bc578384fd5b8135818111156104ca578485fd5b86602080830285010111156104dd578485fd5b60209290920196919550909350505050565b6000825161050181846020870161064d565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156105d6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845281518051808752610599818989018a850161064d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01695909501860194509285019290850190600101610554565b5092979650505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610617578283fd5b83018035915067ffffffffffffffff821115610631578283fd5b60200191503681900382131561064657600080fd5b9250929050565b60005b83811015610668578181015183820152602001610650565b83811115610677576000848401525b5050505056fea2646970667358221220ae2986d189807b7f562b5667a0dc32043a64b5fc57d1cf73ab6628ca3f8dd6a864736f6c63430007010033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE PUSH32 0xAE1DC54057AF8E8E5CE068CDD4383149C7EFCB30E8FB95B592EE1594367FB509 PUSH1 0xE0 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x56F6 CODESIZE SUB DUP1 PUSH3 0x56F6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x59 SWAP2 PUSH3 0x20F JUMP JUMPDEST DUP3 DUP3 DUP3 DUP2 DUP2 DUP5 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAD5C4648 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD4 SWAP2 SWAP1 PUSH3 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP1 DUP3 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 ADDRESS SWAP1 PUSH3 0x101 SWAP1 PUSH3 0x201 JUMP JUMPDEST PUSH3 0x10E SWAP3 SWAP2 SWAP1 PUSH3 0x288 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x12B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP3 SWAP1 SHL SWAP1 SWAP2 AND PUSH2 0x100 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH3 0x161 JUMPI PUSH1 0x0 PUSH3 0x1D8 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC1FE3E48 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x19D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1B2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1D8 SWAP2 SWAP1 PUSH3 0x262 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP2 SWAP1 SHL AND PUSH2 0x140 MSTORE POP PUSH3 0x2BB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x787 DUP1 PUSH3 0x4F6F DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x224 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x231 DUP2 PUSH3 0x2A2 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x244 DUP2 PUSH3 0x2A2 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x257 DUP2 PUSH3 0x2A2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x274 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x281 DUP2 PUSH3 0x2A2 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x2B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x4C12 PUSH3 0x35D PUSH1 0x0 CODECOPY DUP1 PUSH2 0x56F MSTORE DUP1 PUSH2 0x603 MSTORE DUP1 PUSH2 0x646 MSTORE DUP1 PUSH2 0x93A MSTORE DUP1 PUSH2 0x992 MSTORE DUP1 PUSH2 0xA38 MSTORE DUP1 PUSH2 0x24DF MSTORE DUP1 PUSH2 0x2537 MSTORE POP DUP1 PUSH2 0x8E6 MSTORE DUP1 PUSH2 0x918 MSTORE DUP1 PUSH2 0xA9C MSTORE DUP1 PUSH2 0xB58 MSTORE DUP1 PUSH2 0x25DD MSTORE POP DUP1 PUSH2 0xCDB MSTORE DUP1 PUSH2 0x17C4 MSTORE POP DUP1 PUSH2 0x2EF3 MSTORE POP DUP1 PUSH2 0x166E MSTORE POP DUP1 PUSH2 0x176E MSTORE DUP1 PUSH2 0x18BB MSTORE POP POP PUSH2 0x4C12 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x45A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xC518E531 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x40E JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x8FE4624F GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x3A8 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x35A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2F6 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x2AA JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x251 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x205 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F0 PUSH2 0x1EB CALLDATASIZE PUSH1 0x4 PUSH2 0x3971 JUMP JUMPDEST PUSH2 0x487 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F0 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0x522 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCB JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x3821 JUMP JUMPDEST PUSH2 0x88E JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x40C7 JUMP JUMPDEST PUSH2 0xB7F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x3927 JUMP JUMPDEST PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x272 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E6C JUMP JUMPDEST PUSH2 0xD71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x41B5 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0xFDC JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E1C JUMP JUMPDEST PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3E6C JUMP JUMPDEST PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E1C JUMP JUMPDEST PUSH2 0x1506 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x166C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x3866 JUMP JUMPDEST PUSH2 0x1690 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0E JUMP JUMPDEST PUSH2 0x1794 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x183F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x18B9 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C19 JUMP JUMPDEST PUSH2 0x18DD JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CA8 JUMP JUMPDEST PUSH2 0x1B07 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x1B84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D97 JUMP JUMPDEST PUSH2 0x1CB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E5 JUMP JUMPDEST PUSH2 0x1CEE JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x1CF8 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x409 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B71 JUMP JUMPDEST PUSH2 0x1EF9 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x3821 JUMP JUMPDEST PUSH2 0x2487 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x2604 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x442 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A41 JUMP JUMPDEST PUSH2 0x280F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x2907 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47A PUSH2 0x475 CALLDATASIZE PUSH1 0x4 PUSH2 0x41B5 JUMP JUMPDEST PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x49F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4B4 SWAP2 SWAP1 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4DF SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x50D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x48B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x52B DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x53C JUMPI PUSH2 0x539 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x5A4 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5F4 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x629 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x2A38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x66D JUMPI PUSH2 0x66D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x676 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x51C JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST CALLER PUSH2 0x693 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x6BC JUMPI POP ADDRESS PUSH2 0x6B1 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x746 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6FB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x712 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x73D JUMPI PUSH2 0x720 DUP2 PUSH2 0x2A0D JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x72C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x6E4 JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x751 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x78B SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x7E1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x39B1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH2 0x80C DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x7FD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x828 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x4A0D JUMP JUMPDEST PUSH2 0x877 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x837 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x872 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x851 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x865 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2B4D JUMP JUMPDEST PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x7E6 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x897 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x8A8 JUMPI PUSH2 0x8A5 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x90B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x8E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x90B DUP5 PUSH32 0x0 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x95F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH32 0x0 DUP5 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0x9C7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA5F JUMPI PUSH2 0xA5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0xA68 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xA77 JUMPI PUSH2 0xA77 DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA87 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xA98 JUMPI PUSH2 0xA95 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB39 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x66D JUMPI PUSH2 0x66D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST CALLER PUSH2 0xB8D PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xBB6 JUMPI POP ADDRESS PUSH2 0xBAB PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xBD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0xBDF DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xBF7 JUMPI PUSH2 0xBF1 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2A0D JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xC01 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC33 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC85 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0xC90 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xC9F JUMPI PUSH2 0xC9F DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xD14 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x464C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD66 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x676 DUP3 PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0xD7A DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xD8B JUMPI PUSH2 0xD88 DUP4 PUSH2 0x2A0D JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE0A JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE05 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST PUSH2 0xE7D JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE7D SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0xEC2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0xEB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0xEC2 DUP7 DUP3 DUP7 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0xED6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0xF24 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4620 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF76 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0xF81 DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xF90 JUMPI PUSH2 0xF90 DUP4 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0xFC4 DUP3 PUSH2 0x2A0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFD1 SWAP2 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xFE5 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xFF6 JUMPI PUSH2 0xFF3 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1039 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x102E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1039 DUP5 DUP7 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0x1083 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x45E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10D5 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x10E0 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1100 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1111 JUMPI PUSH2 0x110E DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x1154 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x1149 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1154 DUP4 DUP6 DUP4 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1199 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x51C JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x124E SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH2 0xA77 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x126D DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x127E JUMPI PUSH2 0x127B DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12F1 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1336 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x132B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1336 DUP6 DUP3 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x134A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1394 SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4AD8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13E6 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x13F1 DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xC9F JUMPI PUSH2 0xC9F DUP4 DUP3 PUSH2 0x2B3A JUMP JUMPDEST PUSH2 0x1409 DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x141A JUMPI PUSH2 0x1417 DUP4 PUSH2 0x2A0D JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x145D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x145D DUP6 DUP8 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x14A9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x45FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14FA SWAP2 SWAP1 PUSH2 0x4206 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC90 DUP3 PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x150F DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1520 JUMPI PUSH2 0x151D DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x156F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1593 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x15D8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x15CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x15D8 DUP5 DUP3 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x15EC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP7 DUP5 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1633 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4AD8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x164D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1661 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x16A5 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x16C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x49D6 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x16E0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x174F SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x441B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x10EF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x2CDD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x1805 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4584 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x181F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1833 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x1857 PUSH2 0x18B9 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x187E SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4543 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x18FC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1918 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1923 DUP9 PUSH2 0x2D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1930 DUP4 PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x193B JUMPI PUSH1 0x0 PUSH2 0x19D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1980 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19D0 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x19E0 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x19ED PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A1F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1A5A DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1661 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1AA7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AF7 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1833 DUP5 PUSH2 0x872 DUP4 DUP6 PUSH2 0x2D8B JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1B1F PUSH2 0x18B9 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B48 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x44FA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B8D DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1B9E JUMPI PUSH2 0x1B9B DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C11 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1C56 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1C4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1C56 DUP6 DUP3 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x1C6A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x1394 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x45E4 JUMP JUMPDEST PUSH2 0x1CBD DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1CCE JUMPI PUSH2 0x1CCB DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1CEA PUSH2 0x1CD9 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x2BF5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1CEA DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST PUSH2 0x1D01 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1D12 JUMPI PUSH2 0x1D0F DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1D55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1D4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1D55 DUP5 DUP7 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DC8 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1E10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1E8A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EDA SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1EF0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP7 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x13F1 DUP4 PUSH2 0x29C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1F18 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1F34 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1F4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F77 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1F93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1FBD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x212D JUMPI PUSH2 0x1FDA DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x7FD JUMPI INVALID JUMPDEST PUSH2 0x1FF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x4A0D JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2007 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x201B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2069 JUMPI PUSH2 0x2038 DUP2 PUSH2 0x2DA1 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2044 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2124 JUMP JUMPDEST PUSH2 0x2072 DUP2 PUSH2 0x2DA4 JUMP JUMPDEST PUSH2 0x20FF JUMPI PUSH2 0x207F DUP2 PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20AA SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20FA SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH2 0x210B JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2117 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1FC3 JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x21C4 JUMPI PUSH2 0x2140 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216D SWAP3 SWAP2 SWAP1 PUSH2 0x4486 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x21C1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x21D2 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2DB1 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x21DF PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2210 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x222A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x225D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2287 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2324 JUMPI PUSH2 0x229C PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22C9 SWAP3 SWAP2 SWAP1 PUSH2 0x4486 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x231D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2420 JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x2340 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2354 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2367 DUP2 PUSH2 0x2DA4 JUMP JUMPDEST PUSH2 0x23F4 JUMPI PUSH2 0x2374 DUP2 PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x239F SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23EF SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH2 0x2400 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x240C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x2327 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x18AC JUMPI PUSH2 0x247F DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x243C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x872 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2455 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2469 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2D8B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2425 JUMP JUMPDEST PUSH2 0x2490 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x24A1 JUMPI PUSH2 0x249E DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2504 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x24D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x2504 DUP5 PUSH32 0x0 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x256C SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x259A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25BE SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA5F JUMPI PUSH2 0xA5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x260D DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x261E JUMPI PUSH2 0x261B DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x266D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2691 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x26D6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x26CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x26D6 DUP6 DUP3 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x26EA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x272F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x275D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x27A9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27F9 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1EF0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP7 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x28A3 JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2827 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x283F SWAP2 SWAP1 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x287F JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x285C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2874 SWAP2 SWAP1 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x289B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2812 JUMP JUMPDEST POP PUSH2 0x28AC PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28DA SWAP3 SWAP2 SWAP1 PUSH2 0x46AC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2910 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x2921 JUMPI PUSH2 0x291E DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2964 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2959 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x2964 DUP5 DUP7 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0x1083 SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4AEF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29BB DUP3 PUSH2 0x2DD8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2A1B DUP5 PUSH2 0x2DD8 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2A28 DUP5 PUSH2 0x2DEF JUMP JUMPDEST ISZERO PUSH2 0x29BB JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2A47 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x2E36 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A60 SWAP1 PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x2AB2 DUP2 PUSH2 0x1A4 PUSH2 0x2E36 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2AB2 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x45E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2E44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B45 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2B63 JUMPI PUSH2 0x2AB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B93 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2BDE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xA77 DUP6 DUP4 DUP4 PUSH2 0x2F42 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2C99 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x2C46 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x44E0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C96 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2CBE JUMPI PUSH2 0x2CBE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x2AB2 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x45E4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2CFB SWAP2 SWAP1 PUSH2 0x43FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D38 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D3D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2D4C DUP3 DUP3 PUSH2 0x307C JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2D6A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2D80 JUMPI PUSH2 0x2D79 DUP3 PUSH2 0x30A6 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x2D51 PUSH2 0x136 PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D9B DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x2E36 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2DBE JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2DCD JUMPI PUSH2 0x2D79 DUP3 PUSH2 0x3110 JUMP JUMPDEST PUSH2 0x2D51 PUSH2 0x150 PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DE4 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1CEA JUMPI PUSH2 0x1CEA DUP2 PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2E60 SWAP2 SWAP1 PUSH2 0x43FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x2EBA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x51C DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x2EDC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2EDC SWAP2 SWAP1 PUSH2 0x3AF2 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2E36 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x2EF1 DUP4 PUSH2 0x3159 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2F23 SWAP3 SWAP2 SWAP1 PUSH2 0x4440 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2F5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F96 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2F83 PUSH2 0x33BE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2F7B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x302E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2FC4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2FE6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x301B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2F9C JUMP JUMPDEST POP PUSH2 0x3037 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3062 SWAP2 SWAP1 PUSH2 0x475A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x308B JUMPI POP DUP1 PUSH2 0x2D51 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x309B JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2D51 PUSH2 0x1AE PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x30B3 DUP4 PUSH2 0x317C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30C3 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x30DA JUMPI PUSH2 0x30D2 DUP4 PUSH2 0x3192 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2A08 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x2A08 JUMP JUMPDEST PUSH2 0x310D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3241 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x311D DUP4 PUSH2 0x32A2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x312D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x313C JUMPI PUSH2 0x30D2 DUP4 PUSH2 0x32B8 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x314A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x30DA JUMPI PUSH2 0x30D2 DUP4 PUSH2 0x331B JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D51 SWAP2 SWAP1 PUSH2 0x3F57 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x31A0 DUP5 PUSH2 0x336E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3206 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x31BF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x31D2 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x31FD JUMPI PUSH2 0x31E0 DUP2 PUSH2 0x2A0D JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x31EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x31A8 JUMP JUMPDEST POP DUP1 PUSH2 0x3212 JUMPI DUP5 PUSH2 0x3238 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3228 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4864 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D51 SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x32C6 DUP5 PUSH2 0x3391 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x32D3 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x3311 JUMPI PUSH2 0x32E1 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x32F9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x2A08 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x2A08 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3328 DUP4 PUSH2 0x33A8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3333 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x30DA JUMPI PUSH2 0x3341 DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3357 SWAP3 SWAP2 SWAP1 PUSH2 0x482C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A08 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3386 SWAP2 SWAP1 PUSH2 0x3F73 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3386 SWAP2 SWAP1 PUSH2 0x3F22 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x29BB SWAP2 SWAP1 PUSH2 0x3EF6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2D51 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x340A JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3421 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x343B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3452 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3465 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x4B0E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 CALLDATALOAD PUSH2 0x349C DUP2 PUSH2 0x4BAC JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3489 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x34C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34D7 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3512 DUP2 PUSH2 0x4B0E JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x3554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3562 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x3684 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x34E8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x358B JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35A2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x343B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x35CD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x35DB PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x35FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x35FF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x362B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3639 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x365A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x365D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2D51 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3694 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36AA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36BD PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4B0E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x36D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x372B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3735 PUSH1 0x80 PUSH2 0x4B0E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x374F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x375B DUP6 DUP4 DUP7 ADD PUSH2 0x3442 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x377D DUP6 DUP4 DUP7 ADD PUSH2 0x35BD JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37A3 DUP5 DUP3 DUP6 ADD PUSH2 0x3684 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x37B6 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x3679 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37D2 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29BB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3816 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29BB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3836 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3841 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3851 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x387B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3886 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3896 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x38B2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x38C5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x38D3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x38E4 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3907 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3912 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x393B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3951 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x395D DUP7 DUP3 DUP8 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3983 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3999 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x39A5 DUP6 DUP3 DUP7 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39C3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x39D9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x39E9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x39F7 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3A13 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3A35 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3A17 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3A55 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3A6C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3A7F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3A8D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3AA1 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AC8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3ADE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3AEA DUP5 DUP3 DUP6 ADD PUSH2 0x361B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B03 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29BB DUP2 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3B26 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3B31 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3B41 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3B57 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x37D8 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3B8B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3B9C DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x36FC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3BAC DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3BBC DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3BD8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3BE4 DUP12 DUP4 DUP13 ADD PUSH2 0x371A JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BF9 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3C06 DUP11 DUP3 DUP12 ADD PUSH2 0x357A JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3C33 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3C44 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x36FC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3C54 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3C64 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C7F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3C8B DUP11 DUP3 DUP12 ADD PUSH2 0x371A JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3CC4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x3CCF DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3CDF DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x3CFD DUP2 PUSH2 0x4BC1 JUMP JUMPDEST SWAP4 POP PUSH2 0x3D0C DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x37D8 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3D43 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3D4E DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3D5E DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3D7B DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x37D8 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DA9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DB4 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3DD9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3DE4 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3DF4 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3E04 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E31 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3E3C DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3E4C DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3E5C DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3E84 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3E8F DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3E9F DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x3EAF DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3EC6 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EEC JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x29BB DUP4 DUP4 PUSH2 0x36ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F08 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F12 DUP5 DUP5 PUSH2 0x36ED JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F36 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3F40 DUP6 DUP6 PUSH2 0x36ED JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F68 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29BB DUP2 PUSH2 0x4BCF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F87 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x3F92 DUP2 PUSH2 0x4BCF JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FAE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3FBA DUP7 DUP3 DUP8 ADD PUSH2 0x361B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x3FEC JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x3FF6 DUP14 DUP14 PUSH2 0x370B JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4011 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4021 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x34B9 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4033 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4043 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x4055 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x37C1 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4067 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4077 DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x409D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x40AF DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x357A JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x40E0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x40F7 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x410A JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4114 PUSH1 0xC0 PUSH2 0x4B0E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x4125 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x370B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x4138 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x414A DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x33EE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x416A JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x4176 DUP13 DUP3 DUP7 ADD PUSH2 0x3684 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x418F DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x37C1 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4218 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4273 JUMPI DUP2 CALLDATALOAD PUSH2 0x4258 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4245 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4273 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x428D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4273 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42BC JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x42F6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4B62 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x434F JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x432A JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x4368 DUP2 DUP4 PUSH2 0x42A9 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x4383 DUP3 DUP3 PUSH2 0x42DE JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4398 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x42D8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x43AB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x43C7 DUP3 PUSH2 0x4BC1 JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x43DE DUP3 PUSH2 0x4BAC JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x43F2 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4411 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4B62 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x442D DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4B62 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x44D2 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x44B4 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x468F JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x4674 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x465F JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x474D JUMPI DUP2 CALLDATALOAD PUSH2 0x46D5 DUP2 PUSH2 0x4BCF JUMP JUMPDEST PUSH2 0x46DE DUP2 PUSH2 0x4B98 JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x46ED DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x4710 DUP2 DUP5 ADD DUP5 PUSH2 0x4B55 JUMP JUMPDEST PUSH2 0x471C DUP3 DUP7 ADD DUP3 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x472C DUP2 DUP5 ADD DUP5 PUSH2 0x4B55 JUMP JUMPDEST PUSH2 0x4738 DUP3 DUP7 ADD DUP3 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46C2 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x47E3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x478C DUP2 PUSH2 0x4B98 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x47B9 DUP3 DUP9 ADD DUP3 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x47CE DUP7 DUP3 ADD DUP4 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4777 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4822 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x430A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4839 DUP5 PUSH2 0x4B8E JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4850 DUP6 PUSH2 0x4B8E JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x486F DUP6 PUSH2 0x4B98 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4886 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x42A9 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x48A7 DUP13 PUSH2 0x4BA2 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x494E JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x493A DUP2 DUP9 ADD DUP4 PUSH2 0x42DE JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x48CE JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x4965 DUP2 DUP11 DUP13 PUSH2 0x4236 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4975 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x43A0 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x4988 DUP2 DUP7 DUP9 PUSH2 0x427E JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x4A5F DUP2 PUSH2 0x4BA2 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x4AAD PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x42DE JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4ABD PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x43A0 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4B4B JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x29BB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4B7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B65 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x51C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x310D JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x310D JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x310D JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x310D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x310D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x310D JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN SHL EXTCODEHASH PC 0x24 0xA5 CALLDATASIZE CODECOPY SWAP14 CALLDATACOPY DUP10 0xE 0xD1 PUSH9 0xC08DAD110BFE76FEEB PUSH25 0x7541DDEB0B46782D64736F6C6343000701003360C060405234 DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x787 CODESIZE SUB DUP1 PUSH2 0x787 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x52 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x64 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x6F DUP2 PUSH2 0x8B JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x80 DUP2 PUSH2 0x8B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B3 PUSH2 0xD4 PUSH1 0x0 CODECOPY DUP1 PUSH1 0xFC MSTORE DUP1 PUSH2 0x20F MSTORE POP DUP1 PUSH1 0x58 MSTORE DUP1 PUSH2 0x120 MSTORE POP PUSH2 0x6B3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x38 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7678922E EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0xB3 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0xC8 JUMPI PUSH2 0x83 JUMP JUMPDEST CALLDATASIZE PUSH2 0x83 JUMPI PUSH2 0x81 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x206 PUSH2 0xE8 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0xFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x50E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9D PUSH2 0x11E JUMP JUMPDEST PUSH2 0xDB PUSH2 0xD6 CALLDATASIZE PUSH1 0x4 PUSH2 0x480 JUMP JUMPDEST PUSH2 0x142 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xAA SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST DUP2 PUSH2 0xF6 JUMPI PUSH2 0xF6 DUP2 PUSH2 0x26E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x14C PUSH2 0x29B JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x163 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x197 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x182 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x257 JUMPI PUSH2 0x238 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x1B4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1C6 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 SWAP2 POP POP PUSH2 0x2B4 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x244 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x19D JUMP JUMPDEST POP PUSH2 0x260 PUSH2 0x337 JUMP JUMPDEST PUSH2 0x268 PUSH2 0x348 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x298 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x34F JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2AD PUSH1 0x2 PUSH1 0x0 SLOAD EQ ISZERO PUSH2 0x190 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2DF SWAP2 SWAP1 PUSH2 0x4EF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x31A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x31F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x32E DUP3 DUP3 PUSH2 0x3CA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SELFBALANCE DUP1 ISZERO PUSH2 0x298 JUMPI PUSH2 0x298 CALLER DUP3 PUSH2 0x3F4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x3D9 JUMPI POP DUP1 PUSH2 0x268 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x3E9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x268 PUSH2 0x1AE PUSH2 0x26E JUMP JUMPDEST PUSH2 0x403 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0xE8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x429 SWAP1 PUSH2 0x50B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x466 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x46B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x47B DUP2 PUSH2 0x1A4 PUSH2 0xE8 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x492 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4A9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4BC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4CA JUMPI DUP5 DUP6 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4DD JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x501 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x64D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP5 DUP3 MUL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5D6 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE DUP2 MLOAD DUP1 MLOAD DUP1 DUP8 MSTORE PUSH2 0x599 DUP2 DUP10 DUP10 ADD DUP11 DUP6 ADD PUSH2 0x64D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP6 SWAP1 SWAP6 ADD DUP7 ADD SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x554 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x617 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x631 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x668 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x650 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0x29 DUP7 0xD1 DUP10 DUP1 PUSH28 0x7F562B5667A0DC32043A64B5FC57D1CF73AB6628CA3F8DD6A864736F PUSH13 0x63430007010033000000000000 ","sourceMap":"828:525:93:-:0;;;7822:42:82;7773:91;;943:140:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1058:5;1065:6;1073;1657::75;1678;1637:5;2122::82;-1:-1:-1;;;;;2122:10:82;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1450:12:71;;;;;;;;2146:14:82;;;;;::::1;::::0;2184:41:::1;::::0;2155:5;;2219:4:::1;::::0;2184:41:::1;::::0;::::1;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;;2170:55:82::1;::::0;;;;;::::1;::::0;1697:32:84;;;;;;;;-1:-1:-1;;;;;;1840:19:86;;:66;;1904:1;1840:66;;;1878:6;-1:-1:-1;;;;;1862:30:86;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1831:75:86;;;;;;;;1916:34;;;;;;-1:-1:-1;828:525:93;;-1:-1:-1;;;;;828:525:93;;;;;;;;;:::o;874:641:-1:-;;;;1076:2;1064:9;1055:7;1051:23;1047:32;1044:2;;;-1:-1;;1082:12;1044:2;462:6;456:13;474:48;516:5;474:48;:::i;:::-;1260:2;1325:22;;285:13;1134:89;;-1:-1;303:48;285:13;303:48;:::i;:::-;1394:2;1467:22;;106:13;1268:89;;-1:-1;124:56;106:13;124:56;:::i;:::-;1402:97;;;;1038:477;;;;;:::o;1522:291::-;;1651:2;1639:9;1630:7;1626:23;1622:32;1619:2;;;-1:-1;;1657:12;1619:2;632:6;626:13;644:47;685:5;644:47;:::i;:::-;1709:88;1613:200;-1:-1;;;1613:200::o;2403:363::-;-1:-1;;;;;3505:54;;;2326:65;;3505:54;;2752:2;2737:18;;2191:37;2573:2;2558:18;;2544:222::o;3859:163::-;-1:-1;;;;;3505:54;;3941:58;;3931:2;;4013:1;;4003:12;3931:2;3925:97;:::o;:::-;828:525:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"11191":[{"length":32,"start":5998},{"length":32,"start":6331}],"11193":[{"length":32,"start":5742}],"11561":[{"length":32,"start":12019}],"11792":[{"length":32,"start":3291},{"length":32,"start":6084}],"12134":[{"length":32,"start":2278},{"length":32,"start":2328},{"length":32,"start":2716},{"length":32,"start":2904},{"length":32,"start":9693}],"12136":[{"length":32,"start":1391},{"length":32,"start":1539},{"length":32,"start":1606},{"length":32,"start":2362},{"length":32,"start":2450},{"length":32,"start":2616},{"length":32,"start":9439},{"length":32,"start":9527}]},"linkReferences":{},"object":"6080604052600436106101d85760003560e01c806380db15bd11610102578063c518e53111610095578063e8210e3c11610064578063e8210e3c14610421578063ecc0263714610434578063efe6910814610447578063f3cab6851461045a576101d8565b8063c518e531146103c8578063d293f290146103e8578063d80952d5146103fb578063db4c0e911461040e576101d8565b80638fe4624f116100d15780638fe4624f1461036f578063959fc17a14610382578063abf6d39914610395578063b6d24737146103a8576101d8565b806380db15bd146103215780638c57198b146103345780638d64cfbc146103475780638d928af81461035a576101d8565b8063433b08651161017a5780636d307ea8116101495780636d307ea8146102bd5780637ab6e03c146102d05780637bc008f5146102e35780637fd0e5d5146102f6576101d8565b8063433b0865146102645780635967b69614610277578063611b90dd1461029757806365ca4804146102aa576101d8565b80631c982441116101b65780631c982441146102185780632cbec84e1461022b5780632e6272ea1461023e5780633f85d39014610251576101d8565b80630e248fea146101dd5780631089e5e3146101f25780631836944614610205575b600080fd5b6101f06101eb366004613971565b610487565b005b6101f06102003660046138f3565b610522565b6101f0610213366004613fcb565b610685565b6101f0610226366004613821565b61088e565b6101f06102393660046138f3565b610a7e565b6101f061024c3660046140c7565b610b7f565b6101f061025f366004613927565b610ca8565b6101f0610272366004613e6c565b610d71565b34801561028357600080fd5b506101f06102923660046141b5565b610f9a565b6101f06102a5366004613dc2565b610fdc565b6101f06102b8366004613e1c565b6110f7565b6101f06102cb366004613dc2565b611264565b6101f06102de366004613e6c565b611400565b6101f06102f1366004613e1c565b611506565b34801561030257600080fd5b5061030b61166c565b604051610318919061444e565b60405180910390f35b6101f061032f366004613866565b611690565b6101f0610342366004613b0e565b611794565b6101f0610355366004613d29565b61183f565b34801561036657600080fd5b5061030b6118b9565b6101f061037d366004613c19565b6118dd565b6101f0610390366004613ca8565b611b07565b6101f06103a3366004613dc2565b611b84565b3480156103b457600080fd5b506101f06103c3366004613d97565b611cb4565b3480156103d457600080fd5b506101f06103e33660046141e5565b611cee565b6101f06103f6366004613dc2565b611cf8565b6101f0610409366004613b71565b611ef9565b6101f061041c366004613821565b612487565b6101f061042f366004613dc2565b612604565b6101f0610442366004613a41565b61280f565b6101f0610455366004613dc2565b612907565b34801561046657600080fd5b5061047a6104753660046141b5565b6129b0565b6040516103189190614acf565b8060005b8181101561051c5783838281811061049f57fe5b90506020020160208101906104b491906137e9565b6001600160a01b03166384e9bd7e336040518263ffffffff1660e01b81526004016104df919061444e565b600060405180830381600087803b1580156104f957600080fd5b505af115801561050d573d6000803e3d6000fd5b5050505080600101905061048b565b50505050565b61052b826129c2565b1561053c5761053982612a0d565b91505b6040517fb0e389000000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b0e38900906105a4908690600401614acf565b60206040518083038186803b1580156105bc57600080fd5b505afa1580156105d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f491906141cd565b90506106296001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612a38565b6001600160a01b038416301461066d5761066d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b610676826129c2565b1561051c5761051c8282612b3a565b3361069360208901896137e9565b6001600160a01b031614806106bc5750306106b160208901896137e9565b6001600160a01b0316145b6106e15760405162461bcd60e51b81526004016106d89061499f565b60405180910390fd5b60005b8a518110156107465760008b82815181106106fb57fe5b6020026020010151606001519050610712816129c2565b1561073d5761072081612a0d565b8c838151811061072c57fe5b602002602001015160600181815250505b506001016106e4565b5060606107516118b9565b6001600160a01b031663945bcec9858e8e8e8e8e8e8e8e6040518a63ffffffff1660e01b815260040161078b989796959493929190614896565b6000604051808303818588803b1580156107a457600080fd5b505af11580156107b8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526107e191908101906139b1565b905060005b8281101561087f5761080c8484838181106107fd57fe5b905060400201602001356129c2565b6108285760405162461bcd60e51b81526004016106d890614a0d565b61087784848381811061083757fe5b905060400201602001356108728487878681811061085157fe5b905060400201600001358151811061086557fe5b6020026020010151612b4d565b612b3a565b6001016107e6565b50505050505050505050505050565b610897826129c2565b156108a8576108a582612a0d565b91505b6001600160a01b038416301461090b576001600160a01b03841633146108e05760405162461bcd60e51b81526004016106d89061499f565b61090b847f000000000000000000000000000000000000000000000000000000000000000084612b59565b61095f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084612bf5565b6040517fea598cb00000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ea598cb0906109c7908690600401614acf565b602060405180830381600087803b1580156109e157600080fd5b505af11580156109f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1991906141cd565b90506001600160a01b0384163014610a5f57610a5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b610a68826129c2565b15610a7757610a778282612b3a565b5050505050565b610a87826129c2565b15610a9857610a9582612a0d565b91505b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a1903eab84306040518363ffffffff1660e01b8152600401610ae7919061444e565b6020604051808303818588803b158015610b0057600080fd5b505af1158015610b14573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b3991906141cd565b90506001600160a01b038416301461066d5761066d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b33610b8d60208701876137e9565b6001600160a01b03161480610bb6575030610bab60208701876137e9565b6001600160a01b0316145b610bd25760405162461bcd60e51b81526004016106d89061499f565b610bdf86608001516129c2565b15610bf757610bf18660800151612a0d565b60808701525b6000610c016118b9565b6001600160a01b03166352bbbe2984898989896040518663ffffffff1660e01b8152600401610c339493929190614a44565b6020604051808303818588803b158015610c4c57600080fd5b505af1158015610c60573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c8591906141cd565b9050610c90826129c2565b15610c9f57610c9f8282612b3a565b50505050505050565b6040517f3b9f73840000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633b9f738490610d149087908790339060040161464c565b602060405180830381600087803b158015610d2e57600080fd5b505af1158015610d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6691906141cd565b9050610676826129c2565b610d7a836129c2565b15610d8b57610d8883612a0d565b92505b600082610e0a57866001600160a01b03166351c0e0616040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610dcd57600080fd5b505af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190613805565b610e7d565b866001600160a01b0316634800d97f6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610e4557600080fd5b505af1158015610e59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7d9190613805565b90506001600160a01b0386163014610ec2576001600160a01b0386163314610eb75760405162461bcd60e51b81526004016106d89061499f565b610ec2868286612b59565b610ed66001600160a01b0382168886612bf5565b6040517f2f2cab870000000000000000000000000000000000000000000000000000000081526000906001600160a01b03891690632f2cab8790610f24908990899086908a90600401614620565b602060405180830381600087803b158015610f3e57600080fd5b505af1158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7691906141cd565b9050610f81836129c2565b15610f9057610f908382612b3a565b5050505050505050565b7fc78533b5d3aff901cb655b9491c67366edabc3cd9cb680c3934f61d7eb078752610fc482612a0d565b604051610fd19190614acf565b60405180910390a150565b610fe5826129c2565b15610ff657610ff382612a0d565b91505b6001600160a01b0384163014611039576001600160a01b038416331461102e5760405162461bcd60e51b81526004016106d89061499f565b611039848684612b59565b6040517fea785a5e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ea785a5e9061108390879087906004016145e4565b602060405180830381600087803b15801561109d57600080fd5b505af11580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d591906141cd565b90506110e0826129c2565b156110ef576110ef8282612b3a565b505050505050565b611100816129c2565b156111115761110e81612a0d565b90505b6001600160a01b0383163014611154576001600160a01b03831633146111495760405162461bcd60e51b81526004016106d89061499f565b611154838583612b59565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851690632e1a7d4d90611199908490600401614acf565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050506001600160a01b038216301461051c576000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561121657600080fd5b505afa15801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124e9190613805565b9050610a776001600160a01b0382168484612ab7565b61126d826129c2565b1561127e5761127b82612a0d565b91505b6000856001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112b957600080fd5b505afa1580156112cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f19190613805565b90506001600160a01b0385163014611336576001600160a01b038516331461132b5760405162461bcd60e51b81526004016106d89061499f565b611336858285612b59565b61134a6001600160a01b0382168785612bf5565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690636e553f65906113949087908990600401614ad8565b602060405180830381600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e691906141cd565b90506113f1836129c2565b15610c9f57610c9f8382612b3a565b611409836129c2565b1561141a5761141783612a0d565b92505b6001600160a01b038516301461145d576001600160a01b03851633146114525760405162461bcd60e51b81526004016106d89061499f565b61145d858785612b59565b6040517fead5d3590000000000000000000000000000000000000000000000000000000081526000906001600160a01b0388169063ead5d359906114a9908890889088906004016145fd565b6040805180830381600087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa9190614206565b915050610c90826129c2565b61150f816129c2565b156115205761151d81612a0d565b90505b6000846001600160a01b03166382c630666040518163ffffffff1660e01b815260040160206040518083038186803b15801561155b57600080fd5b505afa15801561156f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115939190613805565b90506001600160a01b03841630146115d8576001600160a01b03841633146115cd5760405162461bcd60e51b81526004016106d89061499f565b6115d8848284612b59565b6115ec6001600160a01b0382168684612bf5565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526001600160a01b03861690636e553f65906116339085908790600401614ad8565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0384163014806116a5575082155b6116c15760405162461bcd60e51b81526004016106d8906149d6565b606063fa6e671d60e01b3386866040516024016116e093929190614462565b60408051601f19818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909516949094179093525161174f92869186910161441b565b60408051601f1981840301815291905290506110ef6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682612cdd565b6040517fc65427940000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6542794906118059030908a908a908a908a908a908a90600401614584565b600060405180830381600087803b15801561181f57600080fd5b505af1158015611833573d6000803e3d6000fd5b50505050505050505050565b866001600160a01b031663d505accf876118576118b9565b88888888886040518863ffffffff1660e01b815260040161187e9796959493929190614543565b600060405180830381600087803b15801561189857600080fd5b505af11580156118ac573d6000803e3d6000fd5b5050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b0385163314806118fc57506001600160a01b03851630145b6119185760405162461bcd60e51b81526004016106d89061499f565b600061192388612d57565b90506000611930836129c2565b61193b5760006119d0565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038316906370a082319061198090899060040161444e565b60206040518083038186803b15801561199857600080fd5b505afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d091906141cd565b90506119e0888660400151612d5d565b60408601526119ed6118b9565b6001600160a01b031663b95cac28858b8a8a8a6040518663ffffffff1660e01b8152600401611a1f94939291906147f0565b6000604051808303818588803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b5050505050611a5a836129c2565b15611661576040517f70a082310000000000000000000000000000000000000000000000000000000081526000906001600160a01b038416906370a0823190611aa7908a9060040161444e565b60206040518083038186803b158015611abf57600080fd5b505afa158015611ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af791906141cd565b9050611833846108728385612d8b565b876001600160a01b0316638fcbaf0c88611b1f6118b9565b8989898989896040518963ffffffff1660e01b8152600401611b489897969594939291906144fa565b600060405180830381600087803b158015611b6257600080fd5b505af1158015611b76573d6000803e3d6000fd5b505050505050505050505050565b611b8d826129c2565b15611b9e57611b9b82612a0d565b91505b6000856001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b158015611bd957600080fd5b505afa158015611bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c119190613805565b90506001600160a01b0385163014611c56576001600160a01b0385163314611c4b5760405162461bcd60e51b81526004016106d89061499f565b611c56858285612b59565b611c6a6001600160a01b0382168785612bf5565b6040517f2f4f21e20000000000000000000000000000000000000000000000000000000081526000906001600160a01b03881690632f4f21e29061139490889088906004016145e4565b611cbd816129c2565b15611cce57611ccb81612a0d565b90505b611cea611cd96118b9565b6001600160a01b0384169083612bf5565b5050565b611cea8282612b3a565b611d01826129c2565b15611d1257611d0f82612a0d565b91505b6001600160a01b0384163014611d55576001600160a01b0384163314611d4a5760405162461bcd60e51b81526004016106d89061499f565b611d55848684612b59565b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d9057600080fd5b505afa158015611da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc89190613805565b6040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081529091506001600160a01b03871690632e1a7d4d90611e10908690600401614acf565b600060405180830381600087803b158015611e2a57600080fd5b505af1158015611e3e573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03841691506370a0823190611e8a90309060040161444e565b60206040518083038186803b158015611ea257600080fd5b505afa158015611eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eda91906141cd565b9050611ef06001600160a01b0383168683612ab7565b6113f1836129c2565b6001600160a01b038516331480611f1857506001600160a01b03851630145b611f345760405162461bcd60e51b81526004016106d89061499f565b60608167ffffffffffffffff81118015611f4d57600080fd5b50604051908082528060200260200182016040528015611f77578160200160208202803683370190505b50905060608267ffffffffffffffff81118015611f9357600080fd5b50604051908082528060200260200182016040528015611fbd578160200160208202803683370190505b50905060005b8381101561212d57611fda8585838181106107fd57fe5b611ff65760405162461bcd60e51b81526004016106d890614a0d565b855160009086868481811061200757fe5b905060400201600001358151811061201b57fe5b602002602001015190508660600151156120695761203881612da1565b84838151811061204457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050612124565b61207281612da4565b6120ff5761207f81612da1565b6001600160a01b03166370a08231896040518263ffffffff1660e01b81526004016120aa919061444e565b60206040518083038186803b1580156120c257600080fd5b505afa1580156120d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fa91906141cd565b61210b565b876001600160a01b0316315b83838151811061211757fe5b6020026020010181815250505b50600101611fc3565b508460600151156121c4576121406118b9565b6001600160a01b0316630f5a6efa87846040518363ffffffff1660e01b815260040161216d929190614486565b60006040518083038186803b15801561218557600080fd5b505afa158015612199573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c19190810190613ab7565b90505b6121d2888660400151612db1565b60408601526121df6118b9565b6001600160a01b0316638bdb39138a8989896040518563ffffffff1660e01b815260040161221094939291906147f0565b600060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b50606092508591505067ffffffffffffffff8111801561225d57600080fd5b50604051908082528060200260200182016040528015612287578160200160208202803683370190505b5090508560600151156123245761229c6118b9565b6001600160a01b0316630f5a6efa88856040518363ffffffff1660e01b81526004016122c9929190614486565b60006040518083038186803b1580156122e157600080fd5b505afa1580156122f5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261231d9190810190613ab7565b9050612422565b60005b8481101561242057865160009087878481811061234057fe5b905060400201600001358151811061235457fe5b6020026020010151905061236781612da4565b6123f45761237481612da1565b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040161239f919061444e565b60206040518083038186803b1580156123b757600080fd5b505afa1580156123cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ef91906141cd565b612400565b886001600160a01b0316315b83838151811061240c57fe5b602090810291909101015250600101612327565b505b60005b848110156118ac5761247f86868381811061243c57fe5b9050604002016020013561087285848151811061245557fe5b602002602001015185858151811061246957fe5b6020026020010151612d8b90919063ffffffff16565b600101612425565b612490826129c2565b156124a15761249e82612a0d565b91505b6001600160a01b0384163014612504576001600160a01b03841633146124d95760405162461bcd60e51b81526004016106d89061499f565b612504847f000000000000000000000000000000000000000000000000000000000000000084612b59565b6040517fde0e9a3e0000000000000000000000000000000000000000000000000000000081526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063de0e9a3e9061256c908690600401614acf565b602060405180830381600087803b15801561258657600080fd5b505af115801561259a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125be91906141cd565b90506001600160a01b0384163014610a5f57610a5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583612ab7565b61260d826129c2565b1561261e5761261b82612a0d565b91505b6000856001600160a01b031663fc0c546a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561265957600080fd5b505afa15801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190613805565b90506001600160a01b03851630146126d6576001600160a01b03851633146126cb5760405162461bcd60e51b81526004016106d89061499f565b6126d6858285612b59565b6126ea6001600160a01b0382168785612bf5565b6040517fb6b55f250000000000000000000000000000000000000000000000000000000081526001600160a01b0387169063b6b55f259061272f908690600401614acf565b600060405180830381600087803b15801561274957600080fd5b505af115801561275d573d6000803e3d6000fd5b50506040517f70a08231000000000000000000000000000000000000000000000000000000008152600092506001600160a01b03891691506370a08231906127a990309060040161444e565b60206040518083038186803b1580156127c157600080fd5b505afa1580156127d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127f991906141cd565b9050611ef06001600160a01b0388168683612ab7565b60005b828110156128a3573384848381811061282757fe5b905060a00201606001602081019061283f91906137e9565b6001600160a01b0316148061287f57503084848381811061285c57fe5b905060a00201606001602081019061287491906137e9565b6001600160a01b0316145b61289b5760405162461bcd60e51b81526004016106d89061499f565b600101612812565b506128ac6118b9565b6001600160a01b0316630e8e3e848285856040518463ffffffff1660e01b81526004016128da9291906146ac565b6000604051808303818588803b1580156128f357600080fd5b505af1158015610f90573d6000803e3d6000fd5b612910826129c2565b156129215761291e82612a0d565b91505b6001600160a01b0384163014612964576001600160a01b03841633146129595760405162461bcd60e51b81526004016106d89061499f565b612964848684612b59565b6040517fba0876520000000000000000000000000000000000000000000000000000000081526000906001600160a01b0387169063ba0876529061108390869088903090600401614aef565b60006129bb82612dd8565b9392505050565b7fba100000000000000000000000000000000000000000000000000000000000007ffff00000000000000000000000000000000000000000000000000000000000008216145b919050565b6000806000612a1b84612dd8565b91509150612a2884612def565b156129bb57600082559392505050565b612a47814710156101a3612e36565b6000826001600160a01b031682604051612a6090612da1565b60006040518083038185875af1925050503d8060008114612a9d576040519150601f19603f3d011682016040523d82523d6000602084013e612aa2565b606091505b50509050612ab2816101a4612e36565b505050565b612ab28363a9059cbb60e01b8484604051602401612ad69291906145e4565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612e44565b6000612b4583612ee4565b919091555050565b60ff81901d9081180390565b80612b6357612ab2565b604080516001808252818301909252606091602080830190803683370190505090508281600081518110612b9357fe5b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092526060918160200160208202803683370190505090508281600081518110612bde57fe5b602002602001018181525050610a77858383612f42565b8015801590612c9957506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063dd62ed3e90612c4690309086906004016144e0565b60206040518083038186803b158015612c5e57600080fd5b505afa158015612c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9691906141cd565b15155b15612cbe57612cbe8363095ea7b360e01b846000604051602401612ad69291906145c8565b612ab28363095ea7b360e01b8484604051602401612ad69291906145e4565b606060006060846001600160a01b031684604051612cfb91906143ff565b6000604051808303816000865af19150503d8060008114612d38576040519150601f19603f3d011682016040523d82523d6000602084013e612d3d565b606091505b5091509150612d4c828261307c565b925050505b92915050565b60601c90565b60606000838015612d6a57fe5b1415612d8057612d79826130a6565b9050612d51565b612d516101366130e3565b6000612d9b838311156001612e36565b50900390565b90565b6001600160a01b03161590565b60606000838015612dbe57fe5b1415612dcd57612d7982613110565b612d516101506130e3565b600080612de483612ee4565b915081549050915091565b7fffff000000000000000000000000000000000000000000000000000000000000167fba100000000000000000000000000000000000000000000000000000000000001490565b81611cea57611cea816130e3565b60006060836001600160a01b031683604051612e6091906143ff565b6000604051808303816000865af19150503d8060008114612e9d576040519150601f19603f3d011682016040523d82523d6000602084013e612ea2565b606091505b50915091506000821415612eba573d6000803e3d6000fd5b61051c815160001480612edc575081806020019051810190612edc9190613af2565b6101a2612e36565b60006001612ef183613159565b7f0000000000000000000000000000000000000000000000000000000000000000604051602001612f23929190614440565b60408051808303601f1901815291905280516020909101200392915050565b6060825167ffffffffffffffff81118015612f5c57600080fd5b50604051908082528060200260200182016040528015612f9657816020015b612f836133be565b815260200190600190039081612f7b5790505b50905060005b835181101561302e576040805160a081019091528060038152602001858381518110612fc457fe5b60200260200101516001600160a01b03168152602001848381518110612fe657fe5b60200260200101518152602001866001600160a01b03168152602001306001600160a01b031681525082828151811061301b57fe5b6020908102919091010152600101612f9c565b506130376118b9565b6001600160a01b0316630e8e3e84826040518263ffffffff1660e01b8152600401613062919061475a565b600060405180830381600087803b1580156128f357600080fd5b6060821561308b575080612d51565b81511561309b5781518083602001fd5b612d516101ae6130e3565b606060006130b38361317c565b905060018160038111156130c357fe5b14156130da576130d283613192565b915050612a08565b82915050612a08565b61310d817f42414c0000000000000000000000000000000000000000000000000000000000613241565b50565b6060600061311d836132a2565b9050600081600281111561312d57fe5b141561313c576130d2836132b8565b600181600281111561314a57fe5b14156130da576130d28361331b565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b600081806020019051810190612d519190613f57565b60608060006131a08461336e565b915091506000805b83518110156132065760008482815181106131bf57fe5b602002602001015190506131d2816129c2565b156131fd576131e081612a0d565b8583815181106131ec57fe5b602002602001018181525050600192505b506001016131a8565b50806132125784613238565b6001838360405160200161322893929190614864565b6040516020818303038152906040525b95945050505050565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b600081806020019051810190612d519190613edb565b60606000806132c684613391565b915091506132d3826129c2565b15613311576132e182612a0d565b9150600082826040516020016132f993929190614843565b60405160208183030381529060405292505050612a08565b8392505050612a08565b60606000613328836133a8565b9050613333816129c2565b156130da5761334181612a0d565b905060018160405160200161335792919061482c565b604051602081830303815290604052915050612a08565b60606000828060200190518101906133869190613f73565b909590945092505050565b600080828060200190518101906133869190613f22565b6000818060200190518101906129bb9190613ef6565b6040805160a081019091528060008152600060208201819052604082018190526060820181905260809091015290565b8035612d5181614bac565b60008083601f84011261340a578182fd5b50813567ffffffffffffffff811115613421578182fd5b602083019150836020808302850101111561343b57600080fd5b9250929050565b600082601f830112613452578081fd5b813561346561346082614b35565b614b0e565b81815291506020808301908481018184028601820187101561348657600080fd5b60005b848110156134ae57813561349c81614bac565b84529282019290820190600101613489565b505050505092915050565b600082601f8301126134c9578081fd5b81356134d761346082614b35565b818152915060208083019084810160005b848110156134ae578135870160a080601f19838c0301121561350957600080fd5b61351281614b0e565b85830135815260408084013587830152606080850135828401526080915081850135818401525082840135925067ffffffffffffffff83111561355457600080fd5b6135628c8885870101613684565b908201528652505092820192908201906001016134e8565b60008083601f84011261358b578182fd5b50813567ffffffffffffffff8111156135a2578182fd5b60208301915083602060408302850101111561343b57600080fd5b600082601f8301126135cd578081fd5b81356135db61346082614b35565b8181529150602080830190848101818402860182018710156135fc57600080fd5b60005b848110156134ae578135845292820192908201906001016135ff565b600082601f83011261362b578081fd5b815161363961346082614b35565b81815291506020808301908481018184028601820187101561365a57600080fd5b60005b848110156134ae5781518452928201929082019060010161365d565b8035612d5181614bc1565b600082601f830112613694578081fd5b813567ffffffffffffffff8111156136aa578182fd5b6136bd6020601f19601f84011601614b0e565b91508082528360208285010111156136d457600080fd5b8060208401602084013760009082016020015292915050565b805160038110612d5157600080fd5b803560018110612d5157600080fd5b803560028110612d5157600080fd5b60006080828403121561372b578081fd5b6137356080614b0e565b9050813567ffffffffffffffff8082111561374f57600080fd5b61375b85838601613442565b8352602084013591508082111561377157600080fd5b61377d858386016135bd565b6020840152604084013591508082111561379657600080fd5b506137a384828501613684565b6040830152506137b68360608401613679565b606082015292915050565b6000608082840312156137d2578081fd5b50919050565b803560ff81168114612d5157600080fd5b6000602082840312156137fa578081fd5b81356129bb81614bac565b600060208284031215613816578081fd5b81516129bb81614bac565b60008060008060808587031215613836578283fd5b843561384181614bac565b9350602085013561385181614bac565b93969395505050506040820135916060013590565b6000806000806060858703121561387b578182fd5b843561388681614bac565b9350602085013561389681614bc1565b9250604085013567ffffffffffffffff808211156138b2578384fd5b818701915087601f8301126138c5578384fd5b8135818111156138d3578485fd5b8860208285010111156138e4578485fd5b95989497505060200194505050565b600080600060608486031215613907578081fd5b833561391281614bac565b95602085013595506040909401359392505050565b60008060006040848603121561393b578081fd5b833567ffffffffffffffff811115613951578182fd5b61395d868287016133f9565b909790965060209590950135949350505050565b60008060208385031215613983578182fd5b823567ffffffffffffffff811115613999578283fd5b6139a5858286016133f9565b90969095509350505050565b600060208083850312156139c3578182fd5b825167ffffffffffffffff8111156139d9578283fd5b8301601f810185136139e9578283fd5b80516139f761346082614b35565b8181528381019083850185840285018601891015613a13578687fd5b8694505b83851015613a35578051835260019490940193918501918501613a17565b50979650505050505050565b600080600060408486031215613a55578081fd5b833567ffffffffffffffff80821115613a6c578283fd5b818601915086601f830112613a7f578283fd5b813581811115613a8d578384fd5b87602060a083028501011115613aa1578384fd5b6020928301989097509590910135949350505050565b600060208284031215613ac8578081fd5b815167ffffffffffffffff811115613ade578182fd5b613aea8482850161361b565b949350505050565b600060208284031215613b03578081fd5b81516129bb81614bc1565b60008060008060008060c08789031215613b26578384fd5b8635613b3181614bc1565b95506020870135613b4181614bac565b945060408701359350613b5788606089016137d8565b92506080870135915060a087013590509295509295509295565b600080600080600080600060c0888a031215613b8b578485fd5b87359650613b9c8960208a016136fc565b95506040880135613bac81614bac565b94506060880135613bbc81614bac565b9350608088013567ffffffffffffffff80821115613bd8578283fd5b613be48b838c0161371a565b945060a08a0135915080821115613bf9578283fd5b50613c068a828b0161357a565b989b979a50959850939692959293505050565b600080600080600080600060e0888a031215613c33578081fd5b87359650613c448960208a016136fc565b95506040880135613c5481614bac565b94506060880135613c6481614bac565b9350608088013567ffffffffffffffff811115613c7f578182fd5b613c8b8a828b0161371a565b93505060a0880135915060c0880135905092959891949750929550565b600080600080600080600080610100898b031215613cc4578182fd5b8835613ccf81614bac565b97506020890135613cdf81614bac565b965060408901359550606089013594506080890135613cfd81614bc1565b9350613d0c8a60a08b016137d8565b925060c0890135915060e089013590509295985092959890939650565b600080600080600080600060e0888a031215613d43578081fd5b8735613d4e81614bac565b96506020880135613d5e81614bac565b95506040880135945060608801359350613d7b8960808a016137d8565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613da9578182fd5b8235613db481614bac565b946020939093013593505050565b600080600080600060a08688031215613dd9578283fd5b8535613de481614bac565b94506020860135613df481614bac565b93506040860135613e0481614bac565b94979396509394606081013594506080013592915050565b60008060008060808587031215613e31578182fd5b8435613e3c81614bac565b93506020850135613e4c81614bac565b92506040850135613e5c81614bac565b9396929550929360600135925050565b60008060008060008060c08789031215613e84578384fd5b8635613e8f81614bac565b95506020870135613e9f81614bac565b94506040870135613eaf81614bac565b9350606087013592506080870135613ec681614bc1565b8092505060a087013590509295509295509295565b600060208284031215613eec578081fd5b6129bb83836136ed565b60008060408385031215613f08578182fd5b613f1284846136ed565b9150602083015190509250929050565b600080600060608486031215613f36578081fd5b613f4085856136ed565b925060208401519150604084015190509250925092565b600060208284031215613f68578081fd5b81516129bb81614bcf565b600080600060608486031215613f87578081fd5b8351613f9281614bcf565b602085015190935067ffffffffffffffff811115613fae578182fd5b613fba8682870161361b565b925050604084015190509250925092565b60008060008060008060008060008060006101608c8e031215613fec578485fd5b613ff68d8d61370b565b9a5067ffffffffffffffff8060208e01351115614011578586fd5b6140218e60208f01358f016134b9565b9a508060408e01351115614033578586fd5b6140438e60408f01358f016133f9565b909a5098506140558e60608f016137c1565b97508060e08e01351115614067578586fd5b6140778e60e08f01358f016133f9565b90975095506101008d013594506101208d013593506101408d013581101561409d578283fd5b506140af8d6101408e01358e0161357a565b81935080925050509295989b509295989b9093969950565b60008060008060008061012087890312156140e0578384fd5b863567ffffffffffffffff808211156140f7578586fd5b9088019060c0828b03121561410a578586fd5b61411460c0614b0e565b823581526141258b6020850161370b565b6020820152604083013561413881614bac565b604082015261414a8b606085016133ee565b60608201526080830135608082015260a08301358281111561416a578788fd5b6141768c828601613684565b60a08301525080985050505061418f88602089016137c1565b959895975050505060a08401359360c08101359360e08201359350610100909101359150565b6000602082840312156141c6578081fd5b5035919050565b6000602082840312156141de578081fd5b5051919050565b600080604083850312156141f7578182fd5b50508035926020909101359150565b60008060408385031215614218578182fd5b505080516020909101519092909150565b6001600160a01b03169052565b60008284526020808501945082825b8581101561427357813561425881614bac565b6001600160a01b031687529582019590820190600101614245565b509495945050505050565b60008284526020808501945082825b858110156142735781358752958201959082019060010161428d565b6000815180845260208085019450808401835b83811015614273578151875295820195908201906001016142bc565b15159052565b600081518084526142f6816020860160208601614b62565b601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b8181101561434f5783516001600160a01b03168352928401929184019160010161432a565b50508285015191508581038387015261436881836142a9565b925050506040830151848203604086015261438382826142de565b915050606083015161439860608601826142d8565b509392505050565b80356143ab81614bac565b6001600160a01b0390811683526020820135906143c782614bc1565b90151560208401526040820135906143de82614bac565b16604083015260608101356143f281614bc1565b8015156060840152505050565b60008251614411818460208701614b62565b9190910192915050565b6000845161442d818460208901614b62565b8201838582379092019182525092915050565b918252602082015260400190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6000604082016001600160a01b03808616845260206040818601528286518085526060870191508288019450855b818110156144d25785518516835294830194918301916001016144b4565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039889168152969097166020870152604086019490945260608501929092521515608084015260ff1660a083015260c082015260e08101919091526101000190565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0397881681529515156020870152939095166040850152606084019190915260ff16608083015260a082019290925260c081019190915260e00190565b6001600160a01b0392909216825260ff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b6001600160a01b03949094168452602084019290925261ffff1660408301521515606082015260800190565b6040808252810183905260008460608301825b8681101561468f576020833561467481614bac565b6001600160a01b03168352928301929091019060010161465f565b5080925050506001600160a01b0383166020830152949350505050565b6020808252818101839052600090604080840186845b8781101561474d5781356146d581614bcf565b6146de81614b98565b8352818501356146ed81614bac565b6001600160a01b0316838601528184013584840152606061471081840184614b55565b61471c82860182614229565b5050608061472c81840184614b55565b61473882860182614229565b505060a09283019291909101906001016146c2565b5090979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156147e3578151805161478c81614b98565b8552808701516001600160a01b03168786015285810151868601526060808201516147b982880182614229565b5050608090810151906147ce86820183614229565b505060a0939093019290850190600101614777565b5091979650505050505050565b60008582526001600160a01b03808616602084015280851660408401525060806060830152614822608083018461430a565b9695505050505050565b6040810161483984614b8e565b9281526020015290565b6060810161485085614b8e565b938152602081019290925260409091015290565b600061486f85614b98565b8482526060602083015261488660608301856142a9565b9050826040830152949350505050565b60006101208083016148a78c614ba2565b8b84526020808501929092528a5190819052610140808501928281028601909101918c8201855b8281101561494e578785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec00186528151805186528481015185870152604080820151908701526060808201519087015260809081015160a09187018290529061493a818801836142de565b9786019796505050908301906001016148ce565b505050508381036040850152614965818a8c614236565b91505061497560608401886143a0565b82810360e084015261498881868861427e565b915050826101008301529998505050505050505050565b60208082526010908201527f496e636f72726563742073656e64657200000000000000000000000000000000604082015260600190565b6020808252601f908201527f52656c617965722063616e206f6e6c7920617070726f766520697473656c6600604082015260600190565b60208082526019908201527f696e76616c696420636861696e6564207265666572656e636500000000000000604082015260600190565b600060e08252855160e08301526020860151614a5f81614ba2565b61010083015260408601516001600160a01b03908116610120840152606087015116610140830152608086015161016083015260a086015160c0610180840152614aad6101a08401826142de565b915050614abd60208301866143a0565b60a082019390935260c0015292915050565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b60405181810167ffffffffffffffff81118282101715614b2d57600080fd5b604052919050565b600067ffffffffffffffff821115614b4b578081fd5b5060209081020190565b600082356129bb81614bac565b60005b83811015614b7d578181015183820152602001614b65565b8381111561051c5750506000910152565b6003811061310d57fe5b6004811061310d57fe5b6002811061310d57fe5b6001600160a01b038116811461310d57600080fd5b801515811461310d57600080fd5b6004811061310d57600080fdfea2646970667358221220f31b3f5824a536399d37890ed168c08dad110bfe76feeb787541ddeb0b46782d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x80DB15BD GT PUSH2 0x102 JUMPI DUP1 PUSH4 0xC518E531 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE8210E3C GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE8210E3C EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0xECC02637 EQ PUSH2 0x434 JUMPI DUP1 PUSH4 0xEFE69108 EQ PUSH2 0x447 JUMPI DUP1 PUSH4 0xF3CAB685 EQ PUSH2 0x45A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xC518E531 EQ PUSH2 0x3C8 JUMPI DUP1 PUSH4 0xD293F290 EQ PUSH2 0x3E8 JUMPI DUP1 PUSH4 0xD80952D5 EQ PUSH2 0x3FB JUMPI DUP1 PUSH4 0xDB4C0E91 EQ PUSH2 0x40E JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x8FE4624F GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x8FE4624F EQ PUSH2 0x36F JUMPI DUP1 PUSH4 0x959FC17A EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0xABF6D399 EQ PUSH2 0x395 JUMPI DUP1 PUSH4 0xB6D24737 EQ PUSH2 0x3A8 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x80DB15BD EQ PUSH2 0x321 JUMPI DUP1 PUSH4 0x8C57198B EQ PUSH2 0x334 JUMPI DUP1 PUSH4 0x8D64CFBC EQ PUSH2 0x347 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x35A JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 GT PUSH2 0x17A JUMPI DUP1 PUSH4 0x6D307EA8 GT PUSH2 0x149 JUMPI DUP1 PUSH4 0x6D307EA8 EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x7AB6E03C EQ PUSH2 0x2D0 JUMPI DUP1 PUSH4 0x7BC008F5 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x7FD0E5D5 EQ PUSH2 0x2F6 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x433B0865 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x5967B696 EQ PUSH2 0x277 JUMPI DUP1 PUSH4 0x611B90DD EQ PUSH2 0x297 JUMPI DUP1 PUSH4 0x65CA4804 EQ PUSH2 0x2AA JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0x1C982441 GT PUSH2 0x1B6 JUMPI DUP1 PUSH4 0x1C982441 EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x2CBEC84E EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0x2E6272EA EQ PUSH2 0x23E JUMPI DUP1 PUSH4 0x3F85D390 EQ PUSH2 0x251 JUMPI PUSH2 0x1D8 JUMP JUMPDEST DUP1 PUSH4 0xE248FEA EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1089E5E3 EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x18369446 EQ PUSH2 0x205 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F0 PUSH2 0x1EB CALLDATASIZE PUSH1 0x4 PUSH2 0x3971 JUMP JUMPDEST PUSH2 0x487 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1F0 PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0x522 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x213 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FCB JUMP JUMPDEST PUSH2 0x685 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x226 CALLDATASIZE PUSH1 0x4 PUSH2 0x3821 JUMP JUMPDEST PUSH2 0x88E JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x239 CALLDATASIZE PUSH1 0x4 PUSH2 0x38F3 JUMP JUMPDEST PUSH2 0xA7E JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x24C CALLDATASIZE PUSH1 0x4 PUSH2 0x40C7 JUMP JUMPDEST PUSH2 0xB7F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x3927 JUMP JUMPDEST PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x272 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E6C JUMP JUMPDEST PUSH2 0xD71 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x292 CALLDATASIZE PUSH1 0x4 PUSH2 0x41B5 JUMP JUMPDEST PUSH2 0xF9A JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0xFDC JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E1C JUMP JUMPDEST PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x1264 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3E6C JUMP JUMPDEST PUSH2 0x1400 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x2F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E1C JUMP JUMPDEST PUSH2 0x1506 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x166C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F0 PUSH2 0x32F CALLDATASIZE PUSH1 0x4 PUSH2 0x3866 JUMP JUMPDEST PUSH2 0x1690 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x342 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B0E JUMP JUMPDEST PUSH2 0x1794 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x355 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D29 JUMP JUMPDEST PUSH2 0x183F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x366 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30B PUSH2 0x18B9 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x3C19 JUMP JUMPDEST PUSH2 0x18DD JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x390 CALLDATASIZE PUSH1 0x4 PUSH2 0x3CA8 JUMP JUMPDEST PUSH2 0x1B07 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x1B84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D97 JUMP JUMPDEST PUSH2 0x1CB4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1F0 PUSH2 0x3E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41E5 JUMP JUMPDEST PUSH2 0x1CEE JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x3F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x1CF8 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x409 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B71 JUMP JUMPDEST PUSH2 0x1EF9 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x41C CALLDATASIZE PUSH1 0x4 PUSH2 0x3821 JUMP JUMPDEST PUSH2 0x2487 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x42F CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x2604 JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x442 CALLDATASIZE PUSH1 0x4 PUSH2 0x3A41 JUMP JUMPDEST PUSH2 0x280F JUMP JUMPDEST PUSH2 0x1F0 PUSH2 0x455 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x2907 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x466 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47A PUSH2 0x475 CALLDATASIZE PUSH1 0x4 PUSH2 0x41B5 JUMP JUMPDEST PUSH2 0x29B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x318 SWAP2 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x51C JUMPI DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0x49F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x4B4 SWAP2 SWAP1 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x84E9BD7E CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4DF SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x50D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP1 PUSH1 0x1 ADD SWAP1 POP PUSH2 0x48B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x52B DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x53C JUMPI PUSH2 0x539 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB0E3890000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xB0E38900 SWAP1 PUSH2 0x5A4 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5F4 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x629 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP5 PUSH2 0x2A38 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x66D JUMPI PUSH2 0x66D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x676 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x51C JUMPI PUSH2 0x51C DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST CALLER PUSH2 0x693 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x6BC JUMPI POP ADDRESS PUSH2 0x6B1 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6E1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP11 MLOAD DUP2 LT ISZERO PUSH2 0x746 JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x6FB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP PUSH2 0x712 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x73D JUMPI PUSH2 0x720 DUP2 PUSH2 0x2A0D JUMP JUMPDEST DUP13 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x72C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x6E4 JUMP JUMPDEST POP PUSH1 0x60 PUSH2 0x751 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x945BCEC9 DUP6 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x78B SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4896 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x7E1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x39B1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH2 0x80C DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x7FD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x828 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x4A0D JUMP JUMPDEST PUSH2 0x877 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x837 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x872 DUP5 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x851 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x865 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2B4D JUMP JUMPDEST PUSH2 0x2B3A JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x7E6 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x897 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x8A8 JUMPI PUSH2 0x8A5 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x90B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x8E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x90B DUP5 PUSH32 0x0 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x95F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND PUSH32 0x0 DUP5 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA598CB000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xEA598CB0 SWAP1 PUSH2 0x9C7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA19 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA5F JUMPI PUSH2 0xA5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0xA68 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xA77 JUMPI PUSH2 0xA77 DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA87 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xA98 JUMPI PUSH2 0xA95 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA1903EAB DUP5 ADDRESS PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAE7 SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB39 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x66D JUMPI PUSH2 0x66D PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST CALLER PUSH2 0xB8D PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xBB6 JUMPI POP ADDRESS PUSH2 0xBAB PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xBD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0xBDF DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xBF7 JUMPI PUSH2 0xBF1 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2A0D JUMP JUMPDEST PUSH1 0x80 DUP8 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xC01 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52BBBE29 DUP5 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xC33 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC85 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0xC90 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xC9F JUMPI PUSH2 0xC9F DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x3B9F738400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x3B9F7384 SWAP1 PUSH2 0xD14 SWAP1 DUP8 SWAP1 DUP8 SWAP1 CALLER SWAP1 PUSH1 0x4 ADD PUSH2 0x464C JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD66 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x676 DUP3 PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0xD7A DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xD8B JUMPI PUSH2 0xD88 DUP4 PUSH2 0x2A0D JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xE0A JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x51C0E061 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDE1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE05 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST PUSH2 0xE7D JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4800D97F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE7D SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ PUSH2 0xEC2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND CALLER EQ PUSH2 0xEB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0xEC2 DUP7 DUP3 DUP7 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0xED6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP9 DUP7 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F2CAB8700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0x2F2CAB87 SWAP1 PUSH2 0xF24 SWAP1 DUP10 SWAP1 DUP10 SWAP1 DUP7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4620 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xF76 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0xF81 DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xF90 JUMPI PUSH2 0xF90 DUP4 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0xC78533B5D3AFF901CB655B9491C67366EDABC3CD9CB680C3934F61D7EB078752 PUSH2 0xFC4 DUP3 PUSH2 0x2A0D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xFD1 SWAP2 SWAP1 PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xFE5 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xFF6 JUMPI PUSH2 0xFF3 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1039 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x102E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1039 DUP5 DUP7 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEA785A5E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xEA785A5E SWAP1 PUSH2 0x1083 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x45E4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10D5 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x10E0 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x10EF JUMPI PUSH2 0x10EF DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1100 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1111 JUMPI PUSH2 0x110E DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ PUSH2 0x1154 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND CALLER EQ PUSH2 0x1149 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1154 DUP4 DUP6 DUP4 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1199 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11C7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ PUSH2 0x51C JUMPI PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x122A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x124E SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH2 0xA77 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP5 DUP5 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x126D DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x127E JUMPI PUSH2 0x127B DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38D52E0F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x12CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x12F1 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1336 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x132B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1336 DUP6 DUP3 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x134A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1394 SWAP1 DUP8 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4AD8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x13C2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x13E6 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x13F1 DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0xC9F JUMPI PUSH2 0xC9F DUP4 DUP3 PUSH2 0x2B3A JUMP JUMPDEST PUSH2 0x1409 DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x141A JUMPI PUSH2 0x1417 DUP4 PUSH2 0x2A0D JUMP JUMPDEST SWAP3 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x145D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1452 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x145D DUP6 DUP8 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xEAD5D35900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0xEAD5D359 SWAP1 PUSH2 0x14A9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x45FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x14FA SWAP2 SWAP1 PUSH2 0x4206 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC90 DUP3 PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x150F DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1520 JUMPI PUSH2 0x151D DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x82C63066 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x155B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x156F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1593 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x15D8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x15CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x15D8 DUP5 DUP3 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x15EC PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP7 DUP5 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6E553F6500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x6E553F65 SWAP1 PUSH2 0x1633 SWAP1 DUP6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4AD8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x164D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1661 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ DUP1 PUSH2 0x16A5 JUMPI POP DUP3 ISZERO JUMPDEST PUSH2 0x16C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x49D6 JUMP JUMPDEST PUSH1 0x60 PUSH4 0xFA6E671D PUSH1 0xE0 SHL CALLER DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x16E0 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP1 SWAP4 MSTORE MLOAD PUSH2 0x174F SWAP3 DUP7 SWAP2 DUP7 SWAP2 ADD PUSH2 0x441B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE SWAP1 POP PUSH2 0x10EF PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP3 PUSH2 0x2CDD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC654279400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xC6542794 SWAP1 PUSH2 0x1805 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x4584 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x181F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1833 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD505ACCF DUP8 PUSH2 0x1857 PUSH2 0x18B9 JUMP JUMPDEST DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP9 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x187E SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4543 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x18FC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1918 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1923 DUP9 PUSH2 0x2D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1930 DUP4 PUSH2 0x29C2 JUMP JUMPDEST PUSH2 0x193B JUMPI PUSH1 0x0 PUSH2 0x19D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1980 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1998 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19D0 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x19E0 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2D5D JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x19ED PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB95CAC28 DUP6 DUP12 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A1F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1A5A DUP4 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1661 JUMPI PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1AA7 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AD3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AF7 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1833 DUP5 PUSH2 0x872 DUP4 DUP6 PUSH2 0x2D8B JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8FCBAF0C DUP9 PUSH2 0x1B1F PUSH2 0x18B9 JUMP JUMPDEST DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B48 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x44FA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B76 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1B8D DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1B9E JUMPI PUSH2 0x1B9B DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F307DC3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C11 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x1C56 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x1C4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1C56 DUP6 DUP3 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x1C6A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F4F21E200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP1 PUSH4 0x2F4F21E2 SWAP1 PUSH2 0x1394 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x45E4 JUMP JUMPDEST PUSH2 0x1CBD DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1CCE JUMPI PUSH2 0x1CCB DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x1CEA PUSH2 0x1CD9 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 PUSH2 0x2BF5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x1CEA DUP3 DUP3 PUSH2 0x2B3A JUMP JUMPDEST PUSH2 0x1D01 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x1D12 JUMPI PUSH2 0x1D0F DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x1D55 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x1D4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x1D55 DUP5 DUP7 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DC8 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1E10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x1E8A SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1EDA SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1EF0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP7 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x13F1 DUP4 PUSH2 0x29C2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ DUP1 PUSH2 0x1F18 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ JUMPDEST PUSH2 0x1F34 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1F4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F77 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1F93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1FBD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x212D JUMPI PUSH2 0x1FDA DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x7FD JUMPI INVALID JUMPDEST PUSH2 0x1FF6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x4A0D JUMP JUMPDEST DUP6 MLOAD PUSH1 0x0 SWAP1 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x2007 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x201B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP7 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2069 JUMPI PUSH2 0x2038 DUP2 PUSH2 0x2DA1 JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2044 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH2 0x2124 JUMP JUMPDEST PUSH2 0x2072 DUP2 PUSH2 0x2DA4 JUMP JUMPDEST PUSH2 0x20FF JUMPI PUSH2 0x207F DUP2 PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20AA SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x20D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x20FA SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH2 0x210B JUMP JUMPDEST DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2117 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x1FC3 JUMP JUMPDEST POP DUP5 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x21C4 JUMPI PUSH2 0x2140 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP8 DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x216D SWAP3 SWAP2 SWAP1 PUSH2 0x4486 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2199 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x21C1 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH2 0x21D2 DUP9 DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x2DB1 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x21DF PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8BDB3913 DUP11 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2210 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47F0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x222A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x60 SWAP3 POP DUP6 SWAP2 POP POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x225D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2287 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP6 PUSH1 0x60 ADD MLOAD ISZERO PUSH2 0x2324 JUMPI PUSH2 0x229C PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF5A6EFA DUP9 DUP6 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22C9 SWAP3 SWAP2 SWAP1 PUSH2 0x4486 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x22F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x231D SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2422 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2420 JUMPI DUP7 MLOAD PUSH1 0x0 SWAP1 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x2340 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x0 ADD CALLDATALOAD DUP2 MLOAD DUP2 LT PUSH2 0x2354 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x2367 DUP2 PUSH2 0x2DA4 JUMP JUMPDEST PUSH2 0x23F4 JUMPI PUSH2 0x2374 DUP2 PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x239F SWAP2 SWAP1 PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x23EF SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST PUSH2 0x2400 JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND BALANCE JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x240C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x2327 JUMP JUMPDEST POP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x18AC JUMPI PUSH2 0x247F DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x243C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x872 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2455 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2469 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2D8B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2425 JUMP JUMPDEST PUSH2 0x2490 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x24A1 JUMPI PUSH2 0x249E DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2504 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x24D9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x2504 DUP5 PUSH32 0x0 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDE0E9A3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0xDE0E9A3E SWAP1 PUSH2 0x256C SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x259A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25BE SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0xA5F JUMPI PUSH2 0xA5F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP6 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH2 0x260D DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x261E JUMPI PUSH2 0x261B DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFC0C546A PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x266D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2691 SWAP2 SWAP1 PUSH2 0x3805 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ PUSH2 0x26D6 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND CALLER EQ PUSH2 0x26CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x26D6 DUP6 DUP3 DUP6 PUSH2 0x2B59 JUMP JUMPDEST PUSH2 0x26EA PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP6 PUSH2 0x2BF5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xB6B55F2500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xB6B55F25 SWAP1 PUSH2 0x272F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x275D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 POP PUSH4 0x70A08231 SWAP1 PUSH2 0x27A9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x444E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27F9 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST SWAP1 POP PUSH2 0x1EF0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP7 DUP4 PUSH2 0x2AB7 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x28A3 JUMPI CALLER DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x2827 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x283F SWAP2 SWAP1 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x287F JUMPI POP ADDRESS DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x285C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0xA0 MUL ADD PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2874 SWAP2 SWAP1 PUSH2 0x37E9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x289B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2812 JUMP JUMPDEST POP PUSH2 0x28AC PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 DUP6 DUP6 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28DA SWAP3 SWAP2 SWAP1 PUSH2 0x46AC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x2910 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x2921 JUMPI PUSH2 0x291E DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ PUSH2 0x2964 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ PUSH2 0x2959 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D8 SWAP1 PUSH2 0x499F JUMP JUMPDEST PUSH2 0x2964 DUP5 DUP7 DUP5 PUSH2 0x2B59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBA08765200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0xBA087652 SWAP1 PUSH2 0x1083 SWAP1 DUP7 SWAP1 DUP9 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4AEF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29BB DUP3 PUSH2 0x2DD8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 PUSH32 0xFFF0000000000000000000000000000000000000000000000000000000000000 DUP3 AND EQ JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2A1B DUP5 PUSH2 0x2DD8 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2A28 DUP5 PUSH2 0x2DEF JUMP JUMPDEST ISZERO PUSH2 0x29BB JUMPI PUSH1 0x0 DUP3 SSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2A47 DUP2 SELFBALANCE LT ISZERO PUSH2 0x1A3 PUSH2 0x2E36 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x2A60 SWAP1 PUSH2 0x2DA1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP PUSH2 0x2AB2 DUP2 PUSH2 0x1A4 PUSH2 0x2E36 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x2AB2 DUP4 PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x45E4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x2E44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B45 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0xFF DUP2 SWAP1 SAR SWAP1 DUP2 XOR SUB SWAP1 JUMP JUMPDEST DUP1 PUSH2 0x2B63 JUMPI PUSH2 0x2AB2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B93 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2BDE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0xA77 DUP6 DUP4 DUP4 PUSH2 0x2F42 JUMP JUMPDEST DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2C99 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0xDD62ED3E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH2 0x2C46 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x44E0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2C72 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C96 SWAP2 SWAP1 PUSH2 0x41CD JUMP JUMPDEST ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2CBE JUMPI PUSH2 0x2CBE DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x45C8 JUMP JUMPDEST PUSH2 0x2AB2 DUP4 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2AD6 SWAP3 SWAP2 SWAP1 PUSH2 0x45E4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH1 0x60 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x2CFB SWAP2 SWAP1 PUSH2 0x43FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D38 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D3D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2D4C DUP3 DUP3 PUSH2 0x307C JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 SHR SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2D6A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2D80 JUMPI PUSH2 0x2D79 DUP3 PUSH2 0x30A6 JUMP JUMPDEST SWAP1 POP PUSH2 0x2D51 JUMP JUMPDEST PUSH2 0x2D51 PUSH2 0x136 PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D9B DUP4 DUP4 GT ISZERO PUSH1 0x1 PUSH2 0x2E36 JUMP JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP4 DUP1 ISZERO PUSH2 0x2DBE JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x2DCD JUMPI PUSH2 0x2D79 DUP3 PUSH2 0x3110 JUMP JUMPDEST PUSH2 0x2D51 PUSH2 0x150 PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2DE4 DUP4 PUSH2 0x2EE4 JUMP JUMPDEST SWAP2 POP DUP2 SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH32 0xFFFF000000000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBA10000000000000000000000000000000000000000000000000000000000000 EQ SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x1CEA JUMPI PUSH2 0x1CEA DUP2 PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x40 MLOAD PUSH2 0x2E60 SWAP2 SWAP1 PUSH2 0x43FF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x2EBA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x51C DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x2EDC JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2EDC SWAP2 SWAP1 PUSH2 0x3AF2 JUMP JUMPDEST PUSH2 0x1A2 PUSH2 0x2E36 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH2 0x2EF1 DUP4 PUSH2 0x3159 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2F23 SWAP3 SWAP2 SWAP1 PUSH2 0x4440 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH1 0x1F NOT ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2F5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F96 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x2F83 PUSH2 0x33BE JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x2F7B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x302E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2FC4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2FE6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x301B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x2F9C JUMP JUMPDEST POP PUSH2 0x3037 PUSH2 0x18B9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE8E3E84 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3062 SWAP2 SWAP1 PUSH2 0x475A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x60 DUP3 ISZERO PUSH2 0x308B JUMPI POP DUP1 PUSH2 0x2D51 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x309B JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST PUSH2 0x2D51 PUSH2 0x1AE PUSH2 0x30E3 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x30B3 DUP4 PUSH2 0x317C JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30C3 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x30DA JUMPI PUSH2 0x30D2 DUP4 PUSH2 0x3192 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2A08 JUMP JUMPDEST DUP3 SWAP2 POP POP PUSH2 0x2A08 JUMP JUMPDEST PUSH2 0x310D DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x3241 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x311D DUP4 PUSH2 0x32A2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x312D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x313C JUMPI PUSH2 0x30D2 DUP4 PUSH2 0x32B8 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x314A JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x30DA JUMPI PUSH2 0x30D2 DUP4 PUSH2 0x331B JUMP JUMPDEST PUSH30 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D51 SWAP2 SWAP1 PUSH2 0x3F57 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x31A0 DUP5 PUSH2 0x336E JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x3206 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x31BF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x31D2 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x31FD JUMPI PUSH2 0x31E0 DUP2 PUSH2 0x2A0D JUMP JUMPDEST DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x31EC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x1 SWAP3 POP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x31A8 JUMP JUMPDEST POP DUP1 PUSH2 0x3212 JUMPI DUP5 PUSH2 0x3238 JUMP JUMPDEST PUSH1 0x1 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3228 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4864 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D51 SWAP2 SWAP1 PUSH2 0x3EDB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x32C6 DUP5 PUSH2 0x3391 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x32D3 DUP3 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x3311 JUMPI PUSH2 0x32E1 DUP3 PUSH2 0x2A0D JUMP JUMPDEST SWAP2 POP PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x32F9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x2A08 JUMP JUMPDEST DUP4 SWAP3 POP POP POP PUSH2 0x2A08 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3328 DUP4 PUSH2 0x33A8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3333 DUP2 PUSH2 0x29C2 JUMP JUMPDEST ISZERO PUSH2 0x30DA JUMPI PUSH2 0x3341 DUP2 PUSH2 0x2A0D JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3357 SWAP3 SWAP2 SWAP1 PUSH2 0x482C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP PUSH2 0x2A08 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3386 SWAP2 SWAP1 PUSH2 0x3F73 JUMP JUMPDEST SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3386 SWAP2 SWAP1 PUSH2 0x3F22 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x29BB SWAP2 SWAP1 PUSH2 0x3EF6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2D51 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x340A JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3421 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x343B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3452 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3465 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x4B0E JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 CALLDATALOAD PUSH2 0x349C DUP2 PUSH2 0x4BAC JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3489 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x34C9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34D7 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 CALLDATALOAD DUP8 ADD PUSH1 0xA0 DUP1 PUSH1 0x1F NOT DUP4 DUP13 SUB ADD SLT ISZERO PUSH2 0x3509 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3512 DUP2 PUSH2 0x4B0E JUMP JUMPDEST DUP6 DUP4 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 ADD CALLDATALOAD DUP8 DUP4 ADD MSTORE PUSH1 0x60 DUP1 DUP6 ADD CALLDATALOAD DUP3 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 POP DUP2 DUP6 ADD CALLDATALOAD DUP2 DUP5 ADD MSTORE POP DUP3 DUP5 ADD CALLDATALOAD SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x3554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3562 DUP13 DUP9 DUP6 DUP8 ADD ADD PUSH2 0x3684 JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE DUP7 MSTORE POP POP SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x34E8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x358B JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x35A2 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0x40 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x343B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x35CD JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x35DB PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x35FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x35FF JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x362B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3639 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x365A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x34AE JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x365D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x2D51 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3694 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x36AA JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x36BD PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4B0E JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x36D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 DUP2 LT PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x372B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3735 PUSH1 0x80 PUSH2 0x4B0E JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x374F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x375B DUP6 DUP4 DUP7 ADD PUSH2 0x3442 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x377D DUP6 DUP4 DUP7 ADD PUSH2 0x35BD JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3796 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x37A3 DUP5 DUP3 DUP6 ADD PUSH2 0x3684 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH2 0x37B6 DUP4 PUSH1 0x60 DUP5 ADD PUSH2 0x3679 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37D2 JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x37FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x29BB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3816 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29BB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3836 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3841 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3851 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x387B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3886 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3896 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x38B2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x38C5 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x38D3 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP9 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x38E4 JUMPI DUP5 DUP6 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP POP PUSH1 0x20 ADD SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3907 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3912 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x393B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3951 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x395D DUP7 DUP3 DUP8 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP PUSH1 0x20 SWAP6 SWAP1 SWAP6 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3983 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3999 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x39A5 DUP6 DUP3 DUP7 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39C3 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x39D9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x39E9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x39F7 PUSH2 0x3460 DUP3 PUSH2 0x4B35 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP4 DUP2 ADD SWAP1 DUP4 DUP6 ADD DUP6 DUP5 MUL DUP6 ADD DUP7 ADD DUP10 LT ISZERO PUSH2 0x3A13 JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3A35 JUMPI DUP1 MLOAD DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x3A17 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3A55 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3A6C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3A7F JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3A8D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP8 PUSH1 0x20 PUSH1 0xA0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3AA1 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 SWAP3 DUP4 ADD SWAP9 SWAP1 SWAP8 POP SWAP6 SWAP1 SWAP2 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AC8 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3ADE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3AEA DUP5 DUP3 DUP6 ADD PUSH2 0x361B JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3B03 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29BB DUP2 PUSH2 0x4BC1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3B26 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3B31 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3B41 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3B57 DUP9 PUSH1 0x60 DUP10 ADD PUSH2 0x37D8 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3B8B JUMPI DUP5 DUP6 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3B9C DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x36FC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3BAC DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3BBC DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3BD8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3BE4 DUP12 DUP4 DUP13 ADD PUSH2 0x371A JUMP JUMPDEST SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3BF9 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3C06 DUP11 DUP3 DUP12 ADD PUSH2 0x357A JUMP JUMPDEST SWAP9 SWAP12 SWAP8 SWAP11 POP SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3C33 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD SWAP7 POP PUSH2 0x3C44 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0x36FC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x3C54 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD PUSH2 0x3C64 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3C7F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3C8B DUP11 DUP3 DUP12 ADD PUSH2 0x371A JUMP JUMPDEST SWAP4 POP POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x3CC4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x3CCF DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x3CDF DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH2 0x3CFD DUP2 PUSH2 0x4BC1 JUMP JUMPDEST SWAP4 POP PUSH2 0x3D0C DUP11 PUSH1 0xA0 DUP12 ADD PUSH2 0x37D8 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3D43 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3D4E DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3D5E DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3D7B DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0x37D8 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DA9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DB4 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3DD9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3DE4 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3DF4 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3E04 DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP4 SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3E31 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3E3C DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3E4C DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3E5C DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3E84 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3E8F DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3E9F DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x3EAF DUP2 PUSH2 0x4BAC JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3EC6 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EEC JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x29BB DUP4 DUP4 PUSH2 0x36ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F08 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F12 DUP5 DUP5 PUSH2 0x36ED JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F36 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x3F40 DUP6 DUP6 PUSH2 0x36ED JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F68 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x29BB DUP2 PUSH2 0x4BCF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F87 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x3F92 DUP2 PUSH2 0x4BCF JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FAE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3FBA DUP7 DUP3 DUP8 ADD PUSH2 0x361B JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x3FEC JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x3FF6 DUP14 DUP14 PUSH2 0x370B JUMP JUMPDEST SWAP11 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 PUSH1 0x20 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4011 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4021 DUP15 PUSH1 0x20 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x34B9 JUMP JUMPDEST SWAP11 POP DUP1 PUSH1 0x40 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4033 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4043 DUP15 PUSH1 0x40 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH2 0x4055 DUP15 PUSH1 0x60 DUP16 ADD PUSH2 0x37C1 JUMP JUMPDEST SWAP8 POP DUP1 PUSH1 0xE0 DUP15 ADD CALLDATALOAD GT ISZERO PUSH2 0x4067 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4077 DUP15 PUSH1 0xE0 DUP16 ADD CALLDATALOAD DUP16 ADD PUSH2 0x33F9 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH2 0x100 DUP14 ADD CALLDATALOAD SWAP5 POP PUSH2 0x120 DUP14 ADD CALLDATALOAD SWAP4 POP PUSH2 0x140 DUP14 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x409D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x40AF DUP14 PUSH2 0x140 DUP15 ADD CALLDATALOAD DUP15 ADD PUSH2 0x357A JUMP JUMPDEST DUP2 SWAP4 POP DUP1 SWAP3 POP POP POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x120 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x40E0 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x40F7 JUMPI DUP6 DUP7 REVERT JUMPDEST SWAP1 DUP9 ADD SWAP1 PUSH1 0xC0 DUP3 DUP12 SUB SLT ISZERO PUSH2 0x410A JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x4114 PUSH1 0xC0 PUSH2 0x4B0E JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE PUSH2 0x4125 DUP12 PUSH1 0x20 DUP6 ADD PUSH2 0x370B JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH2 0x4138 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x414A DUP12 PUSH1 0x60 DUP6 ADD PUSH2 0x33EE JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x416A JUMPI DUP8 DUP9 REVERT JUMPDEST PUSH2 0x4176 DUP13 DUP3 DUP7 ADD PUSH2 0x3684 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MSTORE POP DUP1 SWAP9 POP POP POP POP PUSH2 0x418F DUP9 PUSH1 0x20 DUP10 ADD PUSH2 0x37C1 JUMP JUMPDEST SWAP6 SWAP9 SWAP6 SWAP8 POP POP POP POP PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP4 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP4 PUSH1 0xE0 DUP3 ADD CALLDATALOAD SWAP4 POP PUSH2 0x100 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41C6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41DE JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41F7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4218 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4273 JUMPI DUP2 CALLDATALOAD PUSH2 0x4258 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4245 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP3 DUP3 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x4273 JUMPI DUP2 CALLDATALOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x428D JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4273 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42BC JUMP JUMPDEST ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x42F6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4B62 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x80 DUP1 DUP5 MSTORE DUP2 MLOAD SWAP1 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH1 0xA0 DUP7 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x434F JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x432A JUMP JUMPDEST POP POP DUP3 DUP6 ADD MLOAD SWAP2 POP DUP6 DUP2 SUB DUP4 DUP8 ADD MSTORE PUSH2 0x4368 DUP2 DUP4 PUSH2 0x42A9 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x40 DUP4 ADD MLOAD DUP5 DUP3 SUB PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x4383 DUP3 DUP3 PUSH2 0x42DE JUMP JUMPDEST SWAP2 POP POP PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x4398 PUSH1 0x60 DUP7 ADD DUP3 PUSH2 0x42D8 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x43AB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP4 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x43C7 DUP3 PUSH2 0x4BC1 JUMP JUMPDEST SWAP1 ISZERO ISZERO PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 PUSH2 0x43DE DUP3 PUSH2 0x4BAC JUMP JUMPDEST AND PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP2 ADD CALLDATALOAD PUSH2 0x43F2 DUP2 PUSH2 0x4BC1 JUMP JUMPDEST DUP1 ISZERO ISZERO PUSH1 0x60 DUP5 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4411 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4B62 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x442D DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x4B62 JUMP JUMPDEST DUP3 ADD DUP4 DUP6 DUP3 CALLDATACOPY SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x44D2 JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x44B4 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP9 DUP10 AND DUP2 MSTORE SWAP7 SWAP1 SWAP8 AND PUSH1 0x20 DUP8 ADD MSTORE PUSH1 0x40 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE ISZERO ISZERO PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND DUP2 MSTORE SWAP6 ISZERO ISZERO PUSH1 0x20 DUP8 ADD MSTORE SWAP4 SWAP1 SWAP6 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0xFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ISZERO ISZERO PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF AND PUSH1 0x40 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 DUP5 PUSH1 0x60 DUP4 ADD DUP3 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x468F JUMPI PUSH1 0x20 DUP4 CALLDATALOAD PUSH2 0x4674 DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x465F JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x40 DUP1 DUP5 ADD DUP7 DUP5 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x474D JUMPI DUP2 CALLDATALOAD PUSH2 0x46D5 DUP2 PUSH2 0x4BCF JUMP JUMPDEST PUSH2 0x46DE DUP2 PUSH2 0x4B98 JUMP JUMPDEST DUP4 MSTORE DUP2 DUP6 ADD CALLDATALOAD PUSH2 0x46ED DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP7 ADD MSTORE DUP2 DUP5 ADD CALLDATALOAD DUP5 DUP5 ADD MSTORE PUSH1 0x60 PUSH2 0x4710 DUP2 DUP5 ADD DUP5 PUSH2 0x4B55 JUMP JUMPDEST PUSH2 0x471C DUP3 DUP7 ADD DUP3 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0x80 PUSH2 0x472C DUP2 DUP5 ADD DUP5 PUSH2 0x4B55 JUMP JUMPDEST PUSH2 0x4738 DUP3 DUP7 ADD DUP3 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP3 DUP4 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46C2 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x47E3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH2 0x478C DUP2 PUSH2 0x4B98 JUMP JUMPDEST DUP6 MSTORE DUP1 DUP8 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP7 ADD MSTORE DUP6 DUP2 ADD MLOAD DUP7 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD PUSH2 0x47B9 DUP3 DUP9 ADD DUP3 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 PUSH2 0x47CE DUP7 DUP3 ADD DUP4 PUSH2 0x4229 JUMP JUMPDEST POP POP PUSH1 0xA0 SWAP4 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4777 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 DUP6 AND PUSH1 0x40 DUP5 ADD MSTORE POP PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x4822 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x430A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD PUSH2 0x4839 DUP5 PUSH2 0x4B8E JUMP JUMPDEST SWAP3 DUP2 MSTORE PUSH1 0x20 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0x4850 DUP6 PUSH2 0x4B8E JUMP JUMPDEST SWAP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x486F DUP6 PUSH2 0x4B98 JUMP JUMPDEST DUP5 DUP3 MSTORE PUSH1 0x60 PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x4886 PUSH1 0x60 DUP4 ADD DUP6 PUSH2 0x42A9 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP1 DUP4 ADD PUSH2 0x48A7 DUP13 PUSH2 0x4BA2 JUMP JUMPDEST DUP12 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP11 MLOAD SWAP1 DUP2 SWAP1 MSTORE PUSH2 0x140 DUP1 DUP6 ADD SWAP3 DUP3 DUP2 MUL DUP7 ADD SWAP1 SWAP2 ADD SWAP2 DUP13 DUP3 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x494E JUMPI DUP8 DUP6 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC0 ADD DUP7 MSTORE DUP2 MLOAD DUP1 MLOAD DUP7 MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP8 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP8 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD PUSH1 0xA0 SWAP2 DUP8 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH2 0x493A DUP2 DUP9 ADD DUP4 PUSH2 0x42DE JUMP JUMPDEST SWAP8 DUP7 ADD SWAP8 SWAP7 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x48CE JUMP JUMPDEST POP POP POP POP DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x4965 DUP2 DUP11 DUP13 PUSH2 0x4236 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4975 PUSH1 0x60 DUP5 ADD DUP9 PUSH2 0x43A0 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x4988 DUP2 DUP7 DUP9 PUSH2 0x427E JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH2 0x100 DUP4 ADD MSTORE SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x10 SWAP1 DUP3 ADD MSTORE PUSH32 0x496E636F72726563742073656E64657200000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x52656C617965722063616E206F6E6C7920617070726F766520697473656C6600 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x19 SWAP1 DUP3 ADD MSTORE PUSH32 0x696E76616C696420636861696E6564207265666572656E636500000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 MSTORE DUP6 MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0x20 DUP7 ADD MLOAD PUSH2 0x4A5F DUP2 PUSH2 0x4BA2 JUMP JUMPDEST PUSH2 0x100 DUP4 ADD MSTORE PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH2 0x120 DUP5 ADD MSTORE PUSH1 0x60 DUP8 ADD MLOAD AND PUSH2 0x140 DUP4 ADD MSTORE PUSH1 0x80 DUP7 ADD MLOAD PUSH2 0x160 DUP4 ADD MSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 PUSH2 0x180 DUP5 ADD MSTORE PUSH2 0x4AAD PUSH2 0x1A0 DUP5 ADD DUP3 PUSH2 0x42DE JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4ABD PUSH1 0x20 DUP4 ADD DUP7 PUSH2 0x43A0 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xC0 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4B4B JUMPI DUP1 DUP2 REVERT JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x29BB DUP2 PUSH2 0x4BAC JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4B7D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4B65 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x51C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x3 DUP2 LT PUSH2 0x310D JUMPI INVALID JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x310D JUMPI INVALID JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x310D JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x310D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x310D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x310D JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURN SHL EXTCODEHASH PC 0x24 0xA5 CALLDATASIZE CODECOPY SWAP14 CALLDATACOPY DUP10 0xE 0xD1 PUSH9 0xC08DAD110BFE76FEEB PUSH25 0x7541DDEB0B46782D64736F6C63430007010033000000000000 ","sourceMap":"828:525:93:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4303:241:84;;;;;;:::i;:::-;;:::i;:::-;;4482:1152:86;;;;;;:::i;:::-;;:::i;2424:1525:89:-;;;;;;:::i;:::-;;:::i;1963:958:86:-;;;;;;:::i;:::-;;:::i;3922:554::-;;;;;;:::i;:::-;;:::i;1715:703:89:-;;;;;;:::i;:::-;;:::i;3695:302:84:-;;;;;;:::i;:::-;;:::i;1441:1264:80:-;;;;;;:::i;:::-;;:::i;1218:133:93:-;;;;;;;;;;-1:-1:-1;1218:133:93;;;;;:::i;:::-;;:::i;3445:873:88:-;;;;;;:::i;:::-;;:::i;2588:1101:84:-;;;;;;:::i;:::-;;:::i;1410:955:83:-;;;;;;:::i;:::-;;:::i;2711:1004:80:-;;;;;;:::i;:::-;;:::i;1742:840:84:-;;;;;;:::i;:::-;;:::i;2332:99:82:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2545:466;;;;;;:::i;:::-;;:::i;4003:294:84:-;;;;;;:::i;:::-;;:::i;1328:280:90:-;;;;;;:::i;:::-;;:::i;2238:88:82:-;;;;;;;;;;;;;:::i;4320:1496:89:-;;;;;;:::i;:::-;;:::i;1614:315:90:-;;;;;;:::i;:::-;;:::i;2142:1005:88:-;;;;;;:::i;:::-;;:::i;3189:277:82:-;;;;;;;;;;-1:-1:-1;3189:277:82;;;;;:::i;:::-;;:::i;1089:123:93:-;;;;;;;;;;-1:-1:-1;1089:123:93;;;;;:::i;:::-;;:::i;1390:1225:87:-;;;;;;:::i;:::-;;:::i;7560:2544:89:-;;;;;;:::i;:::-;;:::i;2927:989:86:-;;;;;;:::i;:::-;;:::i;2621:1326:87:-;;;;;;:::i;:::-;;:::i;3955:327:89:-;;;;;;:::i;:::-;;:::i;2371:853:83:-;;;;;;:::i;:::-;;:::i;3641:153:82:-;;;;;;;;;;-1:-1:-1;3641:153:82;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4303:241:84:-;4419:6;4399:17;4442:96;4462:9;4458:1;:13;4442:96;;;4492:6;;4499:1;4492:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4492:23:84;;4516:10;4492:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4473:3;;;;;4442:96;;;;4303:241;;;:::o;4482:1152:86:-;4628:27;4648:6;4628:19;:27::i;:::-;4624:100;;;4680:33;4706:6;4680:25;:33::i;:::-;4671:42;;4624:100;4861:32;;;;;4844:14;;-1:-1:-1;;;;;4861:7:86;:24;;;;:32;;4886:6;;4861:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4844:49;-1:-1:-1;5343:43:86;-1:-1:-1;;;;;5359:7:86;5343:35;5379:6;5343:35;:43::i;:::-;-1:-1:-1;;;;;5401:26:86;;5422:4;5401:26;5397:104;;5443:47;-1:-1:-1;;;;;5450:7:86;5443:28;5472:9;5483:6;5443:28;:47::i;:::-;5515:36;5535:15;5515:19;:36::i;:::-;5511:117;;;5567:50;5593:15;5610:6;5567:25;:50::i;2424:1525:89:-;2791:10;2775:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2775:26:89;;:59;;;-1:-1:-1;2829:4:89;2805:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;2805:29:89;;2775:59;2767:88;;;;-1:-1:-1;;;2767:88:89;;;;;;;:::i;:::-;;;;;;;;;2871:9;2866:230;2890:5;:12;2886:1;:16;2866:230;;;2923:14;2940:5;2946:1;2940:8;;;;;;;;;;;;;;:15;;;2923:32;;2973:27;2993:6;2973:19;:27::i;:::-;2969:117;;;3038:33;3064:6;3038:25;:33::i;:::-;3020:5;3026:1;3020:8;;;;;;;;;;;;;;:15;;:51;;;;;2969:117;-1:-1:-1;2904:3:89;;2866:230;;;;3106:23;3132:10;:8;:10::i;:::-;-1:-1:-1;;;;;3132:20:89;;3161:5;3169:4;3175:5;3182:6;;3190:5;3197:6;;3205:8;3132:82;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3132:82:89;;;;;;;;;;;;:::i;:::-;3106:108;;3230:9;3225:718;3245:27;;;3225:718;;;3301:44;3321:16;;3338:1;3321:19;;;;;;;;;;;;:23;;;3301:19;:44::i;:::-;3293:82;;;;-1:-1:-1;;;3293:82:89;;;;;;;:::i;:::-;3836:96;3862:16;;3879:1;3862:19;;;;;;;;;;;;:23;;;3887:44;3896:7;3904:16;;3921:1;3904:19;;;;;;;;;;;;:25;;;3896:34;;;;;;;;;;;;;;3887:8;:44::i;:::-;3836:25;:96::i;:::-;3274:3;;3225:718;;;;2424:1525;;;;;;;;;;;;:::o;1963:958:86:-;2127:27;2147:6;2127:19;:27::i;:::-;2123:100;;;2179:33;2205:6;2179:25;:33::i;:::-;2170:42;;2123:100;-1:-1:-1;;;;;2408:23:86;;2426:4;2408:23;2404:151;;-1:-1:-1;;;;;2455:20:86;;2465:10;2455:20;2447:49;;;;-1:-1:-1;;;2447:49:86;;;;;;;:::i;:::-;2510:34;2521:6;2529;2537;2510:10;:34::i;:::-;2565:52;-1:-1:-1;;;;;2572:6:86;2565:26;2600:7;2610:6;2565:26;:52::i;:::-;2644:29;;;;;2627:14;;-1:-1:-1;;;;;2652:7:86;2644:21;;;;:29;;2666:6;;2644:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2627:46;-1:-1:-1;;;;;;2688:26:86;;2709:4;2688:26;2684:104;;2730:47;-1:-1:-1;;;;;2737:7:86;2730:28;2759:9;2770:6;2730:28;:47::i;:::-;2802:36;2822:15;2802:19;:36::i;:::-;2798:117;;;2854:50;2880:15;2897:6;2854:25;:50::i;:::-;1963:958;;;;;:::o;3922:554::-;4061:27;4081:6;4061:19;:27::i;:::-;4057:100;;;4113:33;4139:6;4113:25;:33::i;:::-;4104:42;;4057:100;4167:14;4184:6;-1:-1:-1;;;;;4184:13:86;;4206:6;4223:4;4184:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4167:62;-1:-1:-1;;;;;;4244:26:86;;4265:4;4244:26;4240:103;;4286:46;-1:-1:-1;;;;;4293:6:86;4286:27;4314:9;4325:6;4286:27;:46::i;1715:703:89:-;1982:10;1966:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1966:26:89;;:59;;;-1:-1:-1;2020:4:89;1996:12;;;;:5;:12;:::i;:::-;-1:-1:-1;;;;;1996:29:89;;1966:59;1958:88;;;;-1:-1:-1;;;1958:88:89;;;;;;;:::i;:::-;2061:38;2081:10;:17;;;2061:19;:38::i;:::-;2057:133;;;2135:44;2161:10;:17;;;2135:25;:44::i;:::-;2115:17;;;:64;2057:133;2200:14;2217:10;:8;:10::i;:::-;-1:-1:-1;;;;;2217:15:89;;2241:5;2249:10;2261:5;2268;2275:8;2217:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2200:84;;2299:36;2319:15;2299:19;:36::i;:::-;2295:117;;;2351:50;2377:15;2394:6;2351:25;:50::i;:::-;1715:703;;;;;;;:::o;3695:302:84:-;3813:47;;;;;3793:17;;-1:-1:-1;;;;;3813:15:84;:27;;;;:47;;3841:6;;;;3849:10;;3813:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3793:67;;3875:36;3895:15;3875:19;:36::i;1441:1264:80:-;1682:27;1702:6;1682:19;:27::i;:::-;1678:100;;;1734:33;1760:6;1734:25;:33::i;:::-;1725:42;;1678:100;1960:19;1982:14;:59;;2021:11;-1:-1:-1;;;;;2021:18:80;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1982:59;;;1999:11;-1:-1:-1;;;;;1999:17:80;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1960:81;-1:-1:-1;;;;;;2231:23:80;;2249:4;2231:23;2227:157;;-1:-1:-1;;;;;2278:20:80;;2288:10;2278:20;2270:49;;;;-1:-1:-1;;;2270:49:80;;;;;;;:::i;:::-;2333:40;2344:6;2352:12;2366:6;2333:10;:40::i;:::-;2394:54;-1:-1:-1;;;;;2394:24:80;;2427:11;2441:6;2394:24;:54::i;:::-;2514:57;;;;;2497:14;;-1:-1:-1;;;;;2514:19:80;;;;;:57;;2534:9;;2545:6;;2497:14;;2556;;2514:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2497:74;;2586:36;2606:15;2586:19;:36::i;:::-;2582:117;;;2638:50;2664:15;2681:6;2638:25;:50::i;:::-;1441:1264;;;;;;;;:::o;1218:133:93:-;1287:57;1313:30;1339:3;1313:25;:30::i;:::-;1287:57;;;;;;:::i;:::-;;;;;;;;1218:133;:::o;3445:873:88:-;3656:27;3676:6;3656:19;:27::i;:::-;3652:100;;;3708:33;3734:6;3708:25;:33::i;:::-;3699:42;;3652:100;-1:-1:-1;;;;;3946:23:88;;3964:4;3946:23;3942:157;;-1:-1:-1;;;;;3993:20:88;;4003:10;3993:20;3985:49;;;;-1:-1:-1;;;3985:49:88;;;;;;;:::i;:::-;4048:40;4059:6;4067:12;4081:6;4048:10;:40::i;:::-;4136:38;;;;;4109:24;;-1:-1:-1;;;;;4136:19:88;;;;;:38;;4156:9;;4167:6;;4136:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4109:65;;4189:36;4209:15;4189:19;:36::i;:::-;4185:127;;;4241:60;4267:15;4284:16;4241:25;:60::i;:::-;3445:873;;;;;;:::o;2588:1101:84:-;2761:27;2781:6;2761:19;:27::i;:::-;2757:100;;;2813:33;2839:6;2813:25;:33::i;:::-;2804:42;;2757:100;-1:-1:-1;;;;;3048:23:84;;3066:4;3048:23;3044:158;;-1:-1:-1;;;;;3095:20:84;;3105:10;3095:20;3087:49;;;;-1:-1:-1;;;3087:49:84;;;;;;;:::i;:::-;3150:41;3161:6;3176:5;3184:6;3150:10;:41::i;:::-;3319:22;;;;;-1:-1:-1;;;;;3319:14:84;;;;;:22;;3334:6;;3319:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;3541:26:84;;3562:4;3541:26;3537:146;;3583:15;3601:5;-1:-1:-1;;;;;3601:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3583:34;-1:-1:-1;3632:40:84;-1:-1:-1;;;;;3632:21:84;;3654:9;3665:6;3632:21;:40::i;1410:955:83:-;1607:27;1627:6;1607:19;:27::i;:::-;1603:100;;;1659:33;1685:6;1659:25;:33::i;:::-;1650:42;;1603:100;1713:17;1740:12;-1:-1:-1;;;;;1740:18:83;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1713:48;-1:-1:-1;;;;;;1951:23:83;;1969:4;1951:23;1947:155;;-1:-1:-1;;;;;1998:20:83;;2008:10;1998:20;1990:49;;;;-1:-1:-1;;;1990:49:83;;;;;;;:::i;:::-;2053:38;2064:6;2072:10;2084:6;2053:10;:38::i;:::-;2112:53;-1:-1:-1;;;;;2112:22:83;;2143:12;2158:6;2112:22;:53::i;:::-;2192:39;;;;;2175:14;;-1:-1:-1;;;;;2192:20:83;;;;;:39;;2213:6;;2221:9;;2192:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2175:56;;2246:36;2266:15;2246:19;:36::i;:::-;2242:117;;;2298:50;2324:15;2341:6;2298:25;:50::i;2711:1004:80:-;2951:27;2971:6;2951:19;:27::i;:::-;2947:100;;;3003:33;3029:6;3003:25;:33::i;:::-;2994:42;;2947:100;-1:-1:-1;;;;;3238:23:80;;3256:4;3238:23;3234:156;;-1:-1:-1;;;;;3285:20:80;;3295:10;3285:20;3277:49;;;;-1:-1:-1;;;3277:49:80;;;;;;;:::i;:::-;3340:39;3351:6;3359:11;3372:6;3340:10;:39::i;:::-;3528:53;;;;;3510:14;;-1:-1:-1;;;;;3528:20:80;;;;;:53;;3549:9;;3560:6;;3568:12;;3528:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3507:74;;;3596:36;3616:15;3596:19;:36::i;1742:840:84:-;1914:27;1934:6;1914:19;:27::i;:::-;1910:100;;;1966:33;1992:6;1966:25;:33::i;:::-;1957:42;;1910:100;2103:15;2121:5;-1:-1:-1;;;;;2121:14:84;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2103:34;-1:-1:-1;;;;;;2330:23:84;;2348:4;2330:23;2326:153;;-1:-1:-1;;;;;2377:20:84;;2387:10;2377:20;2369:49;;;;-1:-1:-1;;;2369:49:84;;;;;;;:::i;:::-;2432:36;2443:6;2451:8;2461:6;2432:10;:36::i;:::-;2489:44;-1:-1:-1;;;;;2489:20:84;;2518:5;2526:6;2489:20;:44::i;:::-;2543:32;;;;;-1:-1:-1;;;;;2543:13:84;;;;;:32;;2557:6;;2565:9;;2543:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1742:840;;;;;:::o;2332:99:82:-;2413:11;2332:99;:::o;2545:466::-;-1:-1:-1;;;;;2700:24:82;;2719:4;2700:24;;:37;;;2729:8;2728:9;2700:37;2692:81;;;;-1:-1:-1;;;2692:81:82;;;;;;;:::i;:::-;2783:17;2856:34;;;2892:10;2904:7;2913:8;2833:89;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2833:89:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:156;;;2936:13;;;;2803:156;;:::i;:::-;;;;-1:-1:-1;;2803:156:82;;;;;;;;;;-1:-1:-1;2970:34:82;-1:-1:-1;;;;;2978:6:82;2970:28;2803:156;2970:28;:34::i;4003:294:84:-;4194:96;;;;;-1:-1:-1;;;;;4194:15:84;:46;;;;:96;;4249:4;;4256:8;;4266:4;;4272:8;;4282:1;;4285;;4288;;4194:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4003:294;;;;;;:::o;1328:280:90:-;1535:5;-1:-1:-1;;;;;1535:12:90;;1548:5;1563:10;:8;:10::i;:::-;1576:5;1583:8;1593:1;1596;1599;1535:66;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1328:280;;;;;;;:::o;2238:88:82:-;2313:6;2238:88;:::o;4320:1496:89:-;-1:-1:-1;;;;;4580:20:89;;4590:10;4580:20;;:47;;-1:-1:-1;;;;;;4604:23:89;;4622:4;4604:23;4580:47;4572:76;;;;-1:-1:-1;;;4572:76:89;;;;;;;:::i;:::-;4969:10;4989:34;5016:6;4989:26;:34::i;:::-;4969:55;;5034:32;5069:36;5089:15;5069:19;:36::i;:::-;:67;;5135:1;5069:67;;;5108:24;;;;;-1:-1:-1;;;;;5108:13:89;;;;;:24;;5122:9;;5108:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5034:102;;5166:63;5206:4;5212:7;:16;;;5166:39;:63::i;:::-;5147:16;;;:82;5240:10;:8;:10::i;:::-;-1:-1:-1;;;;;5240:19:89;;5268:5;5276:6;5284;5292:9;5303:7;5240:71;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5326:36;5346:15;5326:19;:36::i;:::-;5322:488;;;5670:24;;;;;5642:25;;-1:-1:-1;;;;;5670:13:89;;;;;:24;;5684:9;;5670:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5642:52;-1:-1:-1;5708:91:89;5734:15;5751:47;5642:52;5773:24;5751:21;:47::i;1614:315:90:-;1848:5;-1:-1:-1;;;;;1848:12:90;;1861:6;1877:10;:8;:10::i;:::-;1890:5;1897:6;1905:7;1914:1;1917;1920;1848:74;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:315;;;;;;;;:::o;2142:1005:88:-;2352:28;2372:7;2352:19;:28::i;:::-;2348:103;;;2406:34;2432:7;2406:25;:34::i;:::-;2396:44;;2348:103;2461:22;2493:12;-1:-1:-1;;;;;2493:23:88;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2461:58;-1:-1:-1;;;;;;2709:23:88;;2727:4;2709:23;2705:161;;-1:-1:-1;;;;;2756:20:88;;2766:10;2756:20;2748:49;;;;-1:-1:-1;;;2748:49:88;;;;;;;:::i;:::-;2811:44;2822:6;2830:15;2847:7;2811:10;:44::i;:::-;2876:59;-1:-1:-1;;;;;2876:27:88;;2912:12;2927:7;2876:27;:59::i;:::-;2966:43;;;;;2945:18;;-1:-1:-1;;;;;2966:23:88;;;;;:43;;2990:9;;3001:7;;2966:43;;;:::i;3189:277:82:-;3271:27;3291:6;3271:19;:27::i;:::-;3267:100;;;3323:33;3349:6;3323:25;:33::i;:::-;3314:42;;3267:100;3413:46;3439:10;:8;:10::i;:::-;-1:-1:-1;;;;;3413:17:82;;;3452:6;3413:17;:46::i;:::-;3189:277;;:::o;1089:123:93:-;1168:37;1194:3;1199:5;1168:25;:37::i;1390:1225:87:-;1605:27;1625:6;1605:19;:27::i;:::-;1601:100;;;1657:33;1683:6;1657:25;:33::i;:::-;1648:42;;1601:100;-1:-1:-1;;;;;1892:23:87;;1910:4;1892:23;1888:155;;-1:-1:-1;;;;;1939:20:87;;1949:10;1939:20;1931:49;;;;-1:-1:-1;;;1931:49:87;;;;;;;:::i;:::-;1994:38;2005:6;2013:10;2025:6;1994:10;:38::i;:::-;2053:22;2085:10;-1:-1:-1;;;;;2085:16:87;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2179:27;;;;;2053:51;;-1:-1:-1;;;;;;2179:19:87;;;;;:27;;2199:6;;2179:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2321:40:87;;;;;2295:23;;-1:-1:-1;;;;;;2321:25:87;;;-1:-1:-1;2321:25:87;;:40;;2355:4;;2321:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2295:66;-1:-1:-1;2416:56:87;-1:-1:-1;;;;;2416:28:87;;2445:9;2295:66;2416:28;:56::i;:::-;2487:36;2507:15;2487:19;:36::i;7560:2544:89:-;-1:-1:-1;;;;;7825:20:89;;7835:10;7825:20;;:47;;-1:-1:-1;;;;;;7849:23:89;;7867:4;7849:23;7825:47;7817:76;;;;-1:-1:-1;;;7817:76:89;;;;;;;:::i;:::-;8071:29;8116:16;8103:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8103:37:89;-1:-1:-1;8071:69:89;-1:-1:-1;8239:41:89;8297:16;8283:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8283:38:89;;8239:82;;8336:9;8331:486;8351:27;;;8331:486;;;8407:44;8427:16;;8444:1;8427:19;;;;;;8407:44;8399:82;;;;-1:-1:-1;;;8399:82:89;;;;;;;:::i;:::-;8511:14;;8496:12;;8526:16;;8543:1;8526:19;;;;;;;;;;;;:25;;;8511:41;;;;;;;;;;;;;;8496:56;;8570:7;:25;;;8566:241;;;8634:16;8644:5;8634:9;:16::i;:::-;8615:13;8629:1;8615:16;;;;;;;;;;;;;:35;-1:-1:-1;;;;;8615:35:89;;;-1:-1:-1;;;;;8615:35:89;;;;;8566:241;;;8719:13;8726:5;8719:6;:13::i;:::-;:73;;8755:16;8765:5;8755:9;:16::i;:::-;-1:-1:-1;;;;;8755:26:89;;8782:9;8755:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8719:73;;;8735:9;-1:-1:-1;;;;;8735:17:89;;8719:73;8689:24;8714:1;8689:27;;;;;;;;;;;;;:103;;;;;8566:241;-1:-1:-1;8380:3:89;;8331:486;;;;8830:7;:25;;;8826:138;;;8898:10;:8;:10::i;:::-;-1:-1:-1;;;;;8898:29:89;;8928:9;8939:13;8898:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8898:55:89;;;;;;;;;;;;:::i;:::-;8871:82;;8826:138;9018:63;9058:4;9064:7;:16;;;9018:39;:63::i;:::-;8999:16;;;:82;9091:10;:8;:10::i;:::-;-1:-1:-1;;;;;9091:19:89;;9111:6;9119;9127:9;9138:7;9091:55;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9216:44:89;;-1:-1:-1;9277:16:89;;-1:-1:-1;;9263:38:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9263:38:89;;9216:85;;9315:7;:25;;;9311:478;;;9386:10;:8;:10::i;:::-;-1:-1:-1;;;;;9386:29:89;;9416:9;9427:13;9386:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9386:55:89;;;;;;;;;;;;:::i;:::-;9356:85;;9311:478;;;9477:9;9472:307;9492:27;;;9472:307;;;9559:14;;9544:12;;9574:16;;9591:1;9574:19;;;;;;;;;;;;:25;;;9559:41;;;;;;;;;;;;;;9544:56;;9651:13;9658:5;9651:6;:13::i;:::-;:113;;9727:16;9737:5;9727:9;:16::i;:::-;-1:-1:-1;;;;;9727:26:89;;9754:9;9727:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9651:113;;;9687:9;-1:-1:-1;;;;;9687:17:89;;9651:113;9618:27;9646:1;9618:30;;;;;;;;;;;;;;;;;:146;-1:-1:-1;9521:3:89;;9472:307;;;;9311:478;9863:9;9858:240;9878:27;;;9858:240;;;9926:161;9969:16;;9986:1;9969:19;;;;;;;;;;;;:23;;;10010:63;10045:24;10070:1;10045:27;;;;;;;;;;;;;;10010;10038:1;10010:30;;;;;;;;;;;;;;:34;;:63;;;;:::i;9926:161::-;9907:3;;9858:240;;2927:989:86;3094:27;3114:6;3094:19;:27::i;:::-;3090:100;;;3146:33;3172:6;3146:25;:33::i;:::-;3137:42;;3090:100;-1:-1:-1;;;;;3377:23:86;;3395:4;3377:23;3373:152;;-1:-1:-1;;;;;3424:20:86;;3434:10;3424:20;3416:49;;;;-1:-1:-1;;;3416:49:86;;;;;;;:::i;:::-;3479:35;3490:6;3498:7;3507:6;3479:10;:35::i;:::-;3647:22;;;;;3630:14;;-1:-1:-1;;;;;3647:7:86;:14;;;;:22;;3662:6;;3647:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3630:39;-1:-1:-1;;;;;;3684:26:86;;3705:4;3684:26;3680:103;;3726:46;-1:-1:-1;;;;;3733:6:86;3726:27;3754:9;3765:6;3726:27;:46::i;2621:1326:87:-;2834:27;2854:6;2834:19;:27::i;:::-;2830:100;;;2886:33;2912:6;2886:25;:33::i;:::-;2877:42;;2830:100;2940:22;2972:10;-1:-1:-1;;;;;2972:16:87;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2940:51;-1:-1:-1;;;;;;3181:23:87;;3199:4;3181:23;3177:160;;-1:-1:-1;;;;;3228:20:87;;3238:10;3228:20;3220:49;;;;-1:-1:-1;;;3220:49:87;;;;;;;:::i;:::-;3283:43;3294:6;3302:15;3319:6;3283:10;:43::i;:::-;3424:56;-1:-1:-1;;;;;3424:27:87;;3460:10;3473:6;3424:27;:56::i;:::-;3536:26;;;;;-1:-1:-1;;;;;3536:18:87;;;;;:26;;3555:6;;3536:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3661:35:87;;;;;3638:20;;-1:-1:-1;;;;;;3661:20:87;;;-1:-1:-1;3661:20:87;;:35;;3690:4;;3661:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3638:58;-1:-1:-1;3751:56:87;-1:-1:-1;;;;;3751:31:87;;3783:9;3638:58;3751:31;:56::i;3955:327:89:-;4066:9;4061:156;4081:14;;;4061:156;;;4141:10;4124:3;;4128:1;4124:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4124:27:89;;:61;;;-1:-1:-1;4180:4:89;4155:3;;4159:1;4155:6;;;;;;;;;;;;:13;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4155:30:89;;4124:61;4116:90;;;;-1:-1:-1;;;4116:90:89;;;;;;;:::i;:::-;4097:3;;4061:156;;;;4226:10;:8;:10::i;:::-;-1:-1:-1;;;;;4226:28:89;;4263:5;4271:3;;4226:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2371:853:83;2570:27;2590:6;2570:19;:27::i;:::-;2566:100;;;2622:33;2648:6;2622:25;:33::i;:::-;2613:42;;2566:100;-1:-1:-1;;;;;2857:23:83;;2875:4;2857:23;2853:157;;-1:-1:-1;;;;;2904:20:83;;2914:10;2904:20;2896:49;;;;-1:-1:-1;;;2896:49:83;;;;;;;:::i;:::-;2959:40;2970:6;2978:12;2992:6;2959:10;:40::i;:::-;3037:53;;;;;3020:14;;-1:-1:-1;;;;;3037:19:83;;;;;:53;;3057:6;;3065:9;;3084:4;;3037:53;;;:::i;3641:153:82:-;3719:13;3756:31;3783:3;3756:26;:31::i;:::-;3744:43;3641:153;-1:-1:-1;;;3641:153:82:o;4912:358::-;5197:66;5114;5105:75;;5104:159;4912:358;;;;:::o;6742:375::-;6817:7;6837:12;6851:13;6868:31;6895:3;6868:26;:31::i;:::-;6836:63;;;;6914:33;6943:3;6914:28;:33::i;:::-;6910:179;;;7063:1;7057:4;7050:15;7105:5;6742:375;-1:-1:-1;;;6742:375:82:o;2421:369:59:-;2502:78;2536:6;2511:21;:31;;11367:3:19;2502:8:59;:78::i;:::-;2669:12;2687:9;-1:-1:-1;;;;;2687:14:59;2710:6;2687:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2668:54;;;2732:51;2741:7;11430:3:19;2732:8:59;:51::i;:::-;2421:369;;;:::o;1514:214:67:-;1626:95;1654:5;1685:23;;;1710:2;1714:5;1662:58;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1662:58:67;;;;;;;;;;;;;;;;;;;;;;;;;;;1626:19;:95::i;5994:392:82:-;6085:12;6100:20;6116:3;6100:15;:20::i;:::-;6351:19;;;;-1:-1:-1;;6337:43:82:o;428:250:58:-;615:3;611:11;;;649:9;;;645:17;;588:84::o;3800:360:82:-;3928:11;3924:24;;3941:7;;3924:24;3982:15;;;3995:1;3982:15;;;;;;;;;3957:22;;3982:15;;;;;;;;;;;-1:-1:-1;3982:15:82;3957:40;;4019:5;4007:6;4014:1;4007:9;;;;;;;;-1:-1:-1;;;;;4007:17:82;;;;:9;;;;;;;;;;;:17;4061:16;;;4075:1;4061:16;;;;;;;;;4034:24;;4061:16;;;;;;;;;;;;-1:-1:-1;4061:16:82;4034:43;;4100:6;4087:7;4095:1;4087:10;;;;;;;;;;;;;:19;;;;;4117:36;4129:6;4137;4145:7;4117:11;:36::i;1001:507:67:-;1218:10;;;;;:62;;-1:-1:-1;1232:43:67;;;;;-1:-1:-1;;;;;1232:15:67;;;;;:43;;1256:4;;1271:2;;1232:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;1218:62;1214:183;;;1296:90;1324:5;1355:22;;;1379:2;1383:1;1332:53;;;;;;;;;:::i;1296:90::-;1407:94;1435:5;1466:22;;;1490:2;1494:5;1443:57;;;;;;;;;:::i;3494:278:59:-;3569:12;3653;3667:23;3694:6;-1:-1:-1;;;;;3694:11:59;3706:4;3694:17;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3652:59;;;;3728:37;3745:7;3754:10;3728:16;:37::i;:::-;3721:44;;;;3494:278;;;;;:::o;896:312:55:-;1193:6;1173:27;;896:312::o;5822:336:89:-;5942:12;5982:17;5974:4;:25;;;;;;;5970:182;;;6022:53;6066:8;6022:43;:53::i;:::-;6015:60;;;;5970:182;6106:35;7188:3:19;6106:7:89;:35::i;1375:166:58:-;1433:7;1452:37;1466:1;1461;:6;;5194:1:19;1452:8:58;:37::i;:::-;-1:-1:-1;1511:5:58;;;1375:166::o;2762:110:71:-;2858:5;2762:110::o;1705:105::-;-1:-1:-1;;;;;1781:22:71;;;1705:105::o;10110:336:89:-;10230:12;10270:17;10262:4;:25;;;;;;;10258:182;;;10310:53;10354:8;10310:43;:53::i;10258:182::-;10394:35;8775:3:19;10394:7:89;:35::i;7311:404:82:-;7382:12;7396:13;7428:20;7444:3;7428:15;:20::i;:::-;7421:27;;7694:4;7688:11;7679:20;;7665:44;;;:::o;5387:505::-;5736:66;5727:75;5819:66;5726:159;;5387:505::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;2324:914:67:-;2626:12;2640:23;2667:5;-1:-1:-1;;;;;2667:10:67;2678:4;2667:16;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;:::i;:::-;11301:3:19;3134:8:67;:97::i;7871:595:82:-;7931:7;8457:1;8402:27;8425:3;8402:22;:27::i;:::-;8431:20;8385:67;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;8385:67:82;;;;;;8375:78;;8385:67;8375:78;;;;8367:91;;7871:595;-1:-1:-1;;7871:595:82:o;4166:628::-;4311:33;4374:6;:13;4347:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4311:77;;4403:9;4398:346;4418:6;:13;4414:1;:17;4398:346;;;4461:272;;;;;;;;;;4676:42;4461:272;;;;4522:6;4529:1;4522:9;;;;;;;;;;;;;;-1:-1:-1;;;;;4461:272:82;;;;;4559:7;4567:1;4559:10;;;;;;;;;;;;;;4461:272;;;;4595:6;-1:-1:-1;;;;;4461:272:82;;;;;4646:4;-1:-1:-1;;;;;4461:272:82;;;;4452:3;4456:1;4452:6;;;;;;;;;;;;;;;;;:281;4433:3;;4398:346;;;;4754:10;:8;:10::i;:::-;-1:-1:-1;;;;;4754:28:82;;4783:3;4754:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;5057:714:59;5145:12;5173:7;5169:596;;;-1:-1:-1;5203:10:59;5196:17;;5169:596;5314:17;;:21;5310:445;;5571:10;5565:17;5631:15;5618:10;5614:2;5610:19;5603:44;5520:145;5703:37;12033:3:19;5703:7:59;:37::i;6164:557:89:-;6257:12;6281:34;6318:39;6348:8;6318:29;:39::i;:::-;6281:76;-1:-1:-1;6380:57:89;6372:4;:65;;;;;;;;;6368:347;;;6460:55;6506:8;6460:45;:55::i;:::-;6453:62;;;;;6368:347;6696:8;6689:15;;;;;1459:126:19;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;10452:728:89:-;10545:12;10569:34;10606:39;10636:8;10606:29;:39::i;:::-;10569:76;-1:-1:-1;10668:60:89;10660:4;:68;;;;;;;;;10656:518;;;10751:57;10799:8;10751:47;:57::i;10656:518::-;10837:57;10829:4;:65;;;;;;;;;10825:349;;;10917:55;10963:8;10917:45;:55::i;8657:174:82:-;8757:66;8751:72;;8657:174::o;1159:122:18:-;1219:8;1257:4;1246:28;;;;;;;;;;;;:::i;6727:827:89:-;6822:12;6847:26;6875:23;6902:53;6946:8;6902:43;:53::i;:::-;6846:109;;;;6966:20;7009:9;7004:268;7028:9;:16;7024:1;:20;7004:268;;;7065:14;7082:9;7092:1;7082:12;;;;;;;;;;;;;;7065:29;;7112:27;7132:6;7112:19;:27::i;:::-;7108:154;;;7174:33;7200:6;7174:25;:33::i;:::-;7159:9;7169:1;7159:12;;;;;;;;;;;;;:48;;;;;7243:4;7225:22;;7108:154;-1:-1:-1;7046:3:89;;7004:268;;;;7389:15;:158;;7539:8;7389:158;;;7434:57;7493:9;7504:15;7423:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7389:158;7370:177;6727:827;-1:-1:-1;;;;;6727:827:89:o;1692:3378:19:-;-1:-1:-1;;;1754:18:19;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;1287:122:18;1347:8;1385:4;1374:28;;;;;;;;;;;;:::i;11186:605:89:-;11283:12;11308:19;11329:18;11351:52;11394:8;11351:42;:52::i;:::-;11307:96;;;;11418:32;11438:11;11418:19;:32::i;:::-;11414:371;;;11480:38;11506:11;11480:25;:38::i;:::-;11466:52;;11550:60;11612:11;11625:10;11539:97;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11532:104;;;;;;11414:371;11766:8;11759:15;;;;;;11797:567;11892:12;11916:19;11938:53;11982:8;11938:43;:53::i;:::-;11916:75;;12006:32;12026:11;12006:19;:32::i;:::-;12002:356;;;12068:38;12094:11;12068:25;:38::i;:::-;12054:52;;12138:57;12197:11;12127:82;;;;;;;;;:::i;:::-;;;;;;;;;;;;;12120:89;;;;;1603:253:18;1701:26;1729:23;1812:4;1801:48;;;;;;;;;;;;:::i;:::-;1768:81;;;;-1:-1:-1;1603:253:18;-1:-1:-1;;;1603:253:18:o;2269:207::-;2342:19;2363:18;2434:4;2423:46;;;;;;;;;;;;:::i;2482:167::-;2556:19;2616:4;2605:37;;;;;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;283:146::-;358:20;;383:41;358:20;383:41;:::i;454:352::-;;;584:3;577:4;569:6;565:17;561:27;551:2;;-1:-1;;592:12;551:2;-1:-1;622:20;;662:18;651:30;;648:2;;;-1:-1;;684:12;648:2;728:4;720:6;716:17;704:29;;779:3;728:4;;763:6;759:17;720:6;745:32;;742:41;739:2;;;796:1;;786:12;739:2;544:262;;;;;:::o;1241:752::-;;1373:3;1366:4;1358:6;1354:17;1350:27;1340:2;;-1:-1;;1381:12;1340:2;1428:6;1415:20;1450:95;1465:79;1537:6;1465:79;:::i;:::-;1450:95;:::i;:::-;1573:21;;;1441:104;-1:-1;1617:4;1630:14;;;;1605:17;;;1719;;;1710:27;;;;1707:36;-1:-1;1704:2;;;1756:1;;1746:12;1704:2;1781:1;1766:221;1791:6;1788:1;1785:13;1766:221;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;1859:65;;1938:14;;;;1966;;;;1813:1;1806:9;1766:221;;;1770:14;;;;;1333:660;;;;:::o;3591:771::-;;3739:3;3732:4;3724:6;3720:17;3716:27;3706:2;;-1:-1;;3747:12;3706:2;3794:6;3781:20;3816:111;3831:95;3919:6;3831:95;:::i;3816:111::-;3955:21;;;3807:120;-1:-1;3999:4;4012:14;;;;3987:17;;;4107:1;4092:264;4117:6;4114:1;4111:13;4092:264;;;4200:3;4187:17;3991:6;4175:30;10995:4;;-1:-1;;4175:30;10978:3;10974:19;;10970:30;10967:2;;;4107:1;;11003:12;10967:2;11031:20;10995:4;11031:20;:::i;:::-;3999:4;4175:30;;7057:20;11117:16;11110:75;11308:22;;4175:30;11308:22;15751:20;3999:4;11273:5;11269:16;11262:75;11461:22;;4175:30;11461:22;15751:20;11308:22;11426:5;11422:16;11415:75;11607:22;;;;4175:30;11607:22;15751:20;11461:22;11572:5;11568:16;11561:75;;10995:4;4175:30;11714:19;11701:33;11687:47;;11754:18;11746:6;11743:30;11740:2;;;4107:1;;11776:12;11740:2;11821:58;11875:3;3999:4;11866:6;4175:30;11851:22;;11821:58;:::i;:::-;11803:16;;;11796:84;4212:81;;-1:-1;;4307:14;;;;4335;;;;4139:1;4132:9;4092:264;;4416:388;;;4582:3;4575:4;4567:6;4563:17;4559:27;4549:2;;-1:-1;;4590:12;4549:2;-1:-1;4620:20;;4660:18;4649:30;;4646:2;;;-1:-1;;4682:12;4646:2;4726:4;4718:6;4714:17;4702:29;;4777:3;4726:4;4769;4761:6;4757:17;4718:6;4743:32;;4740:41;4737:2;;;4794:1;;4784:12;5261:707;;5378:3;5371:4;5363:6;5359:17;5355:27;5345:2;;-1:-1;;5386:12;5345:2;5433:6;5420:20;5455:80;5470:64;5527:6;5470:64;:::i;5455:80::-;5563:21;;;5446:89;-1:-1;5607:4;5620:14;;;;5595:17;;;5709;;;5700:27;;;;5697:36;-1:-1;5694:2;;;5746:1;;5736:12;5694:2;5771:1;5756:206;5781:6;5778:1;5775:13;5756:206;;;15751:20;;5849:50;;5913:14;;;;5941;;;;5803:1;5796:9;5756:206;;5994:722;;6122:3;6115:4;6107:6;6103:17;6099:27;6089:2;;-1:-1;;6130:12;6089:2;6170:6;6164:13;6192:80;6207:64;6264:6;6207:64;:::i;6192:80::-;6300:21;;;6183:89;-1:-1;6344:4;6357:14;;;;6332:17;;;6446;;;6437:27;;;;6434:36;-1:-1;6431:2;;;6483:1;;6473:12;6431:2;6508:1;6493:217;6518:6;6515:1;6512:13;6493:217;;;15899:13;;6586:61;;6661:14;;;;6689;;;;6540:1;6533:9;6493:217;;6724:124;6788:20;;6813:30;6788:20;6813:30;:::i;7486:440::-;;7587:3;7580:4;7572:6;7568:17;7564:27;7554:2;;-1:-1;;7595:12;7554:2;7642:6;7629:20;81923:18;81915:6;81912:30;81909:2;;;-1:-1;;81945:12;81909:2;7664:64;82086:4;-1:-1;;7580:4;82003:6;81999:17;81995:33;82076:15;7664:64;:::i;:::-;7655:73;;7748:6;7741:5;7734:21;7852:3;82086:4;7843:6;7776;7834:16;;7831:25;7828:2;;;7869:1;;7859:12;7828:2;93543:6;82086:4;7776:6;7772:17;82086:4;7810:5;7806:16;93520:30;93599:1;93581:16;;;82086:4;93581:16;93574:27;7810:5;7547:379;-1:-1;;7547:379::o;9724:160::-;9815:13;;96702:1;96692:12;;96682:2;;96718:1;;96708:12;10058:158;10139:20;;96931:1;96921:12;;96911:2;;96947:1;;96937:12;10223:156;10303:20;;97045:1;97035:12;;97025:2;;97061:1;;97051:12;11944:1120;;12066:4;12054:9;12049:3;12045:19;12041:30;12038:2;;;-1:-1;;12074:12;12038:2;12102:20;12066:4;12102:20;:::i;:::-;12093:29;;12187:17;12174:31;12225:18;;12217:6;12214:30;12211:2;;;12202:1;;12247:12;12211:2;12292:89;12377:3;12368:6;12357:9;12353:22;12292:89;:::i;:::-;12274:16;12267:115;12480:2;12469:9;12465:18;12452:32;12438:46;;12225:18;12496:6;12493:30;12490:2;;;12202:1;;12526:12;12490:2;12571:74;12641:3;12632:6;12621:9;12617:22;12571:74;:::i;:::-;12480:2;12557:5;12553:16;12546:100;12739:2;12728:9;12724:18;12711:32;12697:46;;12225:18;12755:6;12752:30;12749:2;;;12202:1;;12785:12;12749:2;;12830:58;12884:3;12875:6;12864:9;12860:22;12830:58;:::i;:::-;12739:2;12816:5;12812:16;12805:84;;12996:46;13038:3;12963:2;13018:9;13014:22;12996:46;:::i;:::-;12963:2;12982:5;12978:16;12971:72;12032:1032;;;;:::o;13108:166::-;;13226:3;13217:6;13212:3;13208:16;13204:26;13201:2;;;-1:-1;;13233:12;13201:2;-1:-1;13253:15;13194:80;-1:-1;13194:80::o;15962:126::-;16027:20;;91069:4;91058:16;;97503:33;;97493:2;;97550:1;;97540:12;16095:241;;16199:2;16187:9;16178:7;16174:23;16170:32;16167:2;;;-1:-1;;16205:12;16167:2;85:6;72:20;97:33;124:5;97:33;:::i;16343:263::-;;16458:2;16446:9;16437:7;16433:23;16429:32;16426:2;;;-1:-1;;16464:12;16426:2;226:6;220:13;238:33;265:5;238:33;:::i;16613:617::-;;;;;16768:3;16756:9;16747:7;16743:23;16739:33;16736:2;;;-1:-1;;16775:12;16736:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;16827:63;-1:-1;16927:2;16966:22;;72:20;97:33;72:20;97:33;:::i;:::-;16730:500;;16935:63;;-1:-1;;;;17035:2;17074:22;;15751:20;;17143:2;17182:22;15751:20;;16730:500::o;17237:609::-;;;;;17391:2;17379:9;17370:7;17366:23;17362:32;17359:2;;;-1:-1;;17397:12;17359:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;17449:63;-1:-1;17549:2;17585:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;17557:60;-1:-1;17682:2;17667:18;;17654:32;17706:18;17695:30;;;17692:2;;;-1:-1;;17728:12;17692:2;17813:6;17802:9;17798:22;;;7255:3;7248:4;7240:6;7236:17;7232:27;7222:2;;-1:-1;;7263:12;7222:2;7306:6;7293:20;17706:18;7325:6;7322:30;7319:2;;;-1:-1;;7355:12;7319:2;7450:3;17549:2;7430:17;7391:6;7416:32;;7413:41;7410:2;;;-1:-1;;7457:12;7410:2;17353:493;;;;-1:-1;;17549:2;7387:17;;-1:-1;;;17353:493::o;17853:491::-;;;;17991:2;17979:9;17970:7;17966:23;17962:32;17959:2;;;-1:-1;;17997:12;17959:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;18049:63;18149:2;18188:22;;15751:20;;-1:-1;18257:2;18296:22;;;15751:20;;17953:391;-1:-1;;;17953:391::o;18351:522::-;;;;18507:2;18495:9;18486:7;18482:23;18478:32;18475:2;;;-1:-1;;18513:12;18475:2;18571:17;18558:31;18609:18;18601:6;18598:30;18595:2;;;-1:-1;;18631:12;18595:2;18669:80;18741:7;18732:6;18721:9;18717:22;18669:80;:::i;:::-;18651:98;;;;-1:-1;18786:2;18825:22;;;;15751:20;;18469:404;-1:-1;;;;18469:404::o;18880:457::-;;;19049:2;19037:9;19028:7;19024:23;19020:32;19017:2;;;-1:-1;;19055:12;19017:2;19113:17;19100:31;19151:18;19143:6;19140:30;19137:2;;;-1:-1;;19173:12;19137:2;19211:110;19313:7;19304:6;19293:9;19289:22;19211:110;:::i;:::-;19193:128;;;;-1:-1;19011:326;-1:-1;;;;19011:326::o;19344:390::-;;19483:2;;19471:9;19462:7;19458:23;19454:32;19451:2;;;-1:-1;;19489:12;19451:2;19540:17;19534:24;19578:18;19570:6;19567:30;19564:2;;;-1:-1;;19600:12;19564:2;19686:22;;2946:4;2934:17;;2930:27;-1:-1;2920:2;;-1:-1;;2961:12;2920:2;3001:6;2995:13;3023:79;3038:63;3094:6;3038:63;:::i;3023:79::-;3130:21;;;3187:14;;;;3162:17;;;3276;;;3267:27;;;;3264:36;-1:-1;3261:2;;;-1:-1;;3303:12;3261:2;-1:-1;3329:10;;3323:216;3348:6;3345:1;3342:13;3323:216;;;10779:13;;3416:60;;3370:1;3363:9;;;;;3490:14;;;;3518;;3323:216;;;-1:-1;19620:98;19445:289;-1:-1;;;;;;;19445:289::o;19741:588::-;;;;19930:2;19918:9;19909:7;19905:23;19901:32;19898:2;;;-1:-1;;19936:12;19898:2;19994:17;19981:31;20032:18;;20024:6;20021:30;20018:2;;;-1:-1;;20054:12;20018:2;20188:6;20177:9;20173:22;;;5013:3;5006:4;4998:6;4994:17;4990:27;4980:2;;-1:-1;;5021:12;4980:2;5064:6;5051:20;20032:18;5083:6;5080:30;5077:2;;;-1:-1;;5113:12;5077:2;5208:3;5157:4;5200;5192:6;5188:17;5149:6;5174:32;;5171:41;5168:2;;;-1:-1;;5215:12;5168:2;5157:4;5145:17;;;;20074:131;;-1:-1;20281:22;;;;15751:20;;19892:437;-1:-1;;;;19892:437::o;20336:392::-;;20476:2;20464:9;20455:7;20451:23;20447:32;20444:2;;;-1:-1;;20482:12;20444:2;20533:17;20527:24;20571:18;20563:6;20560:30;20557:2;;;-1:-1;;20593:12;20557:2;20623:89;20704:7;20695:6;20684:9;20680:22;20623:89;:::i;:::-;20613:99;20438:290;-1:-1;;;;20438:290::o;20735:257::-;;20847:2;20835:9;20826:7;20822:23;20818:32;20815:2;;;-1:-1;;20853:12;20815:2;6936:6;6930:13;6948:30;6972:5;6948:30;:::i;20999:859::-;;;;;;;21183:3;21171:9;21162:7;21158:23;21154:33;21151:2;;;-1:-1;;21190:12;21151:2;6801:6;6788:20;6813:30;6837:5;6813:30;:::i;:::-;21242:60;-1:-1;21339:2;21378:22;;72:20;97:33;72:20;97:33;:::i;:::-;21347:63;-1:-1;21447:2;21486:22;;15751:20;;-1:-1;21573:51;21616:7;21555:2;21592:22;;21573:51;:::i;:::-;21563:61;;21661:3;21705:9;21701:22;7057:20;21670:63;;21770:3;21814:9;21810:22;7057:20;21779:63;;21145:713;;;;;;;;:::o;21865:1293::-;;;;;;;;22180:3;22168:9;22159:7;22155:23;22151:33;22148:2;;;-1:-1;;22187:12;22148:2;7070:6;7057:20;22239:63;;22357:67;22416:7;22339:2;22396:9;22392:22;22357:67;:::i;:::-;22347:77;;22461:2;22504:9;22500:22;72:20;97:33;124:5;97:33;:::i;:::-;22469:63;-1:-1;22569:2;22616:22;;358:20;383:41;358:20;383:41;:::i;:::-;22577:71;-1:-1;22713:3;22698:19;;22685:33;22738:18;22727:30;;;22724:2;;;-1:-1;;22760:12;22724:2;22790:86;22868:7;22859:6;22848:9;22844:22;22790:86;:::i;:::-;22780:96;;22941:3;22930:9;22926:19;22913:33;22899:47;;22738:18;22958:6;22955:30;22952:2;;;-1:-1;;22988:12;22952:2;;23026:116;23134:7;23125:6;23114:9;23110:22;23026:116;:::i;:::-;22142:1016;;;;-1:-1;22142:1016;;-1:-1;22142:1016;;;;23008:134;;-1:-1;;;22142:1016::o;23165:1175::-;;;;;;;;23418:3;23406:9;23397:7;23393:23;23389:33;23386:2;;;-1:-1;;23425:12;23386:2;7070:6;7057:20;23477:63;;23595:67;23654:7;23577:2;23634:9;23630:22;23595:67;:::i;:::-;23585:77;;23699:2;23742:9;23738:22;72:20;97:33;124:5;97:33;:::i;:::-;23707:63;-1:-1;23807:2;23846:22;;72:20;97:33;72:20;97:33;:::i;:::-;23815:63;-1:-1;23943:3;23928:19;;23915:33;23968:18;23957:30;;23954:2;;;-1:-1;;23990:12;23954:2;24020:86;24098:7;24089:6;24078:9;24074:22;24020:86;:::i;:::-;24010:96;;;24143:3;24187:9;24183:22;15751:20;24152:63;;24252:3;24296:9;24292:22;15751:20;24261:63;;23380:960;;;;;;;;;;:::o;24347:1159::-;;;;;;;;;24589:3;24577:9;24568:7;24564:23;24560:33;24557:2;;;-1:-1;;24596:12;24557:2;8205:6;8192:20;8217:57;8268:5;8217:57;:::i;:::-;24648:87;-1:-1;24772:2;24811:22;;72:20;97:33;72:20;97:33;:::i;:::-;24780:63;-1:-1;24880:2;24919:22;;15751:20;;-1:-1;24988:2;25027:22;;15751:20;;-1:-1;25096:3;25133:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;25105:60;-1:-1;25221:51;25264:7;25202:3;25240:22;;25221:51;:::i;:::-;25211:61;;25309:3;25353:9;25349:22;7057:20;25318:63;;25418:3;25462:9;25458:22;7057:20;25427:63;;24551:955;;;;;;;;;;;:::o;25513:1033::-;;;;;;;;25738:3;25726:9;25717:7;25713:23;25709:33;25706:2;;;-1:-1;;25745:12;25706:2;8387:6;8374:20;8399:54;8447:5;8399:54;:::i;:::-;25797:84;-1:-1;25918:2;25957:22;;72:20;97:33;72:20;97:33;:::i;:::-;25926:63;-1:-1;26026:2;26065:22;;15751:20;;-1:-1;26134:2;26173:22;;15751:20;;-1:-1;26261:51;26304:7;26242:3;26280:22;;26261:51;:::i;:::-;26251:61;;26349:3;26393:9;26389:22;7057:20;26358:63;;26458:3;26502:9;26498:22;7057:20;26467:63;;25700:846;;;;;;;;;;:::o;26853:396::-;;;26989:2;26977:9;26968:7;26964:23;26960:32;26957:2;;;-1:-1;;26995:12;26957:2;8560:6;8547:20;8572:48;8614:5;8572:48;:::i;:::-;27047:78;27162:2;27201:22;;;;15751:20;;-1:-1;;;26951:298::o;27256:777::-;;;;;;27445:3;27433:9;27424:7;27420:23;27416:33;27413:2;;;-1:-1;;27452:12;27413:2;8900:6;8887:20;8912:50;8956:5;8912:50;:::i;:::-;27504:80;-1:-1;27621:2;27660:22;;72:20;97:33;72:20;97:33;:::i;:::-;27629:63;-1:-1;27729:2;27768:22;;72:20;97:33;72:20;97:33;:::i;:::-;27407:626;;;;-1:-1;27737:63;;27837:2;27876:22;;15751:20;;-1:-1;27945:3;27985:22;15751:20;;27407:626;-1:-1;;27407:626::o;29148:677::-;;;;;29333:3;29321:9;29312:7;29308:23;29304:33;29301:2;;;-1:-1;;29340:12;29301:2;9271:6;9258:20;9283:63;9340:5;9283:63;:::i;:::-;29392:93;-1:-1;29522:2;29561:22;;72:20;97:33;72:20;97:33;:::i;:::-;29530:63;-1:-1;29630:2;29669:22;;72:20;97:33;72:20;97:33;:::i;:::-;29295:530;;;;-1:-1;29638:63;;29738:2;29777:22;15751:20;;-1:-1;;29295:530::o;29832:911::-;;;;;;;30042:3;30030:9;30021:7;30017:23;30013:33;30010:2;;;-1:-1;;30049:12;30010:2;9462:6;9449:20;9474:57;9525:5;9474:57;:::i;:::-;30101:87;-1:-1;30225:2;30264:22;;72:20;97:33;72:20;97:33;:::i;:::-;30233:63;-1:-1;30333:2;30372:22;;72:20;97:33;72:20;97:33;:::i;:::-;30341:63;-1:-1;30441:2;30480:22;;15751:20;;-1:-1;30549:3;30586:22;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;30558:60;;;;30655:3;30699:9;30695:22;15751:20;30664:63;;30004:739;;;;;;;;:::o;31544:289::-;;31672:2;31660:9;31651:7;31647:23;31643:32;31640:2;;;-1:-1;;31678:12;31640:2;31740:77;31809:7;31785:22;31740:77;:::i;31840:425::-;;;31985:2;31973:9;31964:7;31960:23;31956:32;31953:2;;;-1:-1;;31991:12;31953:2;32053:77;32122:7;32098:22;32053:77;:::i;:::-;32043:87;;32167:2;32221:9;32217:22;15899:13;32175:74;;31947:318;;;;;:::o;32272:561::-;;;;32434:2;32422:9;32413:7;32409:23;32405:32;32402:2;;;-1:-1;;32440:12;32402:2;32502:77;32571:7;32547:22;32502:77;:::i;:::-;32492:87;;32616:2;32670:9;32666:22;15899:13;32624:74;;32735:2;32789:9;32785:22;15899:13;32743:74;;32396:437;;;;;:::o;32840:289::-;;32968:2;32956:9;32947:7;32943:23;32939:32;32936:2;;;-1:-1;;32974:12;32936:2;9988:6;9982:13;10000:46;10040:5;10000:46;:::i;33136:690::-;;;;33323:2;33311:9;33302:7;33298:23;33294:32;33291:2;;;-1:-1;;33329:12;33291:2;9988:6;9982:13;10000:46;10040:5;10000:46;:::i;:::-;33526:2;33511:18;;33505:25;33381:87;;-1:-1;33550:18;33539:30;;33536:2;;;-1:-1;;33572:12;33536:2;33602:89;33683:7;33674:6;33663:9;33659:22;33602:89;:::i;:::-;33592:99;;;33728:2;33782:9;33778:22;15899:13;33736:74;;33285:541;;;;;:::o;33833:1983::-;;;;;;;;;;;;34315:3;34303:9;34294:7;34290:23;34286:33;34283:2;;;-1:-1;;34322:12;34283:2;34384:66;34442:7;34418:22;34384:66;:::i;:::-;34374:76;;34539:18;;34515:2;34504:9;34500:18;34487:32;34528:30;34525:2;;;-1:-1;;34561:12;34525:2;34591:109;34692:7;34515:2;34504:9;34500:18;34487:32;34672:9;34668:22;34591:109;:::i;:::-;34581:119;;34539:18;34765:2;34754:9;34750:18;34737:32;34778:30;34775:2;;;-1:-1;;34811:12;34775:2;34849:95;34936:7;34765:2;34754:9;34750:18;34737:32;34916:9;34912:22;34849:95;:::i;:::-;34831:113;;-1:-1;34831:113;-1:-1;34999:87;35078:7;34981:2;35054:22;;34999:87;:::i;:::-;34989:97;;34539:18;35151:3;35140:9;35136:19;35123:33;35165:30;35162:2;;;-1:-1;;35198:12;35162:2;35236:79;35307:7;35151:3;35140:9;35136:19;35123:33;35287:9;35283:22;35236:79;:::i;:::-;35218:97;;-1:-1;35218:97;-1:-1;35352:3;35392:22;;15751:20;;-1:-1;35461:3;35501:22;;15751:20;;-1:-1;35598:3;35583:19;;35570:33;35612:30;-1:-1;35609:2;;;-1:-1;;35645:12;35609:2;;35684:116;35792:7;35598:3;35587:9;35583:19;35570:33;35772:9;35768:22;35684:116;:::i;:::-;35665:135;;;;;;;;34277:1539;;;;;;;;;;;;;;:::o;35823:1081::-;;;;;;;36074:3;36062:9;36053:7;36049:23;36045:33;36042:2;;;-1:-1;;36081:12;36042:2;36139:17;36126:31;36177:18;;36169:6;36166:30;36163:2;;;-1:-1;;36199:12;36163:2;36278:22;;;;14593:4;14572:19;;;14568:30;14565:2;;;-1:-1;;14601:12;14565:2;14629:20;14593:4;14629:20;:::i;:::-;7070:6;7057:20;14715:16;14708:75;14877:62;14935:3;14844:2;14915:9;14911:22;14877:62;:::i;:::-;14844:2;14863:5;14859:16;14852:88;15004:2;15077:9;15073:22;8016:20;8041:48;8083:5;8041:48;:::i;:::-;15004:2;15019:16;;15012:90;15200:64;15260:3;15167:2;15236:22;;15200:64;:::i;:::-;15167:2;15186:5;15182:16;15175:90;15328:3;15387:9;15383:22;15751:20;15328:3;15348:5;15344:16;15337:75;15505:3;15494:9;15490:19;15477:33;36177:18;15522:6;15519:30;15516:2;;;-1:-1;;15552:12;15516:2;15597:58;15651:3;15642:6;15631:9;15627:22;15597:58;:::i;:::-;15505:3;15583:5;15579:16;15572:84;;36219:91;;;;;;36365:87;36444:7;14844:2;36424:9;36420:22;36365:87;:::i;:::-;36036:868;;36355:97;;-1:-1;;;;15505:3;36529:22;;15751:20;;14593:4;36638:22;;15751:20;;36707:3;36747:22;;15751:20;;-1:-1;36816:3;36856:22;;;15751:20;;-1:-1;36036:868::o;36911:241::-;;37015:2;37003:9;36994:7;36990:23;36986:32;36983:2;;;-1:-1;;37021:12;36983:2;-1:-1;15751:20;;36977:175;-1:-1;36977:175::o;37159:263::-;;37274:2;37262:9;37253:7;37249:23;37245:32;37242:2;;;-1:-1;;37280:12;37242:2;-1:-1;15899:13;;37236:186;-1:-1;37236:186::o;37429:366::-;;;37550:2;37538:9;37529:7;37525:23;37521:32;37518:2;;;-1:-1;;37556:12;37518:2;-1:-1;;15751:20;;;37708:2;37747:22;;;15751:20;;-1:-1;37512:283::o;37802:399::-;;;37934:2;37922:9;37913:7;37909:23;37905:32;37902:2;;;-1:-1;;37940:12;37902:2;-1:-1;;15899:13;;38103:2;38153:22;;;15899:13;;;;;-1:-1;37896:305::o;40225:127::-;-1:-1;;;;;90853:54;40302:45;;40296:56::o;41476:740::-;;85780:6;85775:3;85768:19;85817:4;;85812:3;85808:14;41638:93;;41831:21;-1:-1;41858:336;41883:6;41880:1;41877:13;41858:336;;;8029:6;8016:20;8041:48;8083:5;8041:48;:::i;:::-;-1:-1;;;;;90853:54;50865:65;;38574:14;;;;88020:12;;;;41905:1;41898:9;41858:336;;;-1:-1;42200:10;;41625:591;-1:-1;;;;;41625:591::o;43857:657::-;;85780:6;85775:3;85768:19;85817:4;;85812:3;85808:14;44002:92;;44178:21;-1:-1;44205:287;44230:6;44227:1;44224:13;44205:287;;;10633:20;;49427:37;;38964:14;;;;88318:12;;;;44252:1;44245:9;44205:287;;47747:670;;47930:5;83655:12;85780:6;85775:3;85768:19;85817:4;;85812:3;85808:14;47942:83;;85817:4;48096:5;82503:14;-1:-1;48135:260;48160:6;48157:1;48154:13;48135:260;;;48221:13;;49427:37;;40048:14;;;;84568;;;;48182:1;48175:9;48135:260;;49154:94;88868:13;88861:21;49209:34;;49203:45::o;50096:323::-;;50228:5;83655:12;85780:6;85775:3;85768:19;50311:52;50356:6;85817:4;85812:3;85808:14;85817:4;50337:5;50333:16;50311:52;:::i;:::-;94142:2;94122:14;-1:-1;;94118:28;50375:39;;;;85817:4;50375:39;;50176:243;-1:-1;;50176:243::o;55116:1142::-;55351:23;;55283:4;55387:38;;;83655:12;;55274:14;;;85768:19;;;55116:1142;;85817:4;;82503:14;;;;85808;;;;55116:1142;42696:290;42721:6;42718:1;42715:13;42696:290;;;42782:13;;-1:-1;;;;;90853:54;50865:65;;84568:14;;;;38574;;;;42743:1;42736:9;42696:290;;;42700:14;;85817:4;55645:5;55641:16;55635:23;55615:43;;55704:3;55698:4;55694:14;85817:4;55682:3;55678:14;55671:38;55724:103;55822:4;55808:12;55724:103;:::i;:::-;55716:111;;;;55916:4;55909:5;55905:16;55899:23;55968:3;55962:4;55958:14;55916:4;55946:3;55942:14;55935:38;55988:71;56054:4;56040:12;55988:71;:::i;:::-;55980:79;;;56157:4;56150:5;56146:16;56140:23;56169:57;56157:4;56215:3;56211:14;56197:12;56169:57;:::i;:::-;-1:-1;56242:11;55256:1002;-1:-1;;;55256:1002::o;56332:949::-;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;90853:54;;;40302:45;;87605:2;87596:12;;6788:20;;6813:30;6788:20;6813:30;:::i;:::-;88868:13;;88861:21;87605:2;56850:14;;49209:34;87862:12;;;358:20;;383:41;358:20;383:41;:::i;:::-;90853:54;87862:12;57060:14;;40302:45;87740:12;;;6788:20;6813:30;6788:20;6813:30;:::i;:::-;49236:5;88868:13;88861:21;87740:12;57249:3;57245:14;49209:34;;56464:817;;:::o;62651:271::-;;50586:5;83655:12;50697:52;50742:6;50737:3;50730:4;50723:5;50719:16;50697:52;:::i;:::-;50761:16;;;;;62785:137;-1:-1;;62785:137::o;62929:448::-;;50586:5;83655:12;50697:52;50742:6;50737:3;50730:4;50723:5;50719:16;50697:52;:::i;:::-;50761:16;;93543:6;93538:3;50761:16;93520:30;93581:16;;;93574:27;;;-1:-1;93581:16;63119:258;-1:-1;;63119:258::o;63770:392::-;49427:37;;;64023:2;64014:12;;49427:37;64125:12;;;63914:248::o;64169:222::-;-1:-1;;;;;90853:54;;;;40302:45;;64296:2;64281:18;;64267:124::o;64643:464::-;-1:-1;;;;;90853:54;;;40302:45;;90853:54;;;;65016:2;65001:18;;40302:45;88868:13;;88861:21;65093:2;65078:18;;49209:34;64836:2;64821:18;;64807:300::o;65114:527::-;;65342:2;65331:9;65327:18;-1:-1;;;;;90864:42;88678:5;90853:54;40162:3;40155:58;65468:2;65342;65468;65457:9;65453:18;65446:48;65508:123;43278:5;83655:12;85780:6;85775:3;85768:19;85808:14;65331:9;85808:14;43290:93;;65468:2;43469:5;82503:14;43481:21;;-1:-1;43508:290;43533:6;43530:1;43527:13;43508:290;;;43594:13;;90853:54;;50865:65;;84568:14;;;;38786;;;;43555:1;43548:9;43508:290;;;-1:-1;65500:131;;65313:328;-1:-1;;;;;;;;65313:328::o;65648:333::-;-1:-1;;;;;90853:54;;;40302:45;;90853:54;;65967:2;65952:18;;40302:45;65803:2;65788:18;;65774:207::o;65988:984::-;-1:-1;;;;;90853:54;;;40302:45;;90853:54;;;;66466:2;66451:18;;40302:45;66549:2;66534:18;;49427:37;;;;66632:2;66617:18;;49427:37;;;;88868:13;88861:21;66709:3;66694:19;;49209:34;91069:4;91058:16;66789:3;66774:19;;62604:35;66873:3;66858:19;;49427:37;66957:3;66942:19;;49427:37;;;;66301:3;66286:19;;66272:700::o;66979:884::-;-1:-1;;;;;90853:54;;;40302:45;;90853:54;;;;67435:2;67420:18;;40302:45;67518:2;67503:18;;49427:37;;;;67601:2;67586:18;;49427:37;;;;91069:4;91058:16;67680:3;67665:19;;62604:35;67764:3;67749:19;;49427:37;67848:3;67833:19;;49427:37;;;;67270:3;67255:19;;67241:622::o;67870:872::-;-1:-1;;;;;90853:54;;;40302:45;;88868:13;;88861:21;68314:2;68299:18;;49209:34;90853:54;;;;68397:2;68382:18;;40302:45;68480:2;68465:18;;49427:37;;;;91069:4;91058:16;68559:3;68544:19;;62604:35;68643:3;68628:19;;49427:37;;;;68727:3;68712:19;;49427:37;;;;68155:3;68140:19;;68126:616::o;68749:345::-;-1:-1;;;;;90853:54;;;;40302:45;;91069:4;91058:16;69080:2;69065:18;;52545:56;68910:2;68895:18;;68881:213::o;69101:333::-;-1:-1;;;;;90853:54;;;;40302:45;;69420:2;69405:18;;49427:37;69256:2;69241:18;;69227:207::o;69441:432::-;-1:-1;;;;;90853:54;;;;40302:45;;69782:2;69767:18;;49427:37;;;;88868:13;88861:21;69859:2;69844:18;;49209:34;69618:2;69603:18;;69589:284::o;69880:558::-;-1:-1;;;;;90853:54;;;;40302:45;;70257:2;70242:18;;49427:37;;;;90772:6;90761:18;70347:2;70332:18;;52399:57;88868:13;88861:21;70424:2;70409:18;;49209:34;70092:3;70077:19;;70063:375::o;70445:517::-;70668:2;70682:47;;;70653:18;;85768:19;;;70445:517;41089:21;85808:14;;;70445:517;41116:291;41141:6;41138:1;41135:13;41116:291;;;85817:4;85:6;72:20;97:33;124:5;97:33;:::i;:::-;-1:-1;;;;;90853:54;40302:45;;87596:12;;;;38362:14;;;;41163:1;41156:9;41116:291;;;41120:14;70735:126;;;;;-1:-1;;;;;88678:5;90853:54;85817:4;70937:9;70933:18;40155:58;70639:323;;;;;;:::o;70969:518::-;71220:2;71234:47;;;71205:18;;;85768:19;;;70969:518;;85808:14;;;;46221:21;70969:518;46248:421;46273:6;46270:1;46267:13;46248:421;;;10488:6;10475:20;10500:55;10549:5;10500:55;:::i;:::-;90268:46;90308:5;90268:46;:::i;:::-;52132:70;;88192:12;;;72:20;97:33;72:20;97:33;:::i;:::-;-1:-1;;;;;90853:54;60456:14;;;40302:45;60568:16;;;15751:20;60639:14;;;49427:37;60762:4;60718:50;60751:16;;;60572:5;60718:50;:::i;:::-;60774:63;60762:4;60826:3;60822:14;60808:12;60774:63;:::i;:::-;;;60956:4;60904:58;60956:4;60949:5;60945:16;60938:5;60904:58;:::i;:::-;60968:79;60956:4;61036:3;61032:14;61018:12;60968:79;:::i;:::-;-1:-1;;39569:4;39560:14;;;;85372;;;;;46295:1;46288:9;46248:421;;;-1:-1;71287:190;;71191:296;-1:-1;;;;;;;71191:296::o;71494:494::-;71733:2;71747:47;;;83655:12;;71718:18;;;85768:19;;;71494:494;;71733:2;85808:14;;;;;;82503;;;71494:494;47333:353;47358:6;47355:1;47352:13;47333:353;;;47425:6;47419:13;61357:16;61351:23;90268:46;90308:5;90268:46;:::i;:::-;52132:70;;61532:16;;;61526:23;-1:-1;;;;;90853:54;61618:14;;;40302:45;61703:16;;;61697:23;61774:14;;;49427:37;61870:4;61859:16;;;61853:23;61882:63;61930:14;;;61853:23;61882:63;:::i;:::-;-1:-1;;62029:4;62018:16;;;62012:23;;62041:79;62105:14;;;62012:23;62041:79;:::i;:::-;-1:-1;;39875:4;39866:14;;;;;84568;;;;47380:1;47373:9;47333:353;;;-1:-1;71800:178;;71704:284;-1:-1;;;;;;;71704:284::o;71995:768::-;;49457:5;49434:3;49427:37;-1:-1;;;;;90864:42;88678:5;90853:54;72453:2;72442:9;72438:18;40302:45;90864:42;88678:5;90853:54;72552:2;72541:9;72537:18;40302:45;;72288:3;72589:2;72578:9;72574:18;72567:48;72629:124;72288:3;72277:9;72273:19;72739:6;72629:124;:::i;:::-;72621:132;72259:504;-1:-1;;;;;;72259:504::o;74051:355::-;74217:2;74202:18;;90129:46;90169:5;90129:46;:::i;:::-;51523:61;;;74392:2;74377:18;49427:37;74188:218;:::o;74413:466::-;74607:2;74592:18;;90129:46;90169:5;90129:46;:::i;:::-;51523:61;;;74782:2;74767:18;;49427:37;;;;74865:2;74850:18;;;49427:37;74578:301;:::o;74886:614::-;;90268:46;90308:5;90268:46;:::i;:::-;92633:37;51685:3;51678:61;75130:2;75259;75248:9;75244:18;75237:48;75299:108;75130:2;75119:9;75115:18;75393:6;75299:108;:::i;:::-;75291:116;;49457:5;75486:2;75475:9;75471:18;49427:37;75101:399;;;;;;:::o;75507:1568::-;;76096:3;;76085:9;76081:19;90407:46;90447:5;90407:46;:::i;:::-;51823:61;;;76226:2;76211:18;;;76204:48;;;;83655:12;;85768:19;;;;85808:14;;;;;45068:17;;;45059:27;;;;;;82503:14;;;-1:-1;45227:423;45252:6;45249:1;45246:13;45227:423;;;45304:20;;;;;45292:33;;45353:13;;54203:23;;49427:37;;54371:16;;;54365:23;54442:14;;;49427:37;54545:4;54534:16;;;54528:23;54605:14;;;49427:37;54701:4;54690:16;;;54684:23;54761:14;;;49427:37;54859:4;54848:16;;;54842:23;54135:4;54885:14;;;54878:38;;;54842:23;54931:71;54126:14;;;54842:23;54931:71;:::i;:::-;45629:14;;;;45373:134;-1:-1;;;84568:14;;;;45274:1;45267:9;45227:423;;;45231:14;;;;76484:9;76478:4;76474:20;54545:4;76458:9;76454:18;76447:48;76509:133;76637:4;76628:6;76620;76509:133;:::i;:::-;76501:141;;;76653:138;54701:4;76776:9;76772:18;76763:6;76653:138;:::i;:::-;76840:9;76834:4;76830:20;76824:3;76813:9;76809:19;76802:49;76865:116;76976:4;76967:6;76959;76865:116;:::i;:::-;76857:124;;;49457:5;77060:3;77049:9;77045:19;49427:37;76067:1008;;;;;;;;;;;:::o;77082:416::-;77282:2;77296:47;;;52838:2;77267:18;;;85768:19;52874:18;85808:14;;;52854:39;52912:12;;;77253:245::o;77505:416::-;77705:2;77719:47;;;53163:2;77690:18;;;85768:19;53199:33;85808:14;;;53179:54;53252:12;;;77676:245::o;77928:416::-;78128:2;78142:47;;;53808:2;78113:18;;;85768:19;53844:27;85808:14;;;53824:48;53891:12;;;78099:245::o;78351:850::-;;78684:3;78706:17;78699:47;58797:16;58791:23;78684:3;78673:9;78669:19;49427:37;58962:4;58955:5;58951:16;58945:23;90407:46;90447:5;90407:46;:::i;:::-;59033:14;;;51823:61;59130:4;59119:16;;59113:23;-1:-1;;;;;90853:54;;;59205:14;;;50865:65;59303:4;59292:16;;59286:23;90853:54;59378:14;;;50865:65;59474:4;59463:16;;59457:23;59534:14;;;49427:37;59632:4;59621:16;;59615:23;58723:4;59658:14;;;59651:38;59704:71;58714:14;;;59615:23;59704:71;:::i;:::-;78752:122;;;78885:138;58962:4;79008:9;79004:18;78995:6;78885:138;:::i;:::-;59632:4;79087:19;;49427:37;;;;58723:4;79171:19;49427:37;78655:546;;-1:-1;;78655:546::o;79208:222::-;49427:37;;;79335:2;79320:18;;79306:124::o;79437:333::-;49427:37;;;-1:-1;;;;;90853:54;79756:2;79741:18;;40302:45;79592:2;79577:18;;79563:207::o;79777:444::-;49427:37;;;-1:-1;;;;;90853:54;;;80124:2;80109:18;;40302:45;90853:54;80207:2;80192:18;;40302:45;79960:2;79945:18;;79931:290::o;80228:256::-;80290:2;80284:9;80316:17;;;80391:18;80376:34;;80412:22;;;80373:62;80370:2;;;80448:1;;80438:12;80370:2;80290;80457:22;80268:216;;-1:-1;80268:216::o;80491:319::-;;80665:18;80657:6;80654:30;80651:2;;;-1:-1;;80687:12;80651:2;-1:-1;80732:4;80720:17;;;80785:15;;80588:222::o;87496:119::-;;85:6;72:20;97:33;124:5;97:33;:::i;93616:268::-;93681:1;93688:101;93702:6;93699:1;93696:13;93688:101;;;93769:11;;;93763:18;93750:11;;;93743:39;93724:2;93717:10;93688:101;;;93804:6;93801:1;93798:13;93795:2;;;-1:-1;;93681:1;93851:16;;93844:27;93665:219::o;94159:104::-;94241:1;94234:5;94231:12;94221:2;;94247:9;94270:104;94352:1;94345:5;94342:12;94332:2;;94358:9;94381:104;94463:1;94456:5;94453:12;94443:2;;94469:9;94612:117;-1:-1;;;;;94699:5;90853:54;94674:5;94671:35;94661:2;;94720:1;;94710:12;94876:111;94957:5;88868:13;88861:21;94935:5;94932:32;94922:2;;94978:1;;94968:12;96734:107;96816:1;96809:5;96806:12;96796:2;;96832:1;;96822:12"},"methodIdentifiers":{"approveVault(address,uint256)":"b6d24737","batchSwap(uint8,(bytes32,uint256,uint256,uint256,bytes)[],address[],(address,bool,address,bool),int256[],uint256,uint256,(uint256,uint256)[])":"18369446","exitPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),(uint256,uint256)[])":"d80952d5","gaugeClaimRewards(address[])":"0e248fea","gaugeDeposit(address,address,address,uint256)":"7bc008f5","gaugeMint(address[],uint256)":"3f85d390","gaugeSetMinterApproval(bool,address,uint256,uint8,bytes32,bytes32)":"8c57198b","gaugeWithdraw(address,address,address,uint256)":"65ca4804","getChainedReferenceValue(uint256)":"5967b696","getEntrypoint()":"7fd0e5d5","getVault()":"8d928af8","joinPool(bytes32,uint8,address,address,(address[],uint256[],bytes,bool),uint256,uint256)":"8fe4624f","manageUserBalance((uint8,address,uint256,address,address)[],uint256)":"ecc02637","peekChainedReferenceValue(uint256)":"f3cab685","setChainedReferenceValue(uint256,uint256)":"c518e531","setRelayerApproval(address,bool,bytes)":"80db15bd","stakeETH(address,uint256,uint256)":"2cbec84e","stakeETHAndWrap(address,uint256,uint256)":"1089e5e3","swap((bytes32,uint8,address,address,uint256,bytes),(address,bool,address,bool),uint256,uint256,uint256,uint256)":"2e6272ea","unwrapAaveStaticToken(address,address,address,uint256,bool,uint256)":"7ab6e03c","unwrapERC4626(address,address,address,uint256,uint256)":"efe69108","unwrapReaperVaultToken(address,address,address,uint256,uint256)":"d293f290","unwrapUnbuttonToken(address,address,address,uint256,uint256)":"611b90dd","unwrapWstETH(address,address,uint256,uint256)":"db4c0e91","vaultPermit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"8d64cfbc","vaultPermitDAI(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)":"959fc17a","wrapAaveDynamicToken(address,address,address,uint256,bool,uint256)":"433b0865","wrapERC4626(address,address,address,uint256,uint256)":"6d307ea8","wrapReaperVaultToken(address,address,address,uint256,uint256)":"e8210e3c","wrapStETH(address,address,uint256,uint256)":"1c982441","wrapUnbuttonToken(address,address,address,uint256,uint256)":"abf6d399"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"wstETH\",\"type\":\"address\"},{\"internalType\":\"contract IBalancerMinter\",\"name\":\"minter\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"ChainedReferenceValueRead\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approveVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"assetInIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"assetOutIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.BatchSwapStep[]\",\"name\":\"swaps\",\"type\":\"tuple[]\"},{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"int256[]\",\"name\":\"limits\",\"type\":\"int256[]\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"batchSwap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"key\",\"type\":\"uint256\"}],\"internalType\":\"struct VaultActions.OutputReference[]\",\"name\":\"outputReferences\",\"type\":\"tuple[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge[]\",\"name\":\"gauges\",\"type\":\"address[]\"}],\"name\":\"gaugeClaimRewards\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"gauges\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"gaugeMint\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"approval\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"gaugeSetMinterApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStakingLiquidityGauge\",\"name\":\"gauge\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"gaugeWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"getChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEntrypoint\",\"outputs\":[{\"internalType\":\"contract IBalancerRelayer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum VaultActions.PoolKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"contract IAsset[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"maxAmountsIn\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.JoinPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"joinPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum IVault.UserBalanceOpKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct IVault.UserBalanceOp[]\",\"name\":\"ops\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"manageUserBalance\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"}],\"name\":\"peekChainedReferenceValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"ref\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"setChainedReferenceValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"authorisation\",\"type\":\"bytes\"}],\"name\":\"setRelayerApproval\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"stakeETHAndWrap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"enum IVault.SwapKind\",\"name\":\"kind\",\"type\":\"uint8\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetIn\",\"type\":\"address\"},{\"internalType\":\"contract IAsset\",\"name\":\"assetOut\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"}],\"internalType\":\"struct IVault.SingleSwap\",\"name\":\"singleSwap\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"fromInternalBalance\",\"type\":\"bool\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IVault.FundManagement\",\"name\":\"funds\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapAaveStaticToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"unwrapWstETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20Permit\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20PermitDAI\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"vaultPermitDAI\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IStaticATokenLM\",\"name\":\"staticToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapAaveDynamicToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC4626\",\"name\":\"wrappedToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapERC4626\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IReaperTokenVault\",\"name\":\"vaultToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapReaperVaultToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapStETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUnbuttonToken\",\"name\":\"wrapperToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"uAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outputReference\",\"type\":\"uint256\"}],\"name\":\"wrapUnbuttonToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approveVault(address,uint256)\":{\"details\":\"This is needed to avoid having to send intermediate tokens back to the user\"},\"peekChainedReferenceValue(uint256)\":{\"details\":\"It does not alter the reference (even if it's marked as temporary).\"},\"unwrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of wrapped tokens to be burnt for underlying tokens.\",\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"wrapperToken\":\"The address of the wrapper.\"}},\"wrapUnbuttonToken(address,address,address,uint256,uint256)\":{\"params\":{\"outputReference\":\"Chained output reference.\",\"sender\":\"The address of recepient.\",\"uAmount\":\"The underling token amount to be deposited into the wrapper.\",\"wrapperToken\":\"The address of the wrapper.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveVault(address,uint256)\":{\"notice\":\"Approves the Vault to use tokens held in the relayer\"},\"peekChainedReferenceValue(uint256)\":{\"notice\":\"Returns the amount referenced by chained reference `ref`.\"},\"setRelayerApproval(address,bool,bytes)\":{\"notice\":\"Sets whether a particular relayer is authorised to act on behalf of the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockBatchRelayerLibrary.sol\":\"MockBatchRelayerLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerMinter.sol\":{\"keccak256\":\"0x5607c45e92f3c83411e576606a12fe46337013d142b7fb2cf4004b0d5cdbaadd\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0df6e9a428d7b6cf7b2c4904141c1bf9bd13db655b5b5680bbe60a1daad55a75\",\"dweb:/ipfs/QmTZxPqfj7PZmX4n77b2i6WEz5Qri1fQy1WHjKa8XQg6b2\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerToken.sol\":{\"keccak256\":\"0xe5180f347ea766bccf6fbe1805e421866db331e09d74804b4424861059931d1e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://bee6af40b449e79e7e2dc8c97bc10c1a6ae924ad11f6b7f8c7d11c2e5effe5c4\",\"dweb:/ipfs/QmPLX4qFyADmDGsh3QQPWkxftRE8sABMbGAAefHxeU8ey1\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IBalancerTokenAdmin.sol\":{\"keccak256\":\"0xd515b602fe7ab719d61b978744cd2439ad9e85c1c90512a05cfeec415b2cefea\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://424f95d45c4b54d8119dbc347d646846fa08b00d60bf08a4733d2bba3e0dbf3f\",\"dweb:/ipfs/QmbGPqjca98BsqdYKjhNmy9BW4f6XFEtXEiJjk7B8Nua6T\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IGaugeController.sol\":{\"keccak256\":\"0x610350d55cff64fb001b59013903c5e47d16ed629868b7ba64a3f6418ea50bed\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8d89d3266385eccbd5fe83308aa1d049f58925712d2c5db464fcba87ceefc2a2\",\"dweb:/ipfs/Qmf6xpaWwQxbghyEAXK87bJMXFngX9SxijMtVMo71VZebW\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/ILiquidityGauge.sol\":{\"keccak256\":\"0xf979b4cfc4f948e9002f3cb515d45a30b9e726c7dd64ae4c57eba29f59d56937\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b61f76d284ed69ed8358592f20901d99065fbd94ab7f7ffdeb653a58044d7603\",\"dweb:/ipfs/QmRRn7WQie95nuAMMZz4gKg1RKvtsiwo34PtSmptEWiChr\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IRewardTokenDistributor.sol\":{\"keccak256\":\"0x3cfe888844bebc82ed1d2c14a0f196a0d27c7ece1d8ab6f38a24191bb9ec5c7d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://93f11eecf3517891acb0e03dda1a2954a5f23e5505639e3a8419798bcbf8f186\",\"dweb:/ipfs/QmdjyMYbsaEZ5pmytY1MNGp7q73UATFuU9wrP5ZwAr5ytV\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IStakingLiquidityGauge.sol\":{\"keccak256\":\"0xa3834d4f4089781573c4ad041a6418f7398846a6ad5dbd48925b7bb09e9e25c7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fc7ffb5032f5473e5014815bc1f95449df048586669ce34ea9cf1a6b2d0be00e\",\"dweb:/ipfs/QmXpoLGNVaYNE35HiNEJet7HSfduZGHXNNjGX4Lg3HK6XM\"]},\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IVotingEscrow.sol\":{\"keccak256\":\"0x4371694195d18a899a5b2b5a76f15ef1c2cc5f5c865666d98e0888c40c8a43f8\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7cee60f74e9cfb02a043fa6076a26eafd1c332744037cb8cbc2567086ee6d9d6\",\"dweb:/ipfs/Qmedh1b7WYcJekSQ2jkbhqb1nTgwJwcLw1wjfqoD1zyumo\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IButtonWrapper.sol\":{\"keccak256\":\"0xe51a868433e08ea0b86500132c8d6d81ca512f7e2e2b595957ac8764d8239871\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://62e5352b58da889df4add1fdbffb9fbe02066a4641d39afbfc9a3c3ab8efe566\",\"dweb:/ipfs/QmRFNevDWnJRmmJ8tpKmrU48q83zVfpSZyBifaXZhWhWGM\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IReaperTokenVault.sol\":{\"keccak256\":\"0x6a257cfac7dace92b12549a93d108395c3fb79ae087250ebd4ce1b09eaaa3fc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a142bc9c6d51bca45363428d0968fc91ec963f67f3bab87c88c674a9fac526a7\",\"dweb:/ipfs/QmQnSc5YrXhroim48ufpLYHrEd6bcUr5jfNgP9xHpRokZU\"]},\"@balancer-labs/v2-interfaces/contracts/pool-linear/IUnbuttonToken.sol\":{\"keccak256\":\"0x60b085be0d2d9d06e84cd0a81524354dbbe015057fa2440c2693f8c88c4dfcd0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e91b93f562da82e830951841c59423dd8ff04422fb082dd599db1dcb0f241e9\",\"dweb:/ipfs/QmXq724p2Q9KbRvJSgF4iHhABgLoFywCqMWDQMDQdXkAMf\"]},\"@balancer-labs/v2-interfaces/contracts/pool-weighted/WeightedPoolUserData.sol\":{\"keccak256\":\"0x28f09f096b04591e0103703f59ce1a0bdd7b625d374af64ce0885bf44ba68caf\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1ef63334921c100babb46d04c081e307c2322de485ac84472218f05c66d5c25c\",\"dweb:/ipfs/QmQNVfyB4fg5cZR6jWyNvXDmDdKw1qPMjBsT4RE1Nr8SMT\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IERC4626.sol\":{\"keccak256\":\"0x3549335fc8594c9b771a9dd4f104aa607a1e21835668a9455ca0cd1347e643df\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9e5af487c9cf2a44e272096e64b9cb6036cb5c89d6b297f92254516fd2a2cef0\",\"dweb:/ipfs/QmZp6kUZKNckk7v1KKD3srUHWmgHyqUsv8d3MEhSVrxBcU\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20PermitDAI.sol\":{\"keccak256\":\"0xeec129bf522647ca794b285d9074e8cad96e160ac8177a03d7acda01091dfcf2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02c7b3afcd70c3df022d79afa2a8756769479061adad149e3429f6827a77088\",\"dweb:/ipfs/QmerJKvU1nVr6RGW5g8pWk9ax6AYSMpzZrQ6UU9VQprmAV\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IBalancerRelayer.sol\":{\"keccak256\":\"0xdae118d8fb7051e9ad9f2fcc1e4b961a18f6e2fbc5d7e7db1e80d3da1797e8d9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5b7ac161db322b46edeca265adfae0fa8f54524a25648ec07d6d430e0dc8d1a7\",\"dweb:/ipfs/QmdjG3roapRAhSx3XFaYCHKyhtD5UZCDwJKPUtNJ9j4ZEg\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/InputHelpers.sol\":{\"keccak256\":\"0xb9f711fe78be500e514d52ab9d39319ab05019a82a70be8ca071d0c8a7e2cb4c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://33f606957103269b63c5892bb843ff17af87dfe9ecdb560c12ff0b9f29aaf3a9\",\"dweb:/ipfs/QmUS1HHLQHEnNVhbGidzwnfW7PLoQDv3oq85edWRXgEoeM\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/VaultHelpers.sol\":{\"keccak256\":\"0xe34a73f883e96c7fef1750edc94b7940f0ac0fd3b43feae13cb7cde0da130c66\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://027cf01075479e0a51f17678431e215d17f23773c5cb66c59ddaa6d052f5cbda\",\"dweb:/ipfs/QmPFaTfNLoKkufU6n9Q8n1k2R2WCT1vTRosNXJS4sm8WxQ\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xfa4216e1e8089d1141ed73af197c4a390b6b4722c91821ad12dacd3cf81739f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f30785ec65a1a46181b4724398f39157ba11967327e770b29174b130d2dfe8f\",\"dweb:/ipfs/Qmem8qK7ExQnQ24Def6FEmLHcjC69JbvPXcnwdcosf7LNM\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Address.sol\":{\"keccak256\":\"0xd0124aa262584bcdc163089547074252ace79201c02de2573fc8154cdc024b25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://333957f2afd70aef1757e5e84a8ed6e5048eb8233448a3c67e7111ae9f01b6bc\",\"dweb:/ipfs/QmSQcuZH5rkS8D1PGt6tJZpkPM8onWPwNe24iEVjZWidt4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ReentrancyGuard.sol\":{\"keccak256\":\"0x5307df1dd5e4a781ced6167873d3a2ea08d000741f1db8bcf5e12fde4b1a098d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669e378e0dd6083d04a6878f2c5b871ddf91e1d9c5c24e6c814589948ad34133\",\"dweb:/ipfs/QmcysgpZHtQgqo6JqYMp3o5GxWy2y5hbK3RDu2kSSgedHv\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-vault/contracts/AssetHelpers.sol\":{\"keccak256\":\"0x76dea7a32c6555bf0db82b5f53ee18b213ee551bfd6ce5118378a40b9991a48a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e091bb2fb73b13665c2b8d6f79450d35367feefb201402d664d677810094bdcf\",\"dweb:/ipfs/QmU3GZJimKxmERo6chmnUWcCChffK87thHWoHFBH796o2v\"]},\"contracts/BatchRelayerLibrary.sol\":{\"keccak256\":\"0xb6a0e73bff14c8e165dea3d9ec704b5876af02b4ddc4ec3fc564bf7a0cf83ce1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://529ebe5ce29213d096235bea2e4c1c789145d26f4fbf7cabe50ea4c1833282a9\",\"dweb:/ipfs/QmPwrbLNXM4JzTAwo8KXhjonxazqyCAoRYHTmCD9zHef8G\"]},\"contracts/relayer/AaveWrapping.sol\":{\"keccak256\":\"0xf5cb22d0f0bf6ff9e72d5e0c18579c19be358c9ca84a9e4bc7aa8c6337d52e42\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d8f401a270bb66d936e014ac7ed475d918ff63b4339daa9bd80330d3f8025ad6\",\"dweb:/ipfs/QmbBuChEaRuxEa6njBzoeYz1vkyg5ezV1sbY6FSsrpvrvM\"]},\"contracts/relayer/BalancerRelayer.sol\":{\"keccak256\":\"0xb69401485af333ad66e7cc091da40d25354de1870f64584d017909da9f8a8e7b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e34ee5869335a6fede8b62e5ee6f81bd714b88f58fe4bf4d991d44372333627d\",\"dweb:/ipfs/QmQvEA5R5HXbyPYYC3GEeDwqcBAfsU5kLvRiNByyJqVXrx\"]},\"contracts/relayer/BaseRelayerLibrary.sol\":{\"keccak256\":\"0x8ff74ec1bf461e1a4b51ffbce56660a132fa764402cf2072166a16b20b351139\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e5428b6ec3f59b6537f81af5ce78a15ae5b680623a6c93cefd662a49048cb22\",\"dweb:/ipfs/QmRt2owUCTKjNoDYZhMNXX9AahWzFiMshSBjrroa5orrku\"]},\"contracts/relayer/ERC4626Wrapping.sol\":{\"keccak256\":\"0x2c9be572de93bb1423664fe1870107606cc79956f7ed7bbfacedd6f5de590622\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b27218a9d66b8ffafa0df237e0d0504b60e9dcb025ce8ca86e5a8b9b1576c3b2\",\"dweb:/ipfs/QmNdgJmK69oP2BKseMuvk6fwS8yH9Po6T4z4aAfkMmCsEh\"]},\"contracts/relayer/GaugeActions.sol\":{\"keccak256\":\"0xe609e605e5f3c49c924616d784b22bf4196cd64a0a4c43bcb54dd2122b31007a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://710645c2177d2ab22e5c58bd7238305b9761c13ac99b920106aa05bed9ecbd24\",\"dweb:/ipfs/QmP5ykTt1iyFEn3GfzZsvAZjs1B7Kfhk9g3mdfpRsgCWVX\"]},\"contracts/relayer/IBaseRelayerLibrary.sol\":{\"keccak256\":\"0xc8e76a8c59199bb5ead6a6070190a3730a35c6ad15db67f7f2124bb500c1c839\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6c6bf5cda9bb27bc8fbf1f3608b20363330c7c8e33f6fdb3864d5984fb901bcb\",\"dweb:/ipfs/QmcAg168YEoMSfrMWT6rPbDtdEihHKy52SKokeZmukwDo8\"]},\"contracts/relayer/LidoWrapping.sol\":{\"keccak256\":\"0xb3b3b982b65b19e0d9376ff4810af31cbb8616ca76072690f77c24b1b5793cfb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6eab2ca2c4bf9e8f3b6d002356d5e9848cab4956553e6102714e4215dcdbc884\",\"dweb:/ipfs/QmcTgkP8zpEi8DL3eSh7xXcgdoBppMH3YyuHjTX1fkdJd3\"]},\"contracts/relayer/ReaperWrapping.sol\":{\"keccak256\":\"0xc38380673ab9eb3ba1a8fd67dadeba91b556d42bb2ba9703824b6066260b2292\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://72b3003a77268ba6ebe9a95127bc0f8f5df5260460c79d2730caf938e45c152d\",\"dweb:/ipfs/QmRzcmDborCULffVqWmtExwm8zy1abTfceMqA8LqEZmapP\"]},\"contracts/relayer/UnbuttonWrapping.sol\":{\"keccak256\":\"0x0a5c4336f30926d6ff071b35c7ba85299d5d809567936e826bb95b6f647532a9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c1230d3df30cece5c8d9aa0ac59e920167be7c9a185f54d8037d754dccb7d64a\",\"dweb:/ipfs/QmcHnnRdhrdMAbFY8WgW3wpWxoULBrP6mw4TsR7E6k3bMq\"]},\"contracts/relayer/VaultActions.sol\":{\"keccak256\":\"0x777d58a20e0e7f71eea9dc59f936f78528c02037a47076ad0747a6cb15e2e42b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://837ae5259458637d2dcb23b1f0d7bda936a50745cb36a1d4211f2dc50f3caaaf\",\"dweb:/ipfs/QmaS4wwWtbZVkG8bVqSWRHn47MPfnRHL8eUfd8Z8FchAYC\"]},\"contracts/relayer/VaultPermit.sol\":{\"keccak256\":\"0xef4705f6cdd5833cfff67df26d4b1c360b153d59429064f005b397f2a5a1b9b0\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://9cad4c5a1c93580fdf0f39077b1efa48d14af4bce872ea89aea2ad58fd9592b2\",\"dweb:/ipfs/QmTHkG1hQugzT9B7D1nfLbD96TDiJ9YXSemVQFJX4T8agZ\"]},\"contracts/test/MockBatchRelayerLibrary.sol\":{\"keccak256\":\"0xc5403261d1bd25c719258f4c5e2dc7d39b6e6623113ef956b80a706353a4443d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7c2d847eb4d4d5cc176b962fd303a821f029d446bcb56e3dbdcfe01626545597\",\"dweb:/ipfs/QmfZtYZBWYkstEcj43VhM8QaXXCMzbtBTjLjFq11K1AaBP\"]}},\"version\":1}"}},"contracts/test/MockRecoveryRateProviderPool.sol":{"MockRecoveryRateProviderPool":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"vault","type":"address"},{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"RecoveryModeStateChanged","type":"event"},{"inputs":[],"name":"disableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableRecoveryMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRateProviders","outputs":[{"internalType":"contract IRateProvider[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inRecoveryMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b5060405161088c38038061088c8339818101604052604081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825186602082028301116401000000008211171561008c57600080fd5b82525081516020918201928201910280838360005b838110156100b95781810151838201526020016100a1565b505050509190910160405250503060805250507fba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b00000000000000000000000060a0526001600160601b0319606083901b1660c052805161011590600190602084019061011d565b5050506101a1565b828054828255906000526020600020908101928215610172579160200282015b8281111561017257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061013d565b5061017e929150610182565b5090565b5b8082111561017e5780546001600160a01b0319168155600101610183565b60805160a05160601c60c05160601c6106b96101d3600039806103e25250806102c452508061025752506106b96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063893d20e81161005b578063893d20e814610135578063aaabadc514610166578063b35056b81461016e578063b7b814fc1461018a5761007d565b8063238a2d591461008257806354a844ba146100da578063851c1bb3146100e4575b600080fd5b61008a610192565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100c65781810151838201526020016100ae565b505050509050019250505060405180910390f35b6100e2610201565b005b610123600480360360208110156100fa57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b60408051918252519081900360200190f35b61013d6102c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013d6102e6565b6101766102f5565b604080519115158252519081900360200190f35b6100e26102fe565b606060018054806020026020016040519081016040528092919081815260200182805480156101f757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101cc575b5050505050905090565b61020961034e565b610211610397565b61021b60016103ad565b604080516001815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102f06103de565b905090565b60005460ff1690565b61030661034e565b61030e610477565b61031860006103ad565b604080516000815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b600061037d6000357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b905061039461038c823361048a565b6101916105dc565b50565b6103ab6103a26102f5565b156101b56105dc565b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d602081101561047057600080fd5b5051905090565b6103ab6104826102f5565b6101b66105dc565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b6104a96102c2565b73ffffffffffffffffffffffffffffffffffffffff16141580156104d157506104d1836105ee565b15610513576104de6102c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506105d6565b61051b6103de565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b505190505b92915050565b816105ea576105ea816105f4565b5050565b50600090565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610394917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220e88fb5de411639bb0486230c9c328c384e1befe16a198f9440c54244c7a4e27f64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x88C CODESIZE SUB DUP1 PUSH2 0x88C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP POP PUSH32 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B000000000000000000000000 PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x115 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x11D JUMP JUMPDEST POP POP POP PUSH2 0x1A1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x172 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x172 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x13D JUMP JUMPDEST POP PUSH2 0x17E SWAP3 SWAP2 POP PUSH2 0x182 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x17E JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x183 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B9 PUSH2 0x1D3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3E2 MSTORE POP DUP1 PUSH2 0x2C4 MSTORE POP DUP1 PUSH2 0x257 MSTORE POP PUSH2 0x6B9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xB35056B8 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xB7B814FC EQ PUSH2 0x18A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x238A2D59 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x54A844BA EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x2FE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1CC JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x211 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x21B PUSH1 0x1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F0 PUSH2 0x3DE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x30E PUSH2 0x477 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x0 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH2 0x394 PUSH2 0x38C DUP3 CALLER PUSH2 0x48A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x3A2 PUSH2 0x2F5 JUMP JUMPDEST ISZERO PUSH2 0x1B5 PUSH2 0x5DC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x482 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B PUSH2 0x4A9 PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x4D1 JUMPI POP PUSH2 0x4D1 DUP4 PUSH2 0x5EE JUMP JUMPDEST ISZERO PUSH2 0x513 JUMPI PUSH2 0x4DE PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x51B PUSH2 0x3DE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x5EA JUMPI PUSH2 0x5EA DUP2 PUSH2 0x5F4 JUMP JUMPDEST POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x394 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 DUP16 0xB5 0xDE COINBASE AND CODECOPY 0xBB DIV DUP7 0x23 0xC SWAP13 ORIGIN DUP13 CODESIZE 0x4E SHL 0xEF 0xE1 PUSH11 0x198F9440C54244C7A4E27F PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1003:1161:94:-:0;;;1220:242;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1220:242:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1220:242:94;;;;;;-1:-1:-1;;1331:4:94;2049:46:48;;-1:-1:-1;;1725:14:45;;;-1:-1:-1;1401:14:94;;;-1:-1:-1;1401:14:94;::::2;::::0;1425:30;;::::2;::::0;-1:-1:-1;;1425:30:94::2;::::0;::::2;::::0;::::2;:::i;:::-;;1220:242:::0;;1003:1161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1003:1161:94;-1:-1:-1;1003:1161:94;;;;;;;;;;;-1:-1:-1;1003:1161:94;;;;;;;-1:-1:-1;1003:1161:94;;;-1:-1:-1;1003:1161:94;:::i;:::-;;;:::o;:::-;;;;;;;;;;-1:-1:-1;1003:1161:94;;;-1:-1:-1;1003:1161:94;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3626":[{"length":32,"start":708}],"3980":[{"length":32,"start":599}],"14482":[{"length":32,"start":994}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061007d5760003560e01c8063893d20e81161005b578063893d20e814610135578063aaabadc514610166578063b35056b81461016e578063b7b814fc1461018a5761007d565b8063238a2d591461008257806354a844ba146100da578063851c1bb3146100e4575b600080fd5b61008a610192565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100c65781810151838201526020016100ae565b505050509050019250505060405180910390f35b6100e2610201565b005b610123600480360360208110156100fa57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b60408051918252519081900360200190f35b61013d6102c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013d6102e6565b6101766102f5565b604080519115158252519081900360200190f35b6100e26102fe565b606060018054806020026020016040519081016040528092919081815260200182805480156101f757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101cc575b5050505050905090565b61020961034e565b610211610397565b61021b60016103ad565b604080516001815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102f06103de565b905090565b60005460ff1690565b61030661034e565b61030e610477565b61031860006103ad565b604080516000815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b600061037d6000357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b905061039461038c823361048a565b6101916105dc565b50565b6103ab6103a26102f5565b156101b56105dc565b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d602081101561047057600080fd5b5051905090565b6103ab6104826102f5565b6101b66105dc565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b6104a96102c2565b73ffffffffffffffffffffffffffffffffffffffff16141580156104d157506104d1836105ee565b15610513576104de6102c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506105d6565b61051b6103de565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b505190505b92915050565b816105ea576105ea816105f4565b5050565b50600090565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610394917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220e88fb5de411639bb0486230c9c328c384e1befe16a198f9440c54244c7a4e27f64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xB35056B8 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xB7B814FC EQ PUSH2 0x18A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x238A2D59 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x54A844BA EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x2FE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1CC JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x211 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x21B PUSH1 0x1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F0 PUSH2 0x3DE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x30E PUSH2 0x477 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x0 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH2 0x394 PUSH2 0x38C DUP3 CALLER PUSH2 0x48A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x3A2 PUSH2 0x2F5 JUMP JUMPDEST ISZERO PUSH2 0x1B5 PUSH2 0x5DC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x482 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B PUSH2 0x4A9 PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x4D1 JUMPI POP PUSH2 0x4D1 DUP4 PUSH2 0x5EE JUMP JUMPDEST ISZERO PUSH2 0x513 JUMPI PUSH2 0x4DE PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x51B PUSH2 0x3DE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x5EA JUMPI PUSH2 0x5EA DUP2 PUSH2 0x5F4 JUMP JUMPDEST POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x394 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 DUP16 0xB5 0xDE COINBASE AND CODECOPY 0xBB DIV DUP7 0x23 0xC SWAP13 ORIGIN DUP13 CODESIZE 0x4E SHL 0xEF 0xE1 PUSH11 0x198F9440C54244C7A4E27F PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"1003:1161:94:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1494:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3432:562:46;;;:::i;:::-;;2607:430:48;;;;;;;;;;;;;;;;-1:-1:-1;2607:430:48;;;;:::i;:::-;;;;;;;;;;;;;;;;1752:80:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1838:101;;;:::i;1797:99:94:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4242:511:46;;;:::i;1494:122:94:-;1554:22;1595:14;1588:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1494:122;:::o;3432:562:46:-;2276:21:48;:19;:21::i;:::-;3882:26:46::1;:24;:26::i;:::-;3919:22;3936:4;3919:16;:22::i;:::-;3957:30;::::0;;3982:4:::1;3957:30:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;3432:562::o:0;2607:430:48:-;2979:50;;;2996:22;2979:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2969:61;;;;;2607:430;;;:::o;1752:80:45:-;1819:6;1752:80;:::o;1838:101::-;1886:11;1916:16;:14;:16::i;:::-;1909:23;;1838:101;:::o;1797:99:94:-;1853:4;1876:13;;;1797:99;:::o;4242:511:46:-;2276:21:48;:19;:21::i;:::-;4642:23:46::1;:21;:23::i;:::-;4676;4693:5;4676:16;:23::i;:::-;4715:31;::::0;;4740:5:::1;4715:31:::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;4242:511::o:0;2420:181:48:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;:::-;2420:181;:::o;5600:119:46:-;5660:52;5670:16;:14;:16::i;:::-;5669:17;12432:3:19;5660:8:46;:52::i;:::-;5600:119::o;1902:98:94:-;1970:13;:23;;;;;;;;;;;;;1902:98::o;1652:117::-;1710:11;1740:6;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1740:22:94;;-1:-1:-1;1652:117:94;:::o;5402:119:46:-;5459:55;5468:16;:14;:16::i;:::-;12490:3:19;5459:8:46;:55::i;1945:544:45:-;2033:4;1639:42;2054:10;:8;:10::i;:::-;:29;;;;2053:63;;;;;2088:28;2107:8;2088:18;:28::i;:::-;2049:434;;;2248:10;:8;:10::i;:::-;2234:24;;:10;:24;;;2227:31;;;;2049:434;2411:16;:14;:16::i;:::-;:27;;;2439:8;2449:7;2466:4;2411:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2411:61:45;;-1:-1:-1;2049:434:45;1945:544;;;;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;2495:103:45:-;-1:-1:-1;2563:4:45;;2495:103::o;1459:126:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"disableRecoveryMode()":"b7b814fc","enableRecoveryMode()":"54a844ba","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getOwner()":"893d20e8","getRateProviders()":"238a2d59","inRecoveryMode()":"b35056b8"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"RecoveryModeStateChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"disableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enableRecoveryMode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateProviders\",\"outputs\":[{\"internalType\":\"contract IRateProvider[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inRecoveryMode\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disableRecoveryMode()\":{\"details\":\"Protocol fees are not paid while in Recovery Mode, so it should only remain active for as long as strictly necessary.\"},\"enableRecoveryMode()\":{\"details\":\"Does not otherwise affect pool operations (beyond deferring payment of protocol fees), though some pools may perform certain operations in a \\\"safer\\\" manner that is less likely to fail, in an attempt to keep the pool running, even in a pathological state. Unlike the Pause operation, which is only available during a short window after factory deployment, Recovery Mode can always be enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getRateProviders()\":{\"details\":\"Returns the rate provider for each of the Pool's tokens. A zero-address entry means there's no rate provider for that token.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disableRecoveryMode()\":{\"notice\":\"Disable recovery mode, which disables the special safe exit path for LPs.\"},\"enableRecoveryMode()\":{\"notice\":\"Enable recovery mode, which enables a special safe exit path for LPs.\"},\"inRecoveryMode()\":{\"notice\":\"Override to check storage and return whether the pool is in Recovery Mode\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRecoveryRateProviderPool.sol\":\"MockRecoveryRateProviderPool\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":{\"keccak256\":\"0xb4b24f60e4d67702f4e194e44e185fa0ee3a3f695afa57240b9e8291674e89fe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d891a555a69861488faa9d51a823469e1195f8b548c40aa1b034084507a8c30d\",\"dweb:/ipfs/QmPqUT8eX9oFXDku3m18541eEsNXgVcFNEX8MjJMrAiUaq\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/test/MockRecoveryRateProviderPool.sol\":{\"keccak256\":\"0x9b09d1199cd4172daae79a934f0b6c8cc433d6d5440dc06a5c0e5e4c0fe0ea6f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e3bef54f01f026e024846e8409624bdebb46c280d121057c23cecb4289384c9\",\"dweb:/ipfs/QmVSitcwTnh245tPVJJ6nrZhWgJbJnR7ouoD5wFE4Fm1sS\"]}},\"version\":1}"}},"contracts/test/MockRecoveryRateProviderPoolFactory.sol":{"MockRecoveryRateProviderPoolFactory":{"abi":[{"inputs":[{"internalType":"contract IVault","name":"_vault","type":"address"},{"internalType":"contract IProtocolFeePercentagesProvider","name":"protocolFeeProvider","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"FactoryDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"PoolCreated","type":"event"},{"inputs":[{"internalType":"contract IRateProvider[]","name":"rateProviders","type":"address[]"}],"name":"create","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"getActionId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAuthorizer","outputs":[{"internalType":"contract IAuthorizer","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCreationCodeContracts","outputs":[{"internalType":"address","name":"contractA","type":"address"},{"internalType":"address","name":"contractB","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProtocolFeePercentagesProvider","outputs":[{"internalType":"contract IProtocolFeePercentagesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getVault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"isPoolFromFactory","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"6101606040523480156200001257600080fd5b5060405162001695380380620016958339810160408190526200003591620001f3565b8181604051806020016200004990620001e5565b601f1982820381018352601f90910116604052805183903090839060006002820460a081905280830360e081905281855290915083620000958162000106602090811b620003d817901c565b60601b6001600160601b0319166080528285018051838252620000c48262000106602090811b620003d817901c565b6001600160601b0319606091821b811660c05296909352905261010095909552505092821b831661012052509290921b90911661014052506200024792505050565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f09084529150620001546001600160a01b03831615156101ac6200015a565b50919050565b816200016b576200016b816200016f565b5050565b62000181816210905360ea1b62000184565b50565b62461bcd60e51b600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b61088c8062000e0983390190565b6000806040838503121562000206578182fd5b8251620002138162000231565b6020840151909250620002268162000231565b809150509250929050565b6001600160a01b03811681146200018157600080fd5b60805160601c60a05160c05160601c60e051610100516101205160601c6101405160601c610b58620002b1600039806102b952508061032f5250806102df52508061043f5250806101c252806104bb5250806104605250806101a152806104975250610b586000f3fe608060405234801561001057600080fd5b50600436106100bd5760003560e01c80636c57f5a911610076578063851c1bb31161005b578063851c1bb3146101505780638d928af814610170578063aaabadc514610178576100bd565b80636c57f5a914610140578063739238d614610148576100bd565b80632f2770db116100a75780632f2770db146100f657806362c54dbd146101005780636634b75314610120576100bd565b8062c194db146100c2578063174481fa146100e0575b600080fd5b6100ca610180565b6040516100d79190610a01565b60405180910390f35b6100e861019f565b6040516100d792919061099a565b6100fe6101e5565b005b61011361010e366004610822565b61024a565b6040516100d79190610979565b61013361012e366004610806565b610283565b6040516100d791906109c1565b6101336102ae565b6101136102b7565b61016361015e3660046108ed565b6102db565b6040516100d791906109cc565b61011361032d565b610113610351565b606061019a60405180602001604052806000815250610437565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b6101ed610510565b6101f5610559565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790556040517f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d5090600090a1565b600061027d61025761032d565b83604051602001610269929190610a72565b60405160208183030381529060405261056e565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60015460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610310929190610949565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061035b61032d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a057600080fd5b505afa1580156103b4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019a919061092d565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f0908452915061043173ffffffffffffffffffffffffffffffffffffffff831615156101ac610602565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c5060208981019089850101610502818386610614565b505050505050505050919050565b600061053f6000357fffffffff00000000000000000000000000000000000000000000000000000000166102db565b905061055661054e823361068e565b610191610602565b50565b61056c6105646102ae565b1560d3610602565b565b6000610578610559565b60006105838361072b565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a292915050565b81610610576106108161076c565b5050565b5b602081106106525781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610615565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b6000610698610351565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016106d4939291906109d5565b60206040518083038186803b1580156106ec57600080fd5b505afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072491906108cd565b9392505050565b6000606061073883610437565b905060008151602083016000f0905073ffffffffffffffffffffffffffffffffffffffff8116610724573d6000803e3d6000fd5b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610556917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803561027d81610b00565b600060208284031215610817578081fd5b813561072481610b00565b60006020808385031215610834578182fd5b823567ffffffffffffffff8082111561084b578384fd5b818501915085601f83011261085e578384fd5b81358181111561086c578485fd5b838102915061087c848301610ad9565b8181528481019084860184860187018a1015610896578788fd5b8795505b838610156108c0576108ac8a826107fb565b83526001959095019491860191860161089a565b5098975050505050505050565b6000602082840312156108de578081fd5b81518015158114610724578182fd5b6000602082840312156108fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610724578182fd5b60006020828403121561093e578081fd5b815161072481610b00565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b81811015610a2d57858101830151858201604001528201610a11565b81811115610a3e5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006040820173ffffffffffffffffffffffffffffffffffffffff808616845260206040818601528286518085526060870191508288019450855b81811015610acb578551851683529483019491830191600101610aad565b509098975050505050505050565b60405181810167ffffffffffffffff81118282101715610af857600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461055657600080fdfea264697066735822122075ad68ccababcc400f4447c13cd42441a161e65640daf88412504fed021faee364736f6c6343000701003360e060405234801561001057600080fd5b5060405161088c38038061088c8339818101604052604081101561003357600080fd5b81516020830180516040519294929383019291908464010000000082111561005a57600080fd5b90830190602082018581111561006f57600080fd5b825186602082028301116401000000008211171561008c57600080fd5b82525081516020918201928201910280838360005b838110156100b95781810151838201526020016100a1565b505050509190910160405250503060805250507fba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b00000000000000000000000060a0526001600160601b0319606083901b1660c052805161011590600190602084019061011d565b5050506101a1565b828054828255906000526020600020908101928215610172579160200282015b8281111561017257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061013d565b5061017e929150610182565b5090565b5b8082111561017e5780546001600160a01b0319168155600101610183565b60805160a05160601c60c05160601c6106b96101d3600039806103e25250806102c452508061025752506106b96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063893d20e81161005b578063893d20e814610135578063aaabadc514610166578063b35056b81461016e578063b7b814fc1461018a5761007d565b8063238a2d591461008257806354a844ba146100da578063851c1bb3146100e4575b600080fd5b61008a610192565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156100c65781810151838201526020016100ae565b505050509050019250505060405180910390f35b6100e2610201565b005b610123600480360360208110156100fa57600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b60408051918252519081900360200190f35b61013d6102c2565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61013d6102e6565b6101766102f5565b604080519115158252519081900360200190f35b6100e26102fe565b606060018054806020026020016040519081016040528092919081815260200182805480156101f757602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116101cc575b5050505050905090565b61020961034e565b610211610397565b61021b60016103ad565b604080516001815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b60006102f06103de565b905090565b60005460ff1690565b61030661034e565b61030e610477565b61031860006103ad565b604080516000815290517feff3d4d215b42bf0960be9c6d5e05c22cba4df6627a3a523e2acee733b5854c89181900360200190a1565b600061037d6000357fffffffff0000000000000000000000000000000000000000000000000000000016610251565b905061039461038c823361048a565b6101916105dc565b50565b6103ab6103a26102f5565b156101b56105dc565b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561044657600080fd5b505afa15801561045a573d6000803e3d6000fd5b505050506040513d602081101561047057600080fd5b5051905090565b6103ab6104826102f5565b6101b66105dc565b600073ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1ba1b6104a96102c2565b73ffffffffffffffffffffffffffffffffffffffff16141580156104d157506104d1836105ee565b15610513576104de6102c2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490506105d6565b61051b6103de565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b1580156105a757600080fd5b505afa1580156105bb573d6000803e3d6000fd5b505050506040513d60208110156105d157600080fd5b505190505b92915050565b816105ea576105ea816105f4565b5050565b50600090565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610394917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220e88fb5de411639bb0486230c9c328c384e1befe16a198f9440c54244c7a4e27f64736f6c63430007010033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1695 CODESIZE SUB DUP1 PUSH3 0x1695 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1F3 JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH3 0x49 SWAP1 PUSH3 0x1E5 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 MSTORE DUP1 MLOAD DUP4 SWAP1 ADDRESS SWAP1 DUP4 SWAP1 PUSH1 0x0 PUSH1 0x2 DUP3 DIV PUSH1 0xA0 DUP2 SWAP1 MSTORE DUP1 DUP4 SUB PUSH1 0xE0 DUP2 SWAP1 MSTORE DUP2 DUP6 MSTORE SWAP1 SWAP2 POP DUP4 PUSH3 0x95 DUP2 PUSH3 0x106 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x3D8 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE DUP3 DUP6 ADD DUP1 MLOAD DUP4 DUP3 MSTORE PUSH3 0xC4 DUP3 PUSH3 0x106 PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x3D8 OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xC0 MSTORE SWAP7 SWAP1 SWAP4 MSTORE SWAP1 MSTORE PUSH2 0x100 SWAP6 SWAP1 SWAP6 MSTORE POP POP SWAP3 DUP3 SHL DUP4 AND PUSH2 0x120 MSTORE POP SWAP3 SWAP1 SWAP3 SHL SWAP1 SWAP2 AND PUSH2 0x140 MSTORE POP PUSH3 0x247 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH32 0x602038038060206000396000F3FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE DUP1 DUP4 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP2 ADD DUP5 DUP5 CREATE SWAP1 DUP5 MSTORE SWAP2 POP PUSH3 0x154 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO PUSH2 0x1AC PUSH3 0x15A JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH3 0x16B JUMPI PUSH3 0x16B DUP2 PUSH3 0x16F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH3 0x181 DUP2 PUSH3 0x109053 PUSH1 0xEA SHL PUSH3 0x184 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0x461BCD PUSH1 0xE5 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST PUSH2 0x88C DUP1 PUSH3 0xE09 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x206 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH3 0x213 DUP2 PUSH3 0x231 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x226 DUP2 PUSH3 0x231 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0xB58 PUSH3 0x2B1 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2B9 MSTORE POP DUP1 PUSH2 0x32F MSTORE POP DUP1 PUSH2 0x2DF MSTORE POP DUP1 PUSH2 0x43F MSTORE POP DUP1 PUSH2 0x1C2 MSTORE DUP1 PUSH2 0x4BB MSTORE POP DUP1 PUSH2 0x460 MSTORE POP DUP1 PUSH2 0x1A1 MSTORE DUP1 PUSH2 0x497 MSTORE POP PUSH2 0xB58 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C57F5A9 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x178 JUMPI PUSH2 0xBD JUMP JUMPDEST DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x739238D6 EQ PUSH2 0x148 JUMPI PUSH2 0xBD JUMP JUMPDEST DUP1 PUSH4 0x2F2770DB GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x2F2770DB EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x62C54DBD EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0x120 JUMPI PUSH2 0xBD JUMP JUMPDEST DUP1 PUSH3 0xC194DB EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x174481FA EQ PUSH2 0xE0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCA PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE8 PUSH2 0x19F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP3 SWAP2 SWAP1 PUSH2 0x99A JUMP JUMPDEST PUSH2 0xFE PUSH2 0x1E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x113 PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x24A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x806 JUMP JUMPDEST PUSH2 0x283 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x9C1 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x2AE JUMP JUMPDEST PUSH2 0x113 PUSH2 0x2B7 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x9CC JUMP JUMPDEST PUSH2 0x113 PUSH2 0x32D JUMP JUMPDEST PUSH2 0x113 PUSH2 0x351 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x19A PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x437 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH32 0x0 SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x1ED PUSH2 0x510 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x559 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D PUSH2 0x257 PUSH2 0x32D JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x269 SWAP3 SWAP2 SWAP1 PUSH2 0xA72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x56E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x310 SWAP3 SWAP2 SWAP1 PUSH2 0x949 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35B PUSH2 0x32D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0x92D JUMP JUMPDEST DUP1 MLOAD PUSH32 0x602038038060206000396000F3FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE DUP1 DUP4 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP2 ADD DUP5 DUP5 CREATE SWAP1 DUP5 MSTORE SWAP2 POP PUSH2 0x431 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x1AC PUSH2 0x602 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH32 0x0 DUP2 DUP2 ADD DUP6 DUP2 ADD DUP5 DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 SWAP7 MSTORE DUP1 DUP6 MSTORE SWAP4 SWAP6 PUSH32 0x0 SWAP6 SWAP3 SWAP5 PUSH32 0x0 SWAP5 SWAP4 DUP9 ADD DUP7 PUSH1 0x0 DUP3 DUP11 EXTCODECOPY DUP5 PUSH1 0x0 DUP9 DUP4 ADD DUP9 EXTCODECOPY POP PUSH1 0x20 DUP10 DUP2 ADD SWAP1 DUP10 DUP6 ADD ADD PUSH2 0x502 DUP2 DUP4 DUP7 PUSH2 0x614 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2DB JUMP JUMPDEST SWAP1 POP PUSH2 0x556 PUSH2 0x54E DUP3 CALLER PUSH2 0x68E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x602 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x56C PUSH2 0x564 PUSH2 0x2AE JUMP JUMPDEST ISZERO PUSH1 0xD3 PUSH2 0x602 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x578 PUSH2 0x559 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x583 DUP4 PUSH2 0x72B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 SWAP1 LOG2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x610 JUMPI PUSH2 0x610 DUP2 PUSH2 0x76C JUMP JUMPDEST POP POP JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x652 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x615 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x698 PUSH2 0x351 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9D5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x724 SWAP2 SWAP1 PUSH2 0x8CD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x738 DUP4 PUSH2 0x437 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 DUP4 ADD PUSH1 0x0 CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x724 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x556 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x27D DUP2 PUSH2 0xB00 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x817 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x724 DUP2 PUSH2 0xB00 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x834 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x85E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x86C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x87C DUP5 DUP4 ADD PUSH2 0xAD9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x896 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x8C0 JUMPI PUSH2 0x8AC DUP11 DUP3 PUSH2 0x7FB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x89A JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8DE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x724 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8FE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x724 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x93E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x724 DUP2 PUSH2 0xB00 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA2D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA11 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA3E JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xACB JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xAAD JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xAF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xAD68CCABABCC400F4447C13CD42441A161E65640DAF8 DUP5 SLT POP 0x4F 0xED MUL 0x1F 0xAE 0xE3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x88C CODESIZE SUB DUP1 PUSH2 0x88C DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA1 JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 MSTORE POP POP ADDRESS PUSH1 0x80 MSTORE POP POP PUSH32 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B000000000000000000000000 PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH2 0x115 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH2 0x11D JUMP JUMPDEST POP POP POP PUSH2 0x1A1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x172 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x172 JUMPI DUP3 MLOAD DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR DUP3 SSTORE PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x13D JUMP JUMPDEST POP PUSH2 0x17E SWAP3 SWAP2 POP PUSH2 0x182 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x17E JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x183 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x6B9 PUSH2 0x1D3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x3E2 MSTORE POP DUP1 PUSH2 0x2C4 MSTORE POP DUP1 PUSH2 0x257 MSTORE POP PUSH2 0x6B9 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x893D20E8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x893D20E8 EQ PUSH2 0x135 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x166 JUMPI DUP1 PUSH4 0xB35056B8 EQ PUSH2 0x16E JUMPI DUP1 PUSH4 0xB7B814FC EQ PUSH2 0x18A JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x238A2D59 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x54A844BA EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0xE4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x192 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x201 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x123 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2C2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x13D PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0x176 PUSH2 0x2F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x2FE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x1F7 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1CC JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x209 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x211 PUSH2 0x397 JUMP JUMPDEST PUSH2 0x21B PUSH1 0x1 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP5 AND DUP3 DUP5 ADD MSTORE DUP3 MLOAD PUSH1 0x24 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP3 ADD SWAP1 SWAP3 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2F0 PUSH2 0x3DE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0x306 PUSH2 0x34E JUMP JUMPDEST PUSH2 0x30E PUSH2 0x477 JUMP JUMPDEST PUSH2 0x318 PUSH1 0x0 PUSH2 0x3AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE SWAP1 MLOAD PUSH32 0xEFF3D4D215B42BF0960BE9C6D5E05C22CBA4DF6627A3A523E2ACEE733B5854C8 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37D PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x251 JUMP JUMPDEST SWAP1 POP PUSH2 0x394 PUSH2 0x38C DUP3 CALLER PUSH2 0x48A JUMP JUMPDEST PUSH2 0x191 PUSH2 0x5DC JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x3A2 PUSH2 0x2F5 JUMP JUMPDEST ISZERO PUSH2 0x1B5 PUSH2 0x5DC JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x45A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x3AB PUSH2 0x482 PUSH2 0x2F5 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x5DC JUMP JUMPDEST PUSH1 0x0 PUSH20 0xBA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1BA1B PUSH2 0x4A9 PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0x4D1 JUMPI POP PUSH2 0x4D1 DUP4 PUSH2 0x5EE JUMP JUMPDEST ISZERO PUSH2 0x513 JUMPI PUSH2 0x4DE PUSH2 0x2C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ SWAP1 POP PUSH2 0x5D6 JUMP JUMPDEST PUSH2 0x51B PUSH2 0x3DE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x5EA JUMPI PUSH2 0x5EA DUP2 PUSH2 0x5F4 JUMP JUMPDEST POP POP JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x394 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 DUP16 0xB5 0xDE COINBASE AND CODECOPY 0xBB DIV DUP7 0x23 0xC SWAP13 ORIGIN DUP13 CODESIZE 0x4E SHL 0xEF 0xE1 PUSH11 0x198F9440C54244C7A4E27F PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"938:479:95:-:0;;;1008:250;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1112:6;1120:19;1141:47;;;;;;;;:::i;:::-;-1:-1:-1;;1141:47:95;;;;;;;;;;;;;;1942:19:49;;2492:5:47;;1143:4:54;;1141:47:95;;1119:31:54;2336:1:49;1942:19;2317:20;2347:38;;;;2424:36;;;2470:38;;;;3172:40;;;2317:20;;-1:-1:-1;3172:40:49;3347:34;3172:40;3347:19;;;;;;;:34;;:::i;:::-;3322:59;;-1:-1:-1;;;;;;3322:59:49;;;3920:36;;;3982:20;;4015:40;;;4240:34;3920:36;4240:19;;;;;;;:34;;:::i;:::-;-1:-1:-1;;;;;;4215:59:49;;;;;;;;4429:39;;;;4481:32;;2049:46:48;;;;;-1:-1:-1;;1162:14:54;;;;;::::1;::::0;-1:-1:-1;2509:42:47;;;;;;;::::2;::::0;-1:-1:-1;938:479:95;;-1:-1:-1;;;938:479:95;2737:1366:50;3232:11;;2514:66;3465:34;;;2790:19;;3768:2;3752:19;;3238:4;2790:19;3736:36;3872:24;;;3721:51;-1:-1:-1;4030:66:50;-1:-1:-1;;;;;4039:25:50;;;;11916:3:19;4030:8:50;:66::i;:::-;2737:1366;;;;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1459:126::-;1506:28;1514:9;-1:-1:-1;;;1506:7:19;:28::i;:::-;1459:126;:::o;1692:3378::-;-1:-1:-1;;;1754:18:19;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;938:479:95;;;;;;;;:::o;397:509:-1:-;;;584:2;572:9;563:7;559:23;555:32;552:2;;;-1:-1;;590:12;552:2;325:6;319:13;337:48;379:5;337:48;:::i;:::-;768:2;858:22;;123:13;642:89;;-1:-1;141:73;123:13;141:73;:::i;:::-;776:114;;;;546:360;;;;;:::o;1390:197::-;-1:-1;;;;;1324:54;;1489:75;;1479:2;;1578:1;;1568:12;1473:114;938:479:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3848":[{"length":32,"start":697}],"3980":[{"length":32,"start":735}],"4055":[{"length":32,"start":417},{"length":32,"start":1175}],"4057":[{"length":32,"start":1120}],"4059":[{"length":32,"start":450},{"length":32,"start":1211}],"4061":[{"length":32,"start":1087}],"4804":[{"length":32,"start":815}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100bd5760003560e01c80636c57f5a911610076578063851c1bb31161005b578063851c1bb3146101505780638d928af814610170578063aaabadc514610178576100bd565b80636c57f5a914610140578063739238d614610148576100bd565b80632f2770db116100a75780632f2770db146100f657806362c54dbd146101005780636634b75314610120576100bd565b8062c194db146100c2578063174481fa146100e0575b600080fd5b6100ca610180565b6040516100d79190610a01565b60405180910390f35b6100e861019f565b6040516100d792919061099a565b6100fe6101e5565b005b61011361010e366004610822565b61024a565b6040516100d79190610979565b61013361012e366004610806565b610283565b6040516100d791906109c1565b6101336102ae565b6101136102b7565b61016361015e3660046108ed565b6102db565b6040516100d791906109cc565b61011361032d565b610113610351565b606061019a60405180602001604052806000815250610437565b905090565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000009091565b6101ed610510565b6101f5610559565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790556040517f432acbfd662dbb5d8b378384a67159b47ca9d0f1b79f97cf64cf8585fa362d5090600090a1565b600061027d61025761032d565b83604051602001610269929190610a72565b60405160208183030381529060405261056e565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b60015460ff1690565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610310929190610949565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061035b61032d565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103a057600080fd5b505afa1580156103b4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019a919061092d565b80517f602038038060206000396000f3fefefefefefefefefefefefefefefefefefefe808352600091602081018484f0908452915061043173ffffffffffffffffffffffffffffffffffffffff831615156101ac610602565b50919050565b8051604080517f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000818101858101848101602090810190965280855293957f00000000000000000000000000000000000000000000000000000000000000009592947f000000000000000000000000000000000000000000000000000000000000000094938801866000828a3c846000888301883c5060208981019089850101610502818386610614565b505050505050505050919050565b600061053f6000357fffffffff00000000000000000000000000000000000000000000000000000000166102db565b905061055661054e823361068e565b610191610602565b50565b61056c6105646102ae565b1560d3610602565b565b6000610578610559565b60006105838361072b565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935090917f83a48fbcfc991335314e74d0496aab6a1987e992ddc85dddbcc4d6dd6ef2e9fc9190a292915050565b81610610576106108161076c565b5050565b5b602081106106525781518352602092830192909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001610615565b905182516020929092036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0180199091169116179052565b6000610698610351565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016106d4939291906109d5565b60206040518083038186803b1580156106ec57600080fd5b505afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072491906108cd565b9392505050565b6000606061073883610437565b905060008151602083016000f0905073ffffffffffffffffffffffffffffffffffffffff8116610724573d6000803e3d6000fd5b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b604452610556917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b803561027d81610b00565b600060208284031215610817578081fd5b813561072481610b00565b60006020808385031215610834578182fd5b823567ffffffffffffffff8082111561084b578384fd5b818501915085601f83011261085e578384fd5b81358181111561086c578485fd5b838102915061087c848301610ad9565b8181528481019084860184860187018a1015610896578788fd5b8795505b838610156108c0576108ac8a826107fb565b83526001959095019491860191860161089a565b5098975050505050505050565b6000602082840312156108de578081fd5b81518015158114610724578182fd5b6000602082840312156108fe578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610724578182fd5b60006020828403121561093e578081fd5b815161072481610b00565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602080835283518082850152825b81811015610a2d57858101830151858201604001528201610a11565b81811115610a3e5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006040820173ffffffffffffffffffffffffffffffffffffffff808616845260206040818601528286518085526060870191508288019450855b81811015610acb578551851683529483019491830191600101610aad565b509098975050505050505050565b60405181810167ffffffffffffffff81118282101715610af857600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461055657600080fdfea264697066735822122075ad68ccababcc400f4447c13cd42441a161e65640daf88412504fed021faee364736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBD JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C57F5A9 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x851C1BB3 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x851C1BB3 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x8D928AF8 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0xAAABADC5 EQ PUSH2 0x178 JUMPI PUSH2 0xBD JUMP JUMPDEST DUP1 PUSH4 0x6C57F5A9 EQ PUSH2 0x140 JUMPI DUP1 PUSH4 0x739238D6 EQ PUSH2 0x148 JUMPI PUSH2 0xBD JUMP JUMPDEST DUP1 PUSH4 0x2F2770DB GT PUSH2 0xA7 JUMPI DUP1 PUSH4 0x2F2770DB EQ PUSH2 0xF6 JUMPI DUP1 PUSH4 0x62C54DBD EQ PUSH2 0x100 JUMPI DUP1 PUSH4 0x6634B753 EQ PUSH2 0x120 JUMPI PUSH2 0xBD JUMP JUMPDEST DUP1 PUSH3 0xC194DB EQ PUSH2 0xC2 JUMPI DUP1 PUSH4 0x174481FA EQ PUSH2 0xE0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCA PUSH2 0x180 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0xA01 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xE8 PUSH2 0x19F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP3 SWAP2 SWAP1 PUSH2 0x99A JUMP JUMPDEST PUSH2 0xFE PUSH2 0x1E5 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x113 PUSH2 0x10E CALLDATASIZE PUSH1 0x4 PUSH2 0x822 JUMP JUMPDEST PUSH2 0x24A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x979 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x12E CALLDATASIZE PUSH1 0x4 PUSH2 0x806 JUMP JUMPDEST PUSH2 0x283 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x9C1 JUMP JUMPDEST PUSH2 0x133 PUSH2 0x2AE JUMP JUMPDEST PUSH2 0x113 PUSH2 0x2B7 JUMP JUMPDEST PUSH2 0x163 PUSH2 0x15E CALLDATASIZE PUSH1 0x4 PUSH2 0x8ED JUMP JUMPDEST PUSH2 0x2DB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xD7 SWAP2 SWAP1 PUSH2 0x9CC JUMP JUMPDEST PUSH2 0x113 PUSH2 0x32D JUMP JUMPDEST PUSH2 0x113 PUSH2 0x351 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x19A PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x437 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH32 0x0 PUSH32 0x0 SWAP1 SWAP2 JUMP JUMPDEST PUSH2 0x1ED PUSH2 0x510 JUMP JUMPDEST PUSH2 0x1F5 PUSH2 0x559 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x432ACBFD662DBB5D8B378384A67159B47CA9D0F1B79F97CF64CF8585FA362D50 SWAP1 PUSH1 0x0 SWAP1 LOG1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D PUSH2 0x257 PUSH2 0x32D JUMP JUMPDEST DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x269 SWAP3 SWAP2 SWAP1 PUSH2 0xA72 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x56E JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x310 SWAP3 SWAP2 SWAP1 PUSH2 0x949 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35B PUSH2 0x32D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAABADC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3B4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19A SWAP2 SWAP1 PUSH2 0x92D JUMP JUMPDEST DUP1 MLOAD PUSH32 0x602038038060206000396000F3FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE DUP1 DUP4 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP2 ADD DUP5 DUP5 CREATE SWAP1 DUP5 MSTORE SWAP2 POP PUSH2 0x431 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x1AC PUSH2 0x602 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH32 0x0 DUP2 DUP2 ADD DUP6 DUP2 ADD DUP5 DUP2 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 SWAP7 MSTORE DUP1 DUP6 MSTORE SWAP4 SWAP6 PUSH32 0x0 SWAP6 SWAP3 SWAP5 PUSH32 0x0 SWAP5 SWAP4 DUP9 ADD DUP7 PUSH1 0x0 DUP3 DUP11 EXTCODECOPY DUP5 PUSH1 0x0 DUP9 DUP4 ADD DUP9 EXTCODECOPY POP PUSH1 0x20 DUP10 DUP2 ADD SWAP1 DUP10 DUP6 ADD ADD PUSH2 0x502 DUP2 DUP4 DUP7 PUSH2 0x614 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x53F PUSH1 0x0 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x2DB JUMP JUMPDEST SWAP1 POP PUSH2 0x556 PUSH2 0x54E DUP3 CALLER PUSH2 0x68E JUMP JUMPDEST PUSH2 0x191 PUSH2 0x602 JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x56C PUSH2 0x564 PUSH2 0x2AE JUMP JUMPDEST ISZERO PUSH1 0xD3 PUSH2 0x602 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x578 PUSH2 0x559 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x583 DUP4 PUSH2 0x72B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x83A48FBCFC991335314E74D0496AAB6A1987E992DDC85DDDBCC4D6DD6EF2E9FC SWAP2 SWAP1 LOG2 SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH2 0x610 JUMPI PUSH2 0x610 DUP2 PUSH2 0x76C JUMP JUMPDEST POP POP JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP2 LT PUSH2 0x652 JUMPI DUP2 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD PUSH2 0x615 JUMP JUMPDEST SWAP1 MLOAD DUP3 MLOAD PUSH1 0x20 SWAP3 SWAP1 SWAP3 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP2 AND OR SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x698 PUSH2 0x351 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9BE2A884 DUP5 DUP5 ADDRESS PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6D4 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x9D5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x724 SWAP2 SWAP1 PUSH2 0x8CD JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH2 0x738 DUP4 PUSH2 0x437 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x20 DUP4 ADD PUSH1 0x0 CREATE SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x724 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x556 SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x27D DUP2 PUSH2 0xB00 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x817 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x724 DUP2 PUSH2 0xB00 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x834 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x84B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x85E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x86C JUMPI DUP5 DUP6 REVERT JUMPDEST DUP4 DUP2 MUL SWAP2 POP PUSH2 0x87C DUP5 DUP4 ADD PUSH2 0xAD9 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP11 LT ISZERO PUSH2 0x896 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x8C0 JUMPI PUSH2 0x8AC DUP11 DUP3 PUSH2 0x7FB JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x89A JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8DE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x724 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8FE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x724 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x93E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x724 DUP2 PUSH2 0xB00 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x24 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA2D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA11 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA3E JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND DUP5 MSTORE PUSH1 0x20 PUSH1 0x40 DUP2 DUP7 ADD MSTORE DUP3 DUP7 MLOAD DUP1 DUP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP2 POP DUP3 DUP9 ADD SWAP5 POP DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xACB JUMPI DUP6 MLOAD DUP6 AND DUP4 MSTORE SWAP5 DUP4 ADD SWAP5 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xAAD JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xAF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x556 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xAD68CCABABCC400F4447C13CD42441A161E65640DAF8 DUP5 SLT POP 0x4F 0xED MUL 0x1F 0xAE 0xE3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"938:479:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4928:114:49;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4663:167;;;:::i;:::-;;;;;;;;:::i;2794:143:47:-;;;:::i;:::-;;1264:151:95;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2564:127:47:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2697:91::-;;;:::i;3046:143::-;;;:::i;2607:430:48:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1247:79:54:-;;;:::i;1386:109::-;;;:::i;4928:114:49:-;4976:12;5007:28;;;;;;;;;;;;;:24;:28::i;:::-;5000:35;;4928:114;:::o;4663:167::-;4776:22;4800;4663:167;;:::o;2794:143:47:-;2276:21:48;:19;:21::i;:::-;2854:16:47::1;:14;:16::i;:::-;2893:4;2881:16:::0;;;::::1;::::0;::::1;::::0;;2913:17:::1;::::0;::::1;::::0;2881:9:::1;::::0;2913:17:::1;2794:143::o:0;1264:151:95:-;1336:7;1362:46;1381:10;:8;:10::i;:::-;1393:13;1370:37;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1362:7;:46::i;:::-;1355:53;1264:151;-1:-1:-1;;1264:151:95:o;2564:127:47:-;2660:24;;2637:4;2660:24;;;;;;;;;;;;;;2564:127::o;2697:91::-;2772:9;;;;2697:91;:::o;3046:143::-;3162:20;3046:143;:::o;2607:430:48:-;2675:7;2996:22;3020:8;2979:50;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2969:61;;;;;;2962:68;;2607:430;;;:::o;1247:79:54:-;1313:6;1247:79;:::o;1386:109::-;1432:11;1462:10;:8;:10::i;:::-;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2737:1366:50:-;3232:11;;2514:66;3465:34;;;2790:19;;3768:2;3752:19;;3238:4;2790:19;3736:36;3872:24;;;3721:51;-1:-1:-1;4030:66:50;4039:25;;;;;11916:3:19;4030:8:50;:66::i;:::-;2737:1366;;;;:::o;5172:2692:49:-;6433:22;;6807:4;6801:11;;6300:18;6180;6356:37;;;6485:38;;;6838:28;;;6862:2;6838:28;;;6825:42;;;6960:22;;;6801:11;;6120:22;;6180:18;;6240:22;;6300:18;7086:13;;6180:18;6088:29;7086:13;6120:22;7112:67;7265:17;7262:1;7242:17;7231:9;7227:33;7204:21;7192:91;-1:-1:-1;7675:2:49;7654:24;;;;7721:36;;;;7777:80;7721:36;7654:24;7837:19;7777:7;:80::i;:::-;5172:2692;;;;;;;;;;;;:::o;2420:181:48:-;2475:16;2494:20;2506:7;;;;2494:11;:20::i;:::-;2475:39;;2524:70;2533:33;2545:8;2555:10;2533:11;:33::i;:::-;10212:3:19;2524:8:48;:70::i;:::-;2420:181;:::o;2943:97:47:-;2993:40;3003:12;:10;:12::i;:::-;3002:13;6583:3:19;2993:8:47;:40::i;:::-;2943:97::o;3195:277::-;3277:7;3296:16;:14;:16::i;:::-;3323:12;3338:30;3352:15;3338:13;:30::i;:::-;3379:24;;;:18;:24;;;;;;;;;;;:31;;;;3406:4;3379:31;;;3426:17;3323:45;;-1:-1:-1;3379:24:47;;3426:17;;3379:18;3426:17;3461:4;3195:277;-1:-1:-1;;3195:277:47:o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;8820:590:49:-;8980:165;8994:2;8987:3;:9;8980:165;;9063:10;;9050:24;;9109:2;9101:10;;;;9125:9;;;;8998;;8980:165;;;9273:10;;9328:11;;9208:2;:8;;;;9202:3;:15;:19;;9285:9;;9269:26;;;9324:22;;9372:21;9359:35;;9240:164::o;1501:178:54:-;1589:4;1612:15;:13;:15::i;:::-;:26;;;1639:8;1649:7;1666:4;1612:60;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1605:67;1501:178;-1:-1:-1;;;1501:178:54:o;8054:630:49:-;8127:7;8146:25;8174:41;8199:15;8174:24;:41::i;:::-;8146:69;;8226:19;8332:12;8326:19;8321:2;8307:12;8303:21;8300:1;8293:53;8278:68;-1:-1:-1;8370:25:49;;;8366:283;;8564:16;8561:1;;8543:38;8608:16;8561:1;8598:27;1459:126:19;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14;1407:174:-1;1496:20;;1521:55;1496:20;1521:55;:::i;1588:241::-;;1692:2;1680:9;1671:7;1667:23;1663:32;1660:2;;;-1:-1;;1698:12;1660:2;85:6;72:20;97:33;124:5;97:33;:::i;1836:421::-;;1987:2;;1975:9;1966:7;1962:23;1958:32;1955:2;;;-1:-1;;1993:12;1955:2;2051:17;2038:31;2089:18;;2081:6;2078:30;2075:2;;;-1:-1;;2111:12;2075:2;2224:6;2213:9;2209:22;;;314:3;307:4;299:6;295:17;291:27;281:2;;-1:-1;;322:12;281:2;369:6;356:20;2089:18;9903:6;9900:30;9897:2;;;-1:-1;;9933:12;9897:2;1987;9970:6;9966:17;;;391:102;1987:2;9966:17;10031:15;391:102;:::i;:::-;521:21;;;578:14;;;;553:17;;;658:27;;;;;655:36;-1:-1;652:2;;;-1:-1;;694:12;652:2;-1:-1;720:10;;714:228;739:6;736:1;733:13;714:228;;;819:59;874:3;862:10;819:59;:::i;:::-;807:72;;761:1;754:9;;;;;893:14;;;;921;;714:228;;;-1:-1;2131:110;1949:308;-1:-1;;;;;;;;1949:308::o;2264:257::-;;2376:2;2364:9;2355:7;2351:23;2347:32;2344:2;;;-1:-1;;2382:12;2344:2;1037:6;1031:13;13829:5;11196:13;11189:21;13807:5;13804:32;13794:2;;-1:-1;;13840:12;2528:239;;2631:2;2619:9;2610:7;2606:23;2602:32;2599:2;;;-1:-1;;2637:12;2599:2;1170:6;1157:20;11373:66;13951:5;11362:78;13927:5;13924:34;13914:2;;-1:-1;;13962:12;2774:303;;2909:2;2897:9;2888:7;2884:23;2880:32;2877:2;;;-1:-1;;2915:12;2877:2;1330:6;1324:13;1342:53;1389:5;1342:53;:::i;5895:387::-;4466:37;;;11373:66;11362:78;6146:2;6137:12;;4761:56;6246:11;;;6037:245::o;6289:222::-;11763:42;11752:54;;;;3381:37;;6416:2;6401:18;;6387:124::o;6518:333::-;11763:42;11752:54;;;3381:37;;11752:54;;6837:2;6822:18;;3381:37;6673:2;6658:18;;6644:207::o;6858:210::-;11196:13;;11189:21;4349:34;;6979:2;6964:18;;6950:118::o;7075:222::-;4466:37;;;7202:2;7187:18;;7173:124::o;7304:444::-;4466:37;;;11763:42;11752:54;;;7651:2;7636:18;;3381:37;11752:54;7734:2;7719:18;;3381:37;7487:2;7472:18;;7458:290::o;7755:306::-;;7900:2;;7921:17;7914:47;4971:5;10368:12;10805:6;7900:2;7889:9;7885:18;10793:19;-1:-1;13154:101;13168:6;13165:1;13162:13;13154:101;;;13235:11;;;;;13229:18;13216:11;;;10833:14;13216:11;13209:39;13183:10;;13154:101;;;13270:6;13267:1;13264:13;13261:2;;;-1:-1;10833:14;13326:6;7889:9;13317:16;;13310:27;13261:2;-1:-1;13607:2;13587:14;13603:7;13583:28;5128:39;;;;10833:14;5128:39;;7871:190;-1:-1;;;7871:190::o;8905:555::-;;9147:2;9136:9;9132:18;11763:42;;11112:5;11752:54;5277:3;5270:70;9280:2;9147;9280;9269:9;9265:18;9258:48;9320:130;3713:5;10368:12;10805:6;10800:3;10793:19;10833:14;9136:9;10833:14;3725:93;;9280:2;3911:5;10200:14;3923:21;;-1:-1;3950:304;3975:6;3972:1;3969:13;3950:304;;;4036:13;;11752:54;;5270:70;;10648:14;;;;3282;;;;3997:1;3990:9;3950:304;;;-1:-1;9312:138;;9118:342;-1:-1;;;;;;;;9118:342::o;9467:256::-;9529:2;9523:9;9555:17;;;9630:18;9615:34;;9651:22;;;9612:62;9609:2;;;9687:1;;9677:12;9609:2;9529;9696:22;9507:216;;-1:-1;9507:216::o;13624:117::-;11763:42;13711:5;11752:54;13686:5;13683:35;13673:2;;13732:1;;13722:12"},"methodIdentifiers":{"create(address[])":"62c54dbd","disable()":"2f2770db","getActionId(bytes4)":"851c1bb3","getAuthorizer()":"aaabadc5","getCreationCode()":"00c194db","getCreationCodeContracts()":"174481fa","getProtocolFeePercentagesProvider()":"739238d6","getVault()":"8d928af8","isDisabled()":"6c57f5a9","isPoolFromFactory(address)":"6634b753"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IVault\",\"name\":\"_vault\",\"type\":\"address\"},{\"internalType\":\"contract IProtocolFeePercentagesProvider\",\"name\":\"protocolFeeProvider\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"FactoryDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"PoolCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IRateProvider[]\",\"name\":\"rateProviders\",\"type\":\"address[]\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"getActionId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAuthorizer\",\"outputs\":[{\"internalType\":\"contract IAuthorizer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCode\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCreationCodeContracts\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"contractA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractB\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getProtocolFeePercentagesProvider\",\"outputs\":[{\"internalType\":\"contract IProtocolFeePercentagesProvider\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVault\",\"outputs\":[{\"internalType\":\"contract IVault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"isPoolFromFactory\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"disable()\":{\"details\":\"Disable the factory, preventing the creation of more pools. Already existing pools are unaffected. Once a factory is disabled, it cannot be re-enabled.\"},\"getActionId(bytes4)\":{\"details\":\"Returns the action identifier associated with the external function described by `selector`.\"},\"getCreationCode()\":{\"details\":\"Returns the creation code of the contract this factory creates.\"},\"getCreationCodeContracts()\":{\"details\":\"Returns the two addresses where the creation code of the contract crated by this factory is stored.\"},\"isDisabled()\":{\"details\":\"Check whether the derived factory has been disabled.\"},\"isPoolFromFactory(address)\":{\"details\":\"Returns true if `pool` was created by this factory.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAuthorizer()\":{\"notice\":\"Returns the Authorizer\"},\"getVault()\":{\"notice\":\"Returns the Balancer Vault\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRecoveryRateProviderPoolFactory.sol\":\"MockRecoveryRateProviderPoolFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/liquidity-mining/IAuthorizerAdaptor.sol\":{\"keccak256\":\"0xb42807a027f1fc13dd78c3d790652e9f6877609514f8732c52dac31147a48b94\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fc7df0a1b3554ce77abb142edd3a754d5d51702d22b8d104a25faa682091784\",\"dweb:/ipfs/QmQk3ef1tTsGDdSJrfS2fiBEnjwvBUoeN5jpA6Ze9qa7Qk\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/BasePoolUserData.sol\":{\"keccak256\":\"0x083d26059c8546c0d98861c67d170f090c997d1835e9727e6de89cae826984ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://298e566d801700436a33c090d78537b91f2a5e845717e694a776adcb7074fe4c\",\"dweb:/ipfs/QmUwfBpdf3ych3u5NLjXpMP3GNGicLLwuZ3VrPDTKwLtKS\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IBasePoolFactory.sol\":{\"keccak256\":\"0xe9c4bb30f135a71a4cbcecb634ee1ede5ca67b761fc5a70ca9c55d57f46341a4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d120e1d646f09a01b9377f8cec4d28491675d50b0cb25f03af2d1b2e521e8215\",\"dweb:/ipfs/QmXvrDofcdo4igBRiLCRwQnqG8QPk77QppH57jC8ghEzK3\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProviderPool.sol\":{\"keccak256\":\"0x858510d90f49f528af381d966220daae623e89029ae79062c0b3442f5034e2dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6d60914c41171ea0bf422a5b2ca93fcac58d870bec0d2d97c09eca6fa5e952d1\",\"dweb:/ipfs/QmSUXuHfiHw5kpWW78HUnEZN5wakeLh6Yd9hHvL5hLKFqu\"]},\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRecoveryMode.sol\":{\"keccak256\":\"0xfef2b3f091386582ebe75f99bb481ffcf14575bb349971cfaf348c0499a6c1d7\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://2eab064f3bb533abdef78a51f0844357117c6103bfb85505d69a6724a4d56e7b\",\"dweb:/ipfs/QmckpiYzLtFiJ3jX5y3pB6xE32cQD38NAcpdfz2BU7FS5R\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/IAuthentication.sol\":{\"keccak256\":\"0x2d45ea7c14dc950acf5917377d9eb67d2b1d9f8b8d81fa60eeaad345cf257655\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c387331bc3da670d45d54af96b067ea6fce6f3e0e5fac53b86fba73d5e9e874a\",\"dweb:/ipfs/QmYkY4d2TDA4BXpjz1RPQn8rdWvZVTi3pSBbiUSaPFKwtM\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0x7d98e4751329dd9effc016cbc5acdf6399d3592407b9d3e28b38c10c621e56a3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a70c4c16829f31c75dd0a3987137ed1572a0343ff933dcdcfbef17d5d63307ae\",\"dweb:/ipfs/QmSGBafawe525NbvK8LVN1rsD2yJxaS83QoTNC84evwM2E\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IProtocolFeePercentagesProvider.sol\":{\"keccak256\":\"0x7f25d72cd80f6799d94edcc724c7b5ca799f60f0bf3867a849732aba8476c966\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://01ed22fafc52ebd42d56712cf1a5d4f7b4afef1269abc8ceaa3ce8d303544ded\",\"dweb:/ipfs/QmXR2nHPDmKQg4HA3NjqxHTn7GXtvDgaDhY6Vy2SYvvQ8T\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAsset.sol\":{\"keccak256\":\"0x780769a0bd8655d8a05a75b062b32a65b775b9deb923b2e8f42f57a0ee263a2d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b63d22729102954a657432d81b31764e6dbdc7216a6deb991499a73dc4ebbd7b\",\"dweb:/ipfs/QmWRyByegCCJr37yesLi7urtzNk2BBiDEjzbkPpV8TKy1X\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IAuthorizer.sol\":{\"keccak256\":\"0x1407e18b806b109e6a878697d2942eeb17bfc6cc601da725941658b90dc9dcc6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e2695f5ae435de2de9fa9dc3b165f05b5bf876217aba0e4bcbd20943a23fc831\",\"dweb:/ipfs/QmYTmazrQQqjb4znByMiUUviqbXKTebrhpP8MDERZ5PLxz\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IFlashLoanRecipient.sol\":{\"keccak256\":\"0xadcf6e9f8677de9ec51a1bbb419da349b7c0c17af8b8cddad85ee0e80107036e\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e9b30c1b15e3d0990a4a343fac14d2263c4bae4c3bdbeb38489103b4f6f66c39\",\"dweb:/ipfs/QmeQjBDidkLAoq4nknwPPPmunSTvQEZ9shaAhPiJAPmbk6\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xe18a4e04a4a4e828c81548cc50d9d8ab6461dafbe88929c0342fa2b6c08e0d76\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7056ea1221db4eacc3e263ea8b9d741c11b1871f745169a39c6f926dab9c403f\",\"dweb:/ipfs/QmabGZff9x43RJUororFfmMzocB2UuZDDBMhhfELEeSJue\"]},\"@balancer-labs/v2-interfaces/contracts/vault/IVault.sol\":{\"keccak256\":\"0x63425148b27356cee63cf843ef8918d3ff6cdd8d5c00371326bca8b4331b773c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6764d2a22a2e23de5235ceb0d06ebb9006f694c59547b8dc82dbc2e215d1f230\",\"dweb:/ipfs/Qmb6BQBgUQno6RAqPPR8qeC3smNEC3Bm6y8ZcWEWZKAfhF\"]},\"@balancer-labs/v2-pool-utils/contracts/BasePoolAuthorization.sol\":{\"keccak256\":\"0x713dcf03ea533f663e6591f0cfdd13594bb5a1f256b01f3850a6dd9264d1f1c2\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f7b8cabe4a489e87b1de32f9fccbbafd678020b85c4357efea9225b52b94f589\",\"dweb:/ipfs/QmV7HexCyDQUkBpJFzANejCgSZDsM61eHMstGnTnvMKhLS\"]},\"@balancer-labs/v2-pool-utils/contracts/RecoveryMode.sol\":{\"keccak256\":\"0xb4b24f60e4d67702f4e194e44e185fa0ee3a3f695afa57240b9e8291674e89fe\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d891a555a69861488faa9d51a823469e1195f8b548c40aa1b034084507a8c30d\",\"dweb:/ipfs/QmPqUT8eX9oFXDku3m18541eEsNXgVcFNEX8MjJMrAiUaq\"]},\"@balancer-labs/v2-pool-utils/contracts/factories/BasePoolFactory.sol\":{\"keccak256\":\"0x89a255ca839261cb76f41000593bf370b278be0e38126bed33b99c13ef9e85ec\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a164fd49722a933d5e0cf5b7eb38ed1aa2368fde971398a432cb4a4b04cf052a\",\"dweb:/ipfs/Qmc5peB5CrxoBjtet1NYooGrFTZii2CerinCkuRex8HRsq\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/Authentication.sol\":{\"keccak256\":\"0x1462b53900d425f1c7dcd53d928b6aa5d327cba8fa2bec27720603bb40d9be70\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ad188b1ccd7b1353665228bdc77de9c25e426553f3ec518006aa83d1300b6bf2\",\"dweb:/ipfs/QmaBTVdpM5jSucrVJHU37ZUHdZXEWPYMLkbB6hRiEwHcKN\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/BaseSplitCodeFactory.sol\":{\"keccak256\":\"0xc6390b858cdf8456ad71f0c4bbd9361cb8f49f4d0917eb0f9bdf762bc04447d3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://220cd28c7f8fc4f4b1082e0f831a48b6d6f998349675728f09ba93274858aa12\",\"dweb:/ipfs/QmPwjVq2mEuhaa295DYJneyMy4HFeFbrba3A2mTr3JcnXY\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/CodeDeployer.sol\":{\"keccak256\":\"0x77e86d8251dfa9c442b94dde2fabbd3aab7af34e64fb9bb2c8236c74da844f1f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b1d03e9151b3c4bc46166e6c28a8ee7bac9c9681e651e01688067566af55f184\",\"dweb:/ipfs/QmZacZh87hu4SQpsZvEaaRJRfLjP9fLwP8CK6pC8TxW7pE\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/SingletonAuthentication.sol\":{\"keccak256\":\"0x6c48b193602f6d6407e8fca3389fb32264a91f1de8ec33db209694e3bf9d0d13\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1fa358f1537907cdd9f6b176f5a1effbbe9925429634038e9c533493ed824cab\",\"dweb:/ipfs/QmW1EcMLkMFuDKrPwWJ2qhBkmVzAUTVEMP75kw7D8XTjJf\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/test/MockRecoveryRateProviderPool.sol\":{\"keccak256\":\"0x9b09d1199cd4172daae79a934f0b6c8cc433d6d5440dc06a5c0e5e4c0fe0ea6f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://4e3bef54f01f026e024846e8409624bdebb46c280d121057c23cecb4289384c9\",\"dweb:/ipfs/QmVSitcwTnh245tPVJJ6nrZhWgJbJnR7ouoD5wFE4Fm1sS\"]},\"contracts/test/MockRecoveryRateProviderPoolFactory.sol\":{\"keccak256\":\"0xb8916372ea50c442853fbd4e8532a42ca5eefe8852f986401458d5068f14d145\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://badf2b856dece6f993faa04bf1d86be5f86085b005f7f3c7d9b8e2e4c979a365\",\"dweb:/ipfs/QmadfRqMRsFJ1yfnfdLD8iM2pVNZNeYGAcJphgNuAoh6uL\"]}},\"version\":1}"}},"contracts/test/MockRevertingRateProvider.sol":{"MockRevertingRateProvider":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"getRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"revertOnGetRate","type":"bool"}],"name":"setRevertOnGetRate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50670de0b6b3a76400006000556001805460ff19169055610159806100366000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063679aefce1461003b578063fa38825c14610055575b600080fd5b610043610076565b60408051918252519081900360200190f35b6100746004803603602081101561006b57600080fd5b503515156100f2565b005b60015460009060ff16156100eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6765745261746520726576657274000000000000000000000000000000000000604482015290519081900360640190fd5b5060005490565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220429cc874d6b0a57968c0e53356648f1d6e7938d03a7bba2bdf3067a97be1b2f564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xDE0B6B3A7640000 PUSH1 0x0 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE PUSH2 0x159 DUP1 PUSH2 0x36 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x679AEFCE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xFA38825C EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xF2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6765745261746520726576657274000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP SWAP13 0xC8 PUSH21 0xD6B0A57968C0E53356648F1D6E7938D03A7BBA2BDF ADDRESS PUSH8 0xA97BE1B2F564736F PUSH13 0x63430007010033000000000000 ","sourceMap":"865:503:96:-:0;;;987:87;;;;;;;;;-1:-1:-1;988:4:56;1011:5:96;:22;1043:16;:24;;-1:-1:-1;;1043:24:96;;;865:503;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100365760003560e01c8063679aefce1461003b578063fa38825c14610055575b600080fd5b610043610076565b60408051918252519081900360200190f35b6100746004803603602081101561006b57600080fd5b503515156100f2565b005b60015460009060ff16156100eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f6765745261746520726576657274000000000000000000000000000000000000604482015290519081900360640190fd5b5060005490565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905556fea2646970667358221220429cc874d6b0a57968c0e53356648f1d6e7938d03a7bba2bdf3067a97be1b2f564736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x679AEFCE EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xFA38825C EQ PUSH2 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x74 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD ISZERO ISZERO PUSH2 0xF2 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH1 0xFF AND ISZERO PUSH2 0xEB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6765745261746520726576657274000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 TIMESTAMP SWAP13 0xC8 PUSH21 0xD6B0A57968C0E53356648F1D6E7938D03A7BBA2BDF ADDRESS PUSH8 0xA97BE1B2F564736F PUSH13 0x63430007010033000000000000 ","sourceMap":"865:503:96:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1080:170;;;:::i;:::-;;;;;;;;;;;;;;;;1256:110;;;;;;;;;;;;;;;;-1:-1:-1;1256:110:96;;;;:::i;:::-;;1080:170;1154:16;;1131:7;;1154:16;;1150:71;;;1186:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1150:71;-1:-1:-1;1238:5:96;;1080:170;:::o;1256:110::-;1325:16;:34;;;;;;;;;;;;;1256:110::o"},"methodIdentifiers":{"getRate()":"679aefce","setRevertOnGetRate(bool)":"fa38825c"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"revertOnGetRate\",\"type\":\"bool\"}],\"name\":\"setRevertOnGetRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getRate()\":{\"details\":\"Returns an 18 decimal fixed point number that is the exchange rate of the token to some other underlying token. The meaning of this rate depends on the context.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockRevertingRateProvider.sol\":\"MockRevertingRateProvider\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/pool-utils/IRateProvider.sol\":{\"keccak256\":\"0x3c92c2d8d66ea652f3de955704c591865b412dbd43fb3c5e8ca30efab4a73623\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://488275158c8f2f05188bb3cb8f9c8741908f4f88e21acaf342e950da90d2fcef\",\"dweb:/ipfs/QmeWzF86E3UyCJ9CfXCNrUgGFbcaGbpdn9NnVo6gMFisMt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"contracts/test/MockRevertingRateProvider.sol\":{\"keccak256\":\"0x26fa3849ad3faddbfb7b2d622ea21a5fb1de7c43a99a1198f3131a75b9b0228b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e4f3b362f2c32a41fe3347aed4beace5e0610c9fe2c61c86dd5c91cad85a13c1\",\"dweb:/ipfs/QmS3S4UZc2cEBwPbSongqNYazMeBcMxmmwZHCj85Swzmzv\"]}},\"version\":1}"}},"contracts/test/MockStETH.sol":{"MockStETH":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getNextNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"submit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200153738038062001537833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604081815260209283015182820190915260018252603160f81b838301528651909450869350859285928592839283918791620001dc9160039185019062000267565b508051620001f290600490602084019062000267565b50506005805460ff19166012179055508151602092830120608052805191012060a052507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c052620002458162000251565b50505050505062000303565b6005805460ff191660ff92909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002aa57805160ff1916838001178555620002da565b82800160010185558215620002da579182015b82811115620002da578251825591602001919060010190620002bd565b50620002e8929150620002ec565b5090565b5b80821115620002e85760008155600101620002ed565b60805160a05160c0516112076200033060003980610edd525080610f1f525080610efe52506112076000f3fe60806040526004361061015f5760003560e01c806379cc6790116100c0578063a457c2d711610074578063d505accf11610059578063d505accf14610591578063dd62ed3e146105fc578063ed24911d146106445761015f565b8063a457c2d714610505578063a9059cbb1461054b5761015f565b806390193b7c116100a557806390193b7c1461047d57806395d89b41146104bd578063a1903eab146104d25761015f565b806379cc6790146103f75780637ecebe001461043d5761015f565b80633644e5151161011757806340c10f19116100fc57806340c10f191461034557806342966c681461038d57806370a08231146103b75761015f565b80633644e515146102ea57806339509351146102ff5761015f565b806318160ddd1161014857806318160ddd1461024857806323b872dd1461026f578063313ce567146102bf5761015f565b806306fdde0314610164578063095ea7b3146101ee575b600080fd5b34801561017057600080fd5b50610179610659565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101fa57600080fd5b506102346004803603604081101561021157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561070d565b604080519115158252519081900360200190f35b34801561025457600080fd5b5061025d610723565b60408051918252519081900360200190f35b34801561027b57600080fd5b506102346004803603606081101561029257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610729565b3480156102cb57600080fd5b506102d461078a565b6040805160ff9092168252519081900360200190f35b3480156102f657600080fd5b5061025d610793565b34801561030b57600080fd5b506102346004803603604081101561032257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107a2565b34801561035157600080fd5b5061038b6004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107e5565b005b34801561039957600080fd5b5061038b600480360360208110156103b057600080fd5b50356107f3565b3480156103c357600080fd5b5061025d600480360360208110156103da57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610800565b34801561040357600080fd5b5061038b6004803603604081101561041a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610828565b34801561044957600080fd5b5061025d6004803603602081101561046057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661085e565b34801561048957600080fd5b5061025d600480360360208110156104a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b3480156104c957600080fd5b50610179610897565b61025d600480360360208110156104e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610916565b34801561051157600080fd5b506102346004803603604081101561052857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561095c565b34801561055757600080fd5b506102346004803603604081101561056e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a2565b34801561059d57600080fd5b5061038b600480360360e08110156105b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356109af565b34801561060857600080fd5b5061025d6004803603604081101561061f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a84565b34801561065057600080fd5b5061025d610abc565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600061071a338484610ac6565b50600192915050565b60025490565b6000610736848484610b35565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461078091869161077b908661019e610c5e565b610ac6565b5060019392505050565b60055460ff1690565b600061079d610abc565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b9086610c74565b6107ef8282610c8d565b5050565b6107fd3382610d46565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000610842826101a161083b8633610a84565b9190610c5e565b905061084f833383610ac6565b6108598383610d46565b505050565b60006108698261086f565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b60006109223334610c8d565b6040805134815290517f5ac3d75f987a73cee9a456a277139319eee6559e3d027a360d2fc37ac93e74a39181900360200190a15034919050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b908661019f610c5e565b600061071a338484610b35565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109de8c61086f565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610a6f8882610a66878787610e36565b886101f8610e75565b610a7a888888610ac6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061079d610ed9565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610b5973ffffffffffffffffffffffffffffffffffffffff84161515610198610fa4565b610b7d73ffffffffffffffffffffffffffffffffffffffff83161515610199610fa4565b610b88838383610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610bbb90826101a0610c5e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610bf79082610c74565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610c6d8484111583610fa4565b5050900390565b6000828201610c868482101583610fa4565b9392505050565b610c9960008383610859565b610cb3610cae82610ca8610723565b90610c74565b610fb2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce39082610c74565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610d6a73ffffffffffffffffffffffffffffffffffffffff8316151561019b610fa4565b610d7682600083610859565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610da990826101b2610c5e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610de4610cae82610dde610723565b90610fb7565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610e8085610fc5565b9050610e96610e9087838761102c565b83610fa4565b610ea5428410156101b8610fa4565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610f4661113e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107ef576107ef81611142565b600255565b6000610c8683836001610c5e565b6000610fcf610ed9565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061103e82516041146101b9610fa4565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110b7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061113257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526107fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220c68e0c76be930ccfa1364d27cab8374d2a62738225506cf0c2980387d8a4908b64736f6c63430007010033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1537 CODESIZE SUB DUP1 PUSH3 0x1537 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD MLOAD DUP3 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL DUP4 DUP4 ADD MSTORE DUP7 MLOAD SWAP1 SWAP5 POP DUP7 SWAP4 POP DUP6 SWAP3 DUP6 SWAP3 DUP6 SWAP3 DUP4 SWAP3 DUP4 SWAP2 DUP8 SWAP2 PUSH3 0x1DC SWAP2 PUSH1 0x3 SWAP2 DUP6 ADD SWAP1 PUSH3 0x267 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1F2 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x267 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP3 DUP4 ADD KECCAK256 PUSH1 0x80 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0xA0 MSTORE POP PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F PUSH1 0xC0 MSTORE PUSH3 0x245 DUP2 PUSH3 0x251 JUMP JUMPDEST POP POP POP POP POP POP PUSH3 0x303 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2AA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x2DA JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x2DA JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x2DA JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2BD JUMP JUMPDEST POP PUSH3 0x2E8 SWAP3 SWAP2 POP PUSH3 0x2EC JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2E8 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2ED JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH2 0x1207 PUSH3 0x330 PUSH1 0x0 CODECOPY DUP1 PUSH2 0xEDD MSTORE POP DUP1 PUSH2 0xF1F MSTORE POP DUP1 PUSH2 0xEFE MSTORE POP PUSH2 0x1207 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x15F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x644 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x54B JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x90193B7C GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xA1903EAB EQ PUSH2 0x4D2 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x43D JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3B7 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2FF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x148 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x659 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x729 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D4 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x793 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7E5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x800 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x828 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x85E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x86F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x897 JUMP JUMPDEST PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x916 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x95C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x9AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0xABC JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x736 DUP5 DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x780 SWAP2 DUP7 SWAP2 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19E PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xABC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x7EF DUP3 DUP3 PUSH2 0xC8D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7FD CALLER DUP3 PUSH2 0xD46 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP3 PUSH2 0x1A1 PUSH2 0x83B DUP7 CALLER PUSH2 0xA84 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST SWAP1 POP PUSH2 0x84F DUP4 CALLER DUP4 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x859 DUP4 DUP4 PUSH2 0xD46 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x869 DUP3 PUSH2 0x86F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x922 CALLER CALLVALUE PUSH2 0xC8D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5AC3D75F987A73CEE9A456A277139319EEE6559E3D027A360D2FC37AC93E74A3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP CALLVALUE SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19F PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x9DE DUP13 PUSH2 0x86F JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xA6F DUP9 DUP3 PUSH2 0xA66 DUP8 DUP8 DUP8 PUSH2 0xE36 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xA7A DUP9 DUP9 DUP9 PUSH2 0xAC6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xED9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB59 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB7D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB88 DUP4 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBBB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xBF7 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC86 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC99 PUSH1 0x0 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH2 0xCB3 PUSH2 0xCAE DUP3 PUSH2 0xCA8 PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0xFB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCE3 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xD6A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xD76 DUP3 PUSH1 0x0 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xDA9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xDE4 PUSH2 0xCAE DUP3 PUSH2 0xDDE PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP6 PUSH2 0xFC5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE96 PUSH2 0xE90 DUP8 DUP4 DUP8 PUSH2 0x102C JUMP JUMPDEST DUP4 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xEA5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xFA4 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xF46 PUSH2 0x113E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x7EF JUMPI PUSH2 0x7EF DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFCF PUSH2 0xED9 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xFA4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1132 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x7FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 DUP15 0xC PUSH23 0xBE930CCFA1364D27CAB8374D2A62738225506CF0C29803 DUP8 0xD8 LOG4 SWAP1 DUP12 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"980:465:97:-:0;;;1026:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:97;;;;;;;;;;-1:-1:-1;1026:198:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:97;;;;;;;;;;-1:-1:-1;1026:198:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1026:198:97;;;;;;;;;2020:280:60;;;;;;;;;-1:-1:-1;;;2020:280:60;;;;2118:13:61;;1026:198:97;;-1:-1:-1;1136:4:97;;-1:-1:-1;1142:6:97;;1026:198;;1136:4;;;;;;1142:6;;2118:13:61;;:5;;:13;;;;:::i;:::-;-1:-1:-1;2141:17:61;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:61;:14;;-1:-1:-1;;2168:14:61;2180:2;2168:14;;;-1:-1:-1;2100:22:60;;;;;;;2085:37;;2150:25;;;;;2132:43;;-1:-1:-1;2198:95:60;2185:108;;1046:24:70::2;1061:8:::0;1046:14:::2;:24::i;:::-;898:179:::0;;;1026:198:97;;;980:465;;10570:88:61;10630:9;:21;;-1:-1:-1;;10630:21:61;;;;;;;;;;;;10570:88::o;980:465:97:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;980:465:97;;;-1:-1:-1;980:465:97;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"7034":[{"length":32,"start":3838}],"7036":[{"length":32,"start":3871}],"7038":[{"length":32,"start":3805}]},"linkReferences":{},"object":"60806040526004361061015f5760003560e01c806379cc6790116100c0578063a457c2d711610074578063d505accf11610059578063d505accf14610591578063dd62ed3e146105fc578063ed24911d146106445761015f565b8063a457c2d714610505578063a9059cbb1461054b5761015f565b806390193b7c116100a557806390193b7c1461047d57806395d89b41146104bd578063a1903eab146104d25761015f565b806379cc6790146103f75780637ecebe001461043d5761015f565b80633644e5151161011757806340c10f19116100fc57806340c10f191461034557806342966c681461038d57806370a08231146103b75761015f565b80633644e515146102ea57806339509351146102ff5761015f565b806318160ddd1161014857806318160ddd1461024857806323b872dd1461026f578063313ce567146102bf5761015f565b806306fdde0314610164578063095ea7b3146101ee575b600080fd5b34801561017057600080fd5b50610179610659565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b357818101518382015260200161019b565b50505050905090810190601f1680156101e05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101fa57600080fd5b506102346004803603604081101561021157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561070d565b604080519115158252519081900360200190f35b34801561025457600080fd5b5061025d610723565b60408051918252519081900360200190f35b34801561027b57600080fd5b506102346004803603606081101561029257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610729565b3480156102cb57600080fd5b506102d461078a565b6040805160ff9092168252519081900360200190f35b3480156102f657600080fd5b5061025d610793565b34801561030b57600080fd5b506102346004803603604081101561032257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107a2565b34801561035157600080fd5b5061038b6004803603604081101561036857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107e5565b005b34801561039957600080fd5b5061038b600480360360208110156103b057600080fd5b50356107f3565b3480156103c357600080fd5b5061025d600480360360208110156103da57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610800565b34801561040357600080fd5b5061038b6004803603604081101561041a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610828565b34801561044957600080fd5b5061025d6004803603602081101561046057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661085e565b34801561048957600080fd5b5061025d600480360360208110156104a057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661086f565b3480156104c957600080fd5b50610179610897565b61025d600480360360208110156104e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610916565b34801561051157600080fd5b506102346004803603604081101561052857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561095c565b34801561055757600080fd5b506102346004803603604081101561056e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356109a2565b34801561059d57600080fd5b5061038b600480360360e08110156105b457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356109af565b34801561060857600080fd5b5061025d6004803603604081101561061f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a84565b34801561065057600080fd5b5061025d610abc565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b820191906000526020600020905b8154815290600101906020018083116106e657829003601f168201915b5050505050905090565b600061071a338484610ac6565b50600192915050565b60025490565b6000610736848484610b35565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461078091869161077b908661019e610c5e565b610ac6565b5060019392505050565b60055460ff1690565b600061079d610abc565b905090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b9086610c74565b6107ef8282610c8d565b5050565b6107fd3382610d46565b50565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6000610842826101a161083b8633610a84565b9190610c5e565b905061084f833383610ac6565b6108598383610d46565b505050565b60006108698261086f565b92915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526006602052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107035780601f106106d857610100808354040283529160200191610703565b60006109223334610c8d565b6040805134815290517f5ac3d75f987a73cee9a456a277139319eee6559e3d027a360d2fc37ac93e74a39181900360200190a15034919050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161071a91859061077b908661019f610c5e565b600061071a338484610b35565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886109de8c61086f565b89604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018281526020019650505050505050604051602081830303815290604052805190602001209050610a6f8882610a66878787610e36565b886101f8610e75565b610a7a888888610ac6565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b600061079d610ed9565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610b5973ffffffffffffffffffffffffffffffffffffffff84161515610198610fa4565b610b7d73ffffffffffffffffffffffffffffffffffffffff83161515610199610fa4565b610b88838383610859565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610bbb90826101a0610c5e565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610bf79082610c74565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610c6d8484111583610fa4565b5050900390565b6000828201610c868482101583610fa4565b9392505050565b610c9960008383610859565b610cb3610cae82610ca8610723565b90610c74565b610fb2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ce39082610c74565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610d6a73ffffffffffffffffffffffffffffffffffffffff8316151561019b610fa4565b610d7682600083610859565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610da990826101b2610c5e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610de4610cae82610dde610723565b90610fb7565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610e8085610fc5565b9050610e96610e9087838761102c565b83610fa4565b610ea5428410156101b8610fa4565b50505073ffffffffffffffffffffffffffffffffffffffff9092166000908152600660205260409020805460010190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610f4661113e565b30604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060405160208183030381529060405280519060200120905090565b816107ef576107ef81611142565b600255565b6000610c8683836001610c5e565b6000610fcf610ed9565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061103e82516041146101b9610fa4565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156110b7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061113257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b98975050505050505050565b4690565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526107fd917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fdfea2646970667358221220c68e0c76be930ccfa1364d27cab8374d2a62738225506cf0c2980387d8a4908b64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x15F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x79CC6790 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x591 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x644 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x54B JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x90193B7C GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x90193B7C EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xA1903EAB EQ PUSH2 0x4D2 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x79CC6790 EQ PUSH2 0x3F7 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x43D JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x40C10F19 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x345 JUMPI DUP1 PUSH4 0x42966C68 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x3B7 JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x2EA JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x2FF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x148 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x26F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x2BF JUMPI PUSH2 0x15F JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x1EE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x659 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1E0 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x211 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x70D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x723 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x292 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x729 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2D4 PUSH2 0x78A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x793 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x351 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x368 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7E5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x399 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x800 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x828 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x460 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x85E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x489 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x86F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x179 PUSH2 0x897 JUMP JUMPDEST PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x916 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x95C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x234 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x56E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x9A2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x9AF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xA84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x650 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0xABC JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6E6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x736 DUP5 DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x780 SWAP2 DUP7 SWAP2 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19E PUSH2 0xC5E JUMP JUMPDEST PUSH2 0xAC6 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xABC JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0x7EF DUP3 DUP3 PUSH2 0xC8D JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x7FD CALLER DUP3 PUSH2 0xD46 JUMP JUMPDEST POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x842 DUP3 PUSH2 0x1A1 PUSH2 0x83B DUP7 CALLER PUSH2 0xA84 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0xC5E JUMP JUMPDEST SWAP1 POP PUSH2 0x84F DUP4 CALLER DUP4 PUSH2 0xAC6 JUMP JUMPDEST PUSH2 0x859 DUP4 DUP4 PUSH2 0xD46 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x869 DUP3 PUSH2 0x86F JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x703 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6D8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x703 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x922 CALLER CALLVALUE PUSH2 0xC8D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD CALLVALUE DUP2 MSTORE SWAP1 MLOAD PUSH32 0x5AC3D75F987A73CEE9A456A277139319EEE6559E3D027A360D2FC37AC93E74A3 SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG1 POP CALLVALUE SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x71A SWAP2 DUP6 SWAP1 PUSH2 0x77B SWAP1 DUP7 PUSH2 0x19F PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x71A CALLER DUP5 DUP5 PUSH2 0xB35 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP9 DUP9 DUP9 PUSH2 0x9DE DUP13 PUSH2 0x86F JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH2 0xA6F DUP9 DUP3 PUSH2 0xA66 DUP8 DUP8 DUP8 PUSH2 0xE36 JUMP JUMPDEST DUP9 PUSH2 0x1F8 PUSH2 0xE75 JUMP JUMPDEST PUSH2 0xA7A DUP9 DUP9 DUP9 PUSH2 0xAC6 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x79D PUSH2 0xED9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xB59 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB7D PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xB88 DUP4 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBBB SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xBF7 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC6D DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xC86 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xFA4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xC99 PUSH1 0x0 DUP4 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH2 0xCB3 PUSH2 0xCAE DUP3 PUSH2 0xCA8 PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xC74 JUMP JUMPDEST PUSH2 0xFB2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xCE3 SWAP1 DUP3 PUSH2 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xD6A PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xD76 DUP3 PUSH1 0x0 DUP4 PUSH2 0x859 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xDA9 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xC5E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xDE4 PUSH2 0xCAE DUP3 PUSH2 0xDDE PUSH2 0x723 JUMP JUMPDEST SWAP1 PUSH2 0xFB7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x41 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP4 PUSH1 0x20 DUP3 ADD MSTORE DUP3 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE8 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE80 DUP6 PUSH2 0xFC5 JUMP JUMPDEST SWAP1 POP PUSH2 0xE96 PUSH2 0xE90 DUP8 DUP4 DUP8 PUSH2 0x102C JUMP JUMPDEST DUP4 PUSH2 0xFA4 JUMP JUMPDEST PUSH2 0xEA5 TIMESTAMP DUP5 LT ISZERO PUSH2 0x1B8 PUSH2 0xFA4 JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH32 0x0 PUSH32 0x0 PUSH2 0xF46 PUSH2 0x113E JUMP JUMPDEST ADDRESS PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST DUP2 PUSH2 0x7EF JUMPI PUSH2 0x7EF DUP2 PUSH2 0x1142 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP4 DUP4 PUSH1 0x1 PUSH2 0xC5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFCF PUSH2 0xED9 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x2 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x103E DUP3 MLOAD PUSH1 0x41 EQ PUSH2 0x1B9 PUSH2 0xFA4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x20 DUP6 ADD MLOAD SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x0 BYTE SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP8 DUP4 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1132 JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CHAINID SWAP1 JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP4 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL DUP4 DUP7 MOD ADD SWAP2 DUP4 SWAP1 DIV SWAP3 DUP4 MOD ADD PUSH1 0x10 SHL ADD PUSH7 0x42414C23000030 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH2 0x7FD SWAP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 SWAP1 PUSH3 0x42414C SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 DUP15 0xC PUSH23 0xBE930CCFA1364D27CAB8374D2A62738225506CF0C29803 DUP8 0xD8 LOG4 SWAP1 DUP12 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"980:465:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:61;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;5488:386;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:61;;;;;;;;;;;;;;;;;;:::i;3156:81::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2243:113:63;;;;;;;;;;;;;:::i;6269:211:61:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:61;;;;;;;;;:::i;1083:99:70:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1083:99:70;;;;;;;;;:::i;:::-;;473:87:62;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;473:87:62;;:::i;4022:117:61:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:61;;;;:::i;866:283:62:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;866:283:62;;;;;;;;;:::i;2006:113:63:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2006:113:63;;;;:::i;1303:121:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1303:121:51;;;;:::i;2448:85:61:-;;;;;;;;;;;;;:::i;1268:175:97:-;;;;;;;;;;;;;;;;-1:-1:-1;1268:175:97;;;;:::i;6967:312:61:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:61;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:61;;;;;;;;;:::i;1437:508:63:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1437:508:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4570:149:61:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:61;;;;;;;;;;;:::i;1184:113:51:-;;;;;;;;;;;;;:::i;2254:81:61:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:61;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11033:3:19;5752:35:61;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:61;5488:386;;;;;:::o;3156:81::-;3221:9;;;;3156:81;:::o;2243:113:63:-;2303:7;2329:20;:18;:20::i;:::-;2322:27;;2243:113;:::o;6269:211:61:-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;1083:99:70:-;1151:24;1157:9;1168:6;1151:5;:24::i;:::-;1083:99;;:::o;473:87:62:-;528:25;534:10;546:6;528:5;:25::i;:::-;473:87;:::o;4022:117:61:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;866:283:62:-;942:26;971:79;1006:6;11241:3:19;971:30:62;981:7;990:10;971:9;:30::i;:::-;:34;:79;:34;:79::i;:::-;942:108;;1061:49;1070:7;1079:10;1091:18;1061:8;:49::i;:::-;1120:22;1126:7;1135:6;1120:5;:22::i;:::-;866:283;;;:::o;2006:113:63:-;2067:7;2093:19;2106:5;2093:12;:19::i;:::-;2086:26;2006:113;-1:-1:-1;;2006:113:63:o;1303:121:51:-;1398:19;;1372:7;1398:19;;;:10;:19;;;;;;;1303:121::o;2448:85:61:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;1268:175:97;1328:7;1347:28;1353:10;1365:9;1347:5;:28::i;:::-;1390:20;;;1400:9;1390:20;;;;;;;;;;;;;-1:-1:-1;1427:9:97;1268:175;;;:::o;6967:312:61:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11107:3:19;7143:36:61;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;1437:508:63:-;1645:18;921:109;1718:5;1725:7;1734:5;1741:19;1754:5;1741:12;:19::i;:::-;1762:8;1689:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1666:115;;;;;;1645:136;;1792:104;1814:5;1821:10;1833:26;1851:1;1854;1857;1833:17;:26::i;:::-;1861:8;13132:3:19;1792:21:63;:104::i;:::-;1907:31;1916:5;1923:7;1932:5;1907:8;:31::i;:::-;1437:508;;;;;;;;:::o;4570:149:61:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1184:113:51:-;1244:7;1270:20;:18;:20::i;10034:213:61:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10629:3:19;7880:8:61;:71::i;:::-;7961:72;7970:23;;;;;10697:3:19;7961:8:61;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11175:3:19;8122:21:61;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:68:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:68;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:68:o;8583:297:61:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10827:3:19;9275:8:61;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12271:3:19;9435:22:61;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;3803:419:51:-;3963:13;;;3973:2;3963:13;;;;;;;;;3914:12;;;;3963:13;;;;;;;;;;;-1:-1:-1;3963:13:51;3938:38;;4092:1;4087:2;4076:9;4072:18;4065:29;4134:1;4129:2;4118:9;4114:18;4107:29;4177:1;4172:2;4161:9;4157:18;4149:30;4206:9;3803:419;-1:-1:-1;;;;3803:419:51:o;1701:1214::-;1895:14;1912:28;1929:10;1912:16;:28::i;:::-;1895:45;;1950:66;1959:45;1977:7;1986:6;1994:9;1959:17;:45::i;:::-;2006:9;1950:8;:66::i;:::-;2487:63;2508:15;2496:8;:27;;12598:3:19;2487:8:51;:63::i;:::-;-1:-1:-1;;;2884:19:51;;;;;;;;:10;:19;;;;;:24;;2907:1;2884:24;;;-1:-1:-1;;1701:1214:51:o;2386:188:60:-;2447:7;2494:10;2506:12;2520:15;2537:13;:11;:13::i;:::-;2560:4;2483:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2473:94;;;;;;2466:101;;2386:188;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:61:-;3937:12;:20;3870:94::o;1404:121:68:-;1462:7;1488:30;1492:1;1495;5194::19;1488:3:68;:30::i;3199:183:60:-;3276:7;3341:20;:18;:20::i;:::-;3363:10;3312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3302:73;;;;;;3295:80;;3199:183;;;:::o;2921:876:51:-;3066:4;3082:60;3091:9;:16;3111:2;3091:22;12655:3:19;3082:8:51;:60::i;:::-;3153:9;3172;3191:7;3427:4;3416:9;3412:20;3406:27;3401:32;;3472:4;3461:9;3457:20;3451:27;3446:32;;3525:4;3514:9;3510:20;3504:27;3501:1;3496:36;3491:41;;3552:24;3579:26;3589:6;3597:1;3600;3603;3579:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3579:26:51;;;;;;-1:-1:-1;;3728:30:51;;;;;;;:61;;;3782:7;3762:27;;:16;:27;;;3728:61;3720:70;2921:876;-1:-1:-1;;;;;;;;2921:876:51:o;3433:187:60:-;3595:9;;3570:44::o;1459:126:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;3849:26;3019:18;;;;3066;;;3062:29;3881:2;3877:17;3845:50;3824:72;;3819:3;3815:82;4832:4;4825:26;1506:28;;;;1783:14;;5058:3;;5048:14"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getDomainSeparator()":"ed24911d","getNextNonce(address)":"90193b7c","increaseAllowance(address,uint256)":"39509351","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","submit(address)":"a1903eab","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EthStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getNextNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"submit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"See {IERC20Permit-DOMAIN_SEPARATOR}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getDomainSeparator()\":{\"details\":\"Returns the EIP712 domain separator.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"See {IERC20Permit-nonces}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"See {IERC20Permit-permit}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockStETH.sol\":\"MockStETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x571907ff5a68a10937b13e0828dd78bf9508f6e74eaafe7faf525453160c3627\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://afb73b213075954086eb7fa4eb4fac4962b779c8dd8c9c72902336d64c13210e\",\"dweb:/ipfs/QmNWFPnoPxo8ToVHrqXaQQF8RPYeNNhV2eZN9EwFS3iHpz\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20Permit.sol\":{\"keccak256\":\"0xeb8a588cfca3dddd2da141ec6adc1672646186f6dbd1e707ec9b1def45e59c25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec0afd86c576a818b61a5cb6e4d3bf946b73ce04728a2e53b3bfc7f8522b1aa1\",\"dweb:/ipfs/QmS81F4CQ7nTqamsdHaN9AGwYRguw5fCZ5EM9jtVXT7G5U\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/EOASignaturesValidator.sol\":{\"keccak256\":\"0x01bbfbec787d72db3b84969a1e629d922bcab2116c84e27d596979457e778c74\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e89c70804224f69f50546824a8c963774fd239430a2677090d23ad8e018d3052\",\"dweb:/ipfs/QmbSHyur8EDo798qz3TCqcBcoiWuuPmoVjCbP2CzH1hoCP\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/EIP712.sol\":{\"keccak256\":\"0x0c02dcb47f57575355bd9dcbc5f7cb11d9a241b10592f8b3a1d67bb813bc07e1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e1166afa2f200547f148297bb90e670635f557d0dffb184aef3265af597c66d4\",\"dweb:/ipfs/QmZJbYpwJHWk34mrD6wDTG6Rfmoi9Hz7gsHBkfktxXF8pq\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Burnable.sol\":{\"keccak256\":\"0x6df4b13f2ea83b6b7fd766ed4d2c9edbfed217825cb867ecf92ac11af44b9ae4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f644d0949a840356fd81eaf45a989ede75abe1e653ce1d5e59e82b7a13a97b4e\",\"dweb:/ipfs/QmUNEpURhR9LA8gwmvM6vbqmxcTVkiXcGHPSL5oCVCKVPZ\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20Permit.sol\":{\"keccak256\":\"0xbd474d9fb6f51b241ac85b659eabed4bac9a029f8565c64bc285edf04ef591cc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://334c367ffb8ff1df7f8dfebe67d0d7bf72cf39306481dd32f98b5a52033082b0\",\"dweb:/ipfs/QmdEmGyCohoDBhHqBaV6JbzYEXUqhRzVjLCPCmc81HfqUs\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/TestToken.sol\":{\"keccak256\":\"0x6a1c952de46f46c608231dfd68986fba02d7cff3c4abfe5708497f04e6ca0358\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://82855be50bfe977a14fb684384790f19a8bbdf1937b69a89608c2ad51817e32a\",\"dweb:/ipfs/Qmbf8L4dQSFguPD4CCmEFXjDn2HBxtCbJjU2C3qYRkmkkb\"]},\"contracts/test/MockStETH.sol\":{\"keccak256\":\"0x4a325185c05527823b09a38ef8ebe4e4a5d929eabaa59e60e222b1b59123619c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5032d479406cbc95056d6d13e42cd8790b4ab81a38721d34c1e008fc8beed063\",\"dweb:/ipfs/QmZoWGgRYpmEdJ6HRb8Z74RVW6HVX2qeZwPxUb86Ef581m\"]}},\"version\":1}"}},"contracts/test/MockStaticATokenLM.sol":{"MockStaticATokenLM":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20","name":"underlyingAsset","type":"address"},{"internalType":"contract IERC20","name":"aToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"depositor","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"referralCode","type":"uint16"},{"indexed":false,"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"staticAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"dynamicAmount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ASSET","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ATOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INCENTIVES_CONTROLLER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"LENDING_POOL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"REWARD_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewards","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewardsOnBehalf","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"claimRewardsToSelf","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"collectAndUpdateRewards","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint16","name":"referralCode","type":"uint16"},{"internalType":"bool","name":"fromUnderlying","type":"bool"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dynamicBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"dynamicToStaticAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAccRewardsPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getDomainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLastRewardBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLifetimeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getLifetimeRewardsClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTotalClaimableRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getUnclaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"","type":"tuple"}],"name":"metaDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct IStaticATokenLM.SignatureParams","name":"","type":"tuple"}],"name":"metaWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staticToDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"toUnderlying","type":"bool"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bool","name":"","type":"bool"}],"name":"withdrawDynamicAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c06040523480156200001157600080fd5b506040516200154e3803806200154e8339810160408190526200003491620001fb565b838381818160039080519060200190620000509291906200009a565b508051620000669060049060208401906200009a565b50506005805460ff191660121790555050506001600160601b0319606092831b8116608052911b1660a05250620002899050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000dd57805160ff19168380011785556200010d565b828001600101855582156200010d579182015b828111156200010d578251825591602001919060010190620000f0565b506200011b9291506200011f565b5090565b5b808211156200011b576000815560010162000120565b80516001600160a01b03811681146200014e57600080fd5b92915050565b600082601f83011262000165578081fd5b81516001600160401b03808211156200017c578283fd5b6040516020601f8401601f19168201810183811183821017156200019e578586fd5b80604052508194508382528681858801011115620001bb57600080fd5b600092505b83831015620001df5785830181015182840182015291820191620001c0565b83831115620001f15760008185840101525b5050505092915050565b6000806000806080858703121562000211578384fd5b84516001600160401b038082111562000228578586fd5b620002368883890162000154565b955060208701519150808211156200024c578485fd5b506200025b8782880162000154565b9350506200026d866040870162000136565b91506200027e866060870162000136565b905092959194509250565b60805160601c60a05160601c61129b620002b36000398061075b52508061072c525061129b6000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c8063602665571161017b578063b3a59022116100d8578063dd05aa121161008c578063ead5d35911610071578063ead5d359146104e0578063ed24911d146103ac578063f57d0b40146103b4576102c8565b8063dd05aa12146104ba578063dd62ed3e146104cd576102c8565b8063bf62bee6116100bd578063bf62bee6146103ac578063c485852b14610494578063d505accf146104a7576102c8565b8063b3a59022146103ac578063b4dcfc771461030b576102c8565b806399248ea71161012f578063a135a55e11610114578063a135a55e146103ac578063a457c2d71461046e578063a9059cbb14610481576102c8565b806399248ea71461030b5780639dc29fac1461045b576102c8565b806370a082311161016057806370a08231146104405780637f372cff146103ac57806395d89b4114610453576102c8565b8063602665571461042d57806369a69e2914610384576102c8565b806331a5cfa41161022957806344b68c3f116101dd5780634800d97f116101c25780634800d97f1461040a578063491c011a1461041257806351c0e06114610425576102c8565b806344b68c3f1461038457806345c1ace7146103f7576102c8565b8063395093511161020e57806339509351146103c75780633eb2eba6146103da57806340c10f19146103e4576102c8565b806331a5cfa4146103ac57806336a5a6d6146103b4576102c8565b8063288587ce116102805780632f2cab87116102655780632f2cab8714610371578063308e401e14610384578063313ce56714610397576102c8565b8063288587ce146103485780632c4e722e14610369576102c8565b806310d0ab22116102b157806310d0ab221461030b57806318160ddd1461032057806323b872dd14610335576102c8565b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d56104f3565b6040516102e291906111d8565b60405180910390f35b6102fe6102f9366004611043565b6105a8565b6040516102e291906111c4565b6103136105bf565b6040516102e29190611123565b6103286105cc565b6040516102e291906111cf565b6102fe610343366004610e9a565b6105d2565b61035b61035636600461106d565b610633565b6040516102e2929190611249565b610328610649565b61032861037f3660046110a1565b610659565b610328610392366004610e06565b6106a3565b61039f6106b5565b6040516102e29190611257565b6103286105bf565b6103286103c236600461110b565b6105a5565b6102fe6103d5366004611043565b6106be565b6103e2610701565b005b6103e26103f2366004611043565b61070e565b6103e26104053660046110f0565b61071c565b61031361072a565b6103e2610420366004611018565b61074e565b610313610759565b61035b61043b366004610f54565b61077d565b61032861044e366004610e06565b610797565b6102d56107bf565b6103e2610469366004611043565b61083e565b6102fe61047c366004611043565b610848565b6102fe61048f366004611043565b61088e565b6103286104a2366004610ed7565b61089b565b6103e26104b5366004610fa5565b6108b3565b6103e26104c8366004610e55565b6108c7565b6103286104db366004610e21565b6108d7565b61035b6104ee36600461106d565b61090f565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b820191906000526020600020905b81548152906001019060200180831161058057829003601f168201915b505050505090505b90565b60006105b5338484610964565b5060015b92915050565b60006105a56103e66109d9565b60025490565b60006105df848484610a03565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610629918691610624908661019e610b24565b610964565b5060019392505050565b6000806106416103e66109d9565b935093915050565b6b033b2e3c9fd0803ce800000090565b60007f453f5ceaa8d79b7748d93ffec5a1173bcd603ff626bdd89a7986e213602672a63386868686604051610692959493929190611144565b60405180910390a150919392505050565b60006106b06103e66109d9565b919050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b59185906106249086610b3a565b61070c6103e66109d9565b565b6107188282610b53565b5050565b6107276103e66109d9565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107186103e66109d9565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008061078b6103e66109d9565b97509795505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b6107188282610c11565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b5918590610624908661019f610b24565b60006105b5338484610a03565b60006108a86103e66109d9565b979650505050505050565b6108be6103e66109d9565b50505050505050565b6108d26103e66109d9565b505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000807fcccf99d807f7fed9cc525109ed9b8899ad8b2cdd7ab053190ccdf7c977dcaf6133868661093f886105a5565b87604051610951959493929190611186565b60405180910390a1509193849350915050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109cc9085906111cf565b60405180910390a3505050565b610727817f42414c0000000000000000000000000000000000000000000000000000000000610d0d565b610a2773ffffffffffffffffffffffffffffffffffffffff84161515610198610d88565b610a4b73ffffffffffffffffffffffffffffffffffffffff83161515610199610d88565b610a568383836108d2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a8990826101a0610b24565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ac59082610b3a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109cc9085906111cf565b6000610b338484111583610d88565b5050900390565b6000828201610b4c8482101583610d88565b9392505050565b610b5f600083836108d2565b610b79610b7482610b6e6105cc565b90610b3a565b610d96565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ba99082610b3a565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c059085906111cf565b60405180910390a35050565b610c3573ffffffffffffffffffffffffffffffffffffffff8316151561019b610d88565b610c41826000836108d2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c7490826101b2610b24565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610caf610b7482610ca96105cc565b90610d9b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0591906111cf565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b8161071857610718816109d9565b600255565b6000610b4c83836001610b24565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b957600080fd5b803580151581146105b957600080fd5b600060608284031215610dee578081fd5b50919050565b803561ffff811681146105b957600080fd5b600060208284031215610e17578081fd5b610b4c8383610da9565b60008060408385031215610e33578081fd5b610e3d8484610da9565b9150610e4c8460208501610da9565b90509250929050565b600080600060608486031215610e69578081fd5b610e738585610da9565b9250610e828560208601610da9565b9150610e918560408601610dcd565b90509250925092565b600080600060608486031215610eae578283fd5b610eb88585610da9565b9250610ec78560208601610da9565b9150604084013590509250925092565b6000806000806000806000610120888a031215610ef2578283fd5b610efc8989610da9565b9650610f0b8960208a01610da9565b955060408801359450610f218960608a01610df4565b9350610f308960808a01610dcd565b925060a08801359150610f468960c08a01610ddd565b905092959891949750929550565b6000806000806000806000610120888a031215610f6f578283fd5b610f798989610da9565b9650610f888960208a01610da9565b95506040880135945060608801359350610f308960808a01610dcd565b600080600080600080600060e0888a031215610fbf578283fd5b610fc98989610da9565b9650610fd88960208a01610da9565b95506040880135945060608801359350608088013560ff81168114610ffb578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561102a578182fd5b6110348484610da9565b9150610e4c8460208501610dcd565b60008060408385031215611055578182fd5b61105f8484610da9565b946020939093013593505050565b600080600060608486031215611081578081fd5b61108b8585610da9565b925060208401359150610e918560408601610dcd565b600080600080608085870312156110b6578182fd5b6110c08686610da9565b9350602085013592506110d68660408701610df4565b91506110e58660608701610dcd565b905092959194509250565b600060208284031215611101578081fd5b610b4c8383610dcd565b60006020828403121561111c578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9586168152939094166020840152604083019190915261ffff166060820152901515608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152901515608082015260a00190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b81811015611204578581018301518582016040015282016111e8565b818111156112155783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b918252602082015260400190565b60ff9190911681526020019056fea26469706673582212207cf8b25f0251f9ee2d76e294adf1e7a1ced26d99748d59c6d826eb99e853d58264736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x154E CODESIZE SUB DUP1 PUSH3 0x154E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1FB JUMP JUMPDEST DUP4 DUP4 DUP2 DUP2 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x50 SWAP3 SWAP2 SWAP1 PUSH3 0x9A JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x66 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x9A JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE POP PUSH3 0x289 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0xDD JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x10D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x10D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x10D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xF0 JUMP JUMPDEST POP PUSH3 0x11B SWAP3 SWAP2 POP PUSH3 0x11F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x11B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x120 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x165 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x17C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x1F DUP5 ADD PUSH1 0x1F NOT AND DUP3 ADD DUP2 ADD DUP4 DUP2 GT DUP4 DUP3 LT OR ISZERO PUSH3 0x19E JUMPI DUP6 DUP7 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP2 SWAP5 POP DUP4 DUP3 MSTORE DUP7 DUP2 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP3 POP JUMPDEST DUP4 DUP4 LT ISZERO PUSH3 0x1DF JUMPI DUP6 DUP4 ADD DUP2 ADD MLOAD DUP3 DUP5 ADD DUP3 ADD MSTORE SWAP2 DUP3 ADD SWAP2 PUSH3 0x1C0 JUMP JUMPDEST DUP4 DUP4 GT ISZERO PUSH3 0x1F1 JUMPI PUSH1 0x0 DUP2 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x211 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x228 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH3 0x236 DUP9 DUP4 DUP10 ADD PUSH3 0x154 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x24C JUMPI DUP5 DUP6 REVERT JUMPDEST POP PUSH3 0x25B DUP8 DUP3 DUP9 ADD PUSH3 0x154 JUMP JUMPDEST SWAP4 POP POP PUSH3 0x26D DUP7 PUSH1 0x40 DUP8 ADD PUSH3 0x136 JUMP JUMPDEST SWAP2 POP PUSH3 0x27E DUP7 PUSH1 0x60 DUP8 ADD PUSH3 0x136 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x129B PUSH3 0x2B3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x75B MSTORE POP DUP1 PUSH2 0x72C MSTORE POP PUSH2 0x129B PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60266557 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xB3A59022 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDD05AA12 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAD5D359 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xDD05AA12 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CD JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xBF62BEE6 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBF62BEE6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4A7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xB3A59022 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x30B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA135A55E GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA135A55E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x481 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x45B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x453 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x60266557 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x384 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4800D97F GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x491C011A EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x425 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x45C1ACE7 EQ PUSH2 0x3F7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3E4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x2F2CAB87 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x397 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x369 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x10D0AB22 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2EB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D5 PUSH2 0x4F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11C4 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x5BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x5D2 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP3 SWAP2 SWAP1 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x649 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x659 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x6B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1257 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5BF JUMP JUMPDEST PUSH2 0x328 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x110B JUMP JUMPDEST PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x701 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x71C JUMP JUMPDEST PUSH2 0x313 PUSH2 0x72A JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x74E JUMP JUMPDEST PUSH2 0x313 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0xF54 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH2 0x328 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x469 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x83E JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x848 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x88E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x89B JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0xFA5 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x580 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A5 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP5 DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x629 SWAP2 DUP7 SWAP2 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x641 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x453F5CEAA8D79B7748D93FFEC5A1173BCD603FF626BDD89A7986E213602672A6 CALLER DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x692 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B0 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x70C PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xB53 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x727 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x718 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x78B PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xC11 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A8 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8BE PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xCCCF99D807F7FED9CC525109ED9B8899AD8B2CDD7AB053190CCDF7C977DCAF61 CALLER DUP7 DUP7 PUSH2 0x93F DUP9 PUSH2 0x5A5 JUMP JUMPDEST DUP8 PUSH1 0x40 MLOAD PUSH2 0x951 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1186 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x727 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0xA27 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA4B PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA56 DUP4 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA89 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAC5 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB33 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB4C DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB5F PUSH1 0x0 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0xB79 PUSH2 0xB74 DUP3 PUSH2 0xB6E PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0xD96 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBA9 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xC05 SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC35 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xC41 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC74 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xCAF PUSH2 0xB74 DUP3 PUSH2 0xCA9 PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC05 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x718 JUMPI PUSH2 0x718 DUP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4C DUP4 DUP4 PUSH1 0x1 PUSH2 0xB24 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDEE JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE17 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE33 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE3D DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE69 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE73 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xE82 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEAE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEB8 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xEC7 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xEF2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEFC DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF0B DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xF21 DUP10 PUSH1 0x60 DUP11 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0xF46 DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0xDDD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xF6F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xF79 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF88 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xFBF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xFC9 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xFD8 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFFB JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1034 DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1055 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x105F DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1081 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x108B DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10B6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10C0 DUP7 DUP7 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x10D6 DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x10E5 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1101 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1204 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x11E8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1215 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xF8B25F0251F9EE2D76E294ADF1E7A1CED26D99748D59C6D826EB99E853 0xD5 DUP3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"907:4939:98:-:0;;;1508:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1649:4;1655:6;844:4:69;850:6;2126:5:61;2118;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2141:17:61;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:61;:14;;-1:-1:-1;;2168:14:61;2180:2;2168:14;;;-1:-1:-1;;;;;;;;;1673:24:98::1;::::0;;;;;::::1;::::0;1707:16;;;::::1;::::0;-1:-1:-1;907:4939:98;;-1:-1:-1;907:4939:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;907:4939:98;;;-1:-1:-1;907:4939:98;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;5:164:-1;98:13;;-1:-1;;;;;2431:54;;2848:50;;2838:2;;2912:1;;2902:12;2838:2;83:86;;;;:::o;177:444::-;;290:3;283:4;275:6;271:17;267:27;257:2;;-1:-1;;298:12;257:2;332:13;;-1:-1;;;;;1962:30;;;1959:2;;;-1:-1;;1995:12;1959:2;1628;1622:9;2136:4;2068:9;2049:17;;-1:-1;;2045:33;1654:17;;;;1714:34;;;1750:22;;;1711:62;1708:2;;;-1:-1;;1776:12;1708:2;1806:10;1628:2;1795:22;;351:74;;;445:6;438:5;431:21;549:3;2136:4;540:6;473;531:16;;528:25;525:2;;;566:1;;556:12;525:2;2563:1;2554:10;;2570:101;2584:6;2581:1;2578:13;2570:101;;;2651:11;;;;;2645:18;2632:11;;;;;2625:39;2599:10;;;;2570:101;;;2686:6;2683:1;2680:13;2677:2;;;2563:1;2136:4;2742:6;507:5;2733:16;;2726:27;2677:2;;;;;250:371;;;;:::o;629:930::-;;;;;845:3;833:9;824:7;820:23;816:33;813:2;;;-1:-1;;852:12;813:2;897:24;;-1:-1;;;;;930:30;;;927:2;;;-1:-1;;963:12;927:2;993:74;1059:7;1050:6;1039:9;1035:22;993:74;:::i;:::-;983:84;;1125:2;1114:9;1110:18;1104:25;1090:39;;941:18;1141:6;1138:30;1135:2;;;-1:-1;;1171:12;1135:2;;1201:74;1267:7;1258:6;1247:9;1243:22;1201:74;:::i;:::-;1191:84;;;1330:79;1401:7;1312:2;1381:9;1377:22;1330:79;:::i;:::-;1320:89;;1464:79;1535:7;1446:2;1515:9;1511:22;1464:79;:::i;:::-;1454:89;;807:752;;;;;;;:::o;:::-;907:4939:98;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"14762":[{"length":32,"start":1836}],"14764":[{"length":32,"start":1883}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106102c85760003560e01c8063602665571161017b578063b3a59022116100d8578063dd05aa121161008c578063ead5d35911610071578063ead5d359146104e0578063ed24911d146103ac578063f57d0b40146103b4576102c8565b8063dd05aa12146104ba578063dd62ed3e146104cd576102c8565b8063bf62bee6116100bd578063bf62bee6146103ac578063c485852b14610494578063d505accf146104a7576102c8565b8063b3a59022146103ac578063b4dcfc771461030b576102c8565b806399248ea71161012f578063a135a55e11610114578063a135a55e146103ac578063a457c2d71461046e578063a9059cbb14610481576102c8565b806399248ea71461030b5780639dc29fac1461045b576102c8565b806370a082311161016057806370a08231146104405780637f372cff146103ac57806395d89b4114610453576102c8565b8063602665571461042d57806369a69e2914610384576102c8565b806331a5cfa41161022957806344b68c3f116101dd5780634800d97f116101c25780634800d97f1461040a578063491c011a1461041257806351c0e06114610425576102c8565b806344b68c3f1461038457806345c1ace7146103f7576102c8565b8063395093511161020e57806339509351146103c75780633eb2eba6146103da57806340c10f19146103e4576102c8565b806331a5cfa4146103ac57806336a5a6d6146103b4576102c8565b8063288587ce116102805780632f2cab87116102655780632f2cab8714610371578063308e401e14610384578063313ce56714610397576102c8565b8063288587ce146103485780632c4e722e14610369576102c8565b806310d0ab22116102b157806310d0ab221461030b57806318160ddd1461032057806323b872dd14610335576102c8565b806306fdde03146102cd578063095ea7b3146102eb575b600080fd5b6102d56104f3565b6040516102e291906111d8565b60405180910390f35b6102fe6102f9366004611043565b6105a8565b6040516102e291906111c4565b6103136105bf565b6040516102e29190611123565b6103286105cc565b6040516102e291906111cf565b6102fe610343366004610e9a565b6105d2565b61035b61035636600461106d565b610633565b6040516102e2929190611249565b610328610649565b61032861037f3660046110a1565b610659565b610328610392366004610e06565b6106a3565b61039f6106b5565b6040516102e29190611257565b6103286105bf565b6103286103c236600461110b565b6105a5565b6102fe6103d5366004611043565b6106be565b6103e2610701565b005b6103e26103f2366004611043565b61070e565b6103e26104053660046110f0565b61071c565b61031361072a565b6103e2610420366004611018565b61074e565b610313610759565b61035b61043b366004610f54565b61077d565b61032861044e366004610e06565b610797565b6102d56107bf565b6103e2610469366004611043565b61083e565b6102fe61047c366004611043565b610848565b6102fe61048f366004611043565b61088e565b6103286104a2366004610ed7565b61089b565b6103e26104b5366004610fa5565b6108b3565b6103e26104c8366004610e55565b6108c7565b6103286104db366004610e21565b6108d7565b61035b6104ee36600461106d565b61090f565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b820191906000526020600020905b81548152906001019060200180831161058057829003601f168201915b505050505090505b90565b60006105b5338484610964565b5060015b92915050565b60006105a56103e66109d9565b60025490565b60006105df848484610a03565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020908152604080832033808552925290912054610629918691610624908661019e610b24565b610964565b5060019392505050565b6000806106416103e66109d9565b935093915050565b6b033b2e3c9fd0803ce800000090565b60007f453f5ceaa8d79b7748d93ffec5a1173bcd603ff626bdd89a7986e213602672a63386868686604051610692959493929190611144565b60405180910390a150919392505050565b60006106b06103e66109d9565b919050565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b59185906106249086610b3a565b61070c6103e66109d9565b565b6107188282610b53565b5050565b6107276103e66109d9565b50565b7f000000000000000000000000000000000000000000000000000000000000000090565b6107186103e66109d9565b7f000000000000000000000000000000000000000000000000000000000000000090565b60008061078b6103e66109d9565b97509795505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561059d5780601f106105725761010080835404028352916020019161059d565b6107188282610c11565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916105b5918590610624908661019f610b24565b60006105b5338484610a03565b60006108a86103e66109d9565b979650505050505050565b6108be6103e66109d9565b50505050505050565b6108d26103e66109d9565b505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000807fcccf99d807f7fed9cc525109ed9b8899ad8b2cdd7ab053190ccdf7c977dcaf6133868661093f886105a5565b87604051610951959493929190611186565b60405180910390a1509193849350915050565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109cc9085906111cf565b60405180910390a3505050565b610727817f42414c0000000000000000000000000000000000000000000000000000000000610d0d565b610a2773ffffffffffffffffffffffffffffffffffffffff84161515610198610d88565b610a4b73ffffffffffffffffffffffffffffffffffffffff83161515610199610d88565b610a568383836108d2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610a8990826101a0610b24565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610ac59082610b3a565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526020819052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109cc9085906111cf565b6000610b338484111583610d88565b5050900390565b6000828201610b4c8482101583610d88565b9392505050565b610b5f600083836108d2565b610b79610b7482610b6e6105cc565b90610b3a565b610d96565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610ba99082610b3a565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081905260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c059085906111cf565b60405180910390a35050565b610c3573ffffffffffffffffffffffffffffffffffffffff8316151561019b610d88565b610c41826000836108d2565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610c7490826101b2610b24565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610caf610b7482610ca96105cc565b90610d9b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c0591906111cf565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b8161071857610718816109d9565b600255565b6000610b4c83836001610b24565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b957600080fd5b803580151581146105b957600080fd5b600060608284031215610dee578081fd5b50919050565b803561ffff811681146105b957600080fd5b600060208284031215610e17578081fd5b610b4c8383610da9565b60008060408385031215610e33578081fd5b610e3d8484610da9565b9150610e4c8460208501610da9565b90509250929050565b600080600060608486031215610e69578081fd5b610e738585610da9565b9250610e828560208601610da9565b9150610e918560408601610dcd565b90509250925092565b600080600060608486031215610eae578283fd5b610eb88585610da9565b9250610ec78560208601610da9565b9150604084013590509250925092565b6000806000806000806000610120888a031215610ef2578283fd5b610efc8989610da9565b9650610f0b8960208a01610da9565b955060408801359450610f218960608a01610df4565b9350610f308960808a01610dcd565b925060a08801359150610f468960c08a01610ddd565b905092959891949750929550565b6000806000806000806000610120888a031215610f6f578283fd5b610f798989610da9565b9650610f888960208a01610da9565b95506040880135945060608801359350610f308960808a01610dcd565b600080600080600080600060e0888a031215610fbf578283fd5b610fc98989610da9565b9650610fd88960208a01610da9565b95506040880135945060608801359350608088013560ff81168114610ffb578384fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561102a578182fd5b6110348484610da9565b9150610e4c8460208501610dcd565b60008060408385031215611055578182fd5b61105f8484610da9565b946020939093013593505050565b600080600060608486031215611081578081fd5b61108b8585610da9565b925060208401359150610e918560408601610dcd565b600080600080608085870312156110b6578182fd5b6110c08686610da9565b9350602085013592506110d68660408701610df4565b91506110e58660608701610dcd565b905092959194509250565b600060208284031215611101578081fd5b610b4c8383610dcd565b60006020828403121561111c578081fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9586168152939094166020840152604083019190915261ffff166060820152901515608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152901515608082015260a00190565b901515815260200190565b90815260200190565b6000602080835283518082850152825b81811015611204578581018301518582016040015282016111e8565b818111156112155783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b918252602082015260400190565b60ff9190911681526020019056fea26469706673582212207cf8b25f0251f9ee2d76e294adf1e7a1ced26d99748d59c6d826eb99e853d58264736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2C8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x60266557 GT PUSH2 0x17B JUMPI DUP1 PUSH4 0xB3A59022 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xDD05AA12 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xEAD5D359 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xEAD5D359 EQ PUSH2 0x4E0 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xF57D0B40 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xDD05AA12 EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x4CD JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xBF62BEE6 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBF62BEE6 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xC485852B EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x4A7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0xB3A59022 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xB4DCFC77 EQ PUSH2 0x30B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0xA135A55E GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA135A55E EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x481 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x99248EA7 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x9DC29FAC EQ PUSH2 0x45B JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x70A08231 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x440 JUMPI DUP1 PUSH4 0x7F372CFF EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x453 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x60266557 EQ PUSH2 0x42D JUMPI DUP1 PUSH4 0x69A69E29 EQ PUSH2 0x384 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 GT PUSH2 0x229 JUMPI DUP1 PUSH4 0x44B68C3F GT PUSH2 0x1DD JUMPI DUP1 PUSH4 0x4800D97F GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4800D97F EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x491C011A EQ PUSH2 0x412 JUMPI DUP1 PUSH4 0x51C0E061 EQ PUSH2 0x425 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x44B68C3F EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x45C1ACE7 EQ PUSH2 0x3F7 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x39509351 GT PUSH2 0x20E JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0x3EB2EBA6 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x3E4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x31A5CFA4 EQ PUSH2 0x3AC JUMPI DUP1 PUSH4 0x36A5A6D6 EQ PUSH2 0x3B4 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE GT PUSH2 0x280 JUMPI DUP1 PUSH4 0x2F2CAB87 GT PUSH2 0x265 JUMPI DUP1 PUSH4 0x2F2CAB87 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x308E401E EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x397 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x288587CE EQ PUSH2 0x348 JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x369 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x10D0AB22 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x10D0AB22 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x335 JUMPI PUSH2 0x2C8 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2CD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2EB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2D5 PUSH2 0x4F3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11D8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FE PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x5A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11C4 JUMP JUMPDEST PUSH2 0x313 PUSH2 0x5BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1123 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x343 CALLDATASIZE PUSH1 0x4 PUSH2 0xE9A JUMP JUMPDEST PUSH2 0x5D2 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x356 CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x633 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP3 SWAP2 SWAP1 PUSH2 0x1249 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x649 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x10A1 JUMP JUMPDEST PUSH2 0x659 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x6A3 JUMP JUMPDEST PUSH2 0x39F PUSH2 0x6B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2E2 SWAP2 SWAP1 PUSH2 0x1257 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x5BF JUMP JUMPDEST PUSH2 0x328 PUSH2 0x3C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x110B JUMP JUMPDEST PUSH2 0x5A5 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x3D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x6BE JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x701 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0x3F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x405 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F0 JUMP JUMPDEST PUSH2 0x71C JUMP JUMPDEST PUSH2 0x313 PUSH2 0x72A JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x420 CALLDATASIZE PUSH1 0x4 PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x74E JUMP JUMPDEST PUSH2 0x313 PUSH2 0x759 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x43B CALLDATASIZE PUSH1 0x4 PUSH2 0xF54 JUMP JUMPDEST PUSH2 0x77D JUMP JUMPDEST PUSH2 0x328 PUSH2 0x44E CALLDATASIZE PUSH1 0x4 PUSH2 0xE06 JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x7BF JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x469 CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x83E JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x47C CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x848 JUMP JUMPDEST PUSH2 0x2FE PUSH2 0x48F CALLDATASIZE PUSH1 0x4 PUSH2 0x1043 JUMP JUMPDEST PUSH2 0x88E JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4A2 CALLDATASIZE PUSH1 0x4 PUSH2 0xED7 JUMP JUMPDEST PUSH2 0x89B JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0xFA5 JUMP JUMPDEST PUSH2 0x8B3 JUMP JUMPDEST PUSH2 0x3E2 PUSH2 0x4C8 CALLDATASIZE PUSH1 0x4 PUSH2 0xE55 JUMP JUMPDEST PUSH2 0x8C7 JUMP JUMPDEST PUSH2 0x328 PUSH2 0x4DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE21 JUMP JUMPDEST PUSH2 0x8D7 JUMP JUMPDEST PUSH2 0x35B PUSH2 0x4EE CALLDATASIZE PUSH1 0x4 PUSH2 0x106D JUMP JUMPDEST PUSH2 0x90F JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x580 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A5 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5DF DUP5 DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x629 SWAP2 DUP7 SWAP2 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x964 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x641 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH12 0x33B2E3C9FD0803CE8000000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x453F5CEAA8D79B7748D93FFEC5A1173BCD603FF626BDD89A7986E213602672A6 CALLER DUP7 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x692 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1144 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6B0 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x70C PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xB53 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x727 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x718 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x78B PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x59D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x572 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x59D JUMP JUMPDEST PUSH2 0x718 DUP3 DUP3 PUSH2 0xC11 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x5B5 SWAP2 DUP6 SWAP1 PUSH2 0x624 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xB24 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B5 CALLER DUP5 DUP5 PUSH2 0xA03 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8A8 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8BE PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x8D2 PUSH2 0x3E6 PUSH2 0x9D9 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0xCCCF99D807F7FED9CC525109ED9B8899AD8B2CDD7AB053190CCDF7C977DCAF61 CALLER DUP7 DUP7 PUSH2 0x93F DUP9 PUSH2 0x5A5 JUMP JUMPDEST DUP8 PUSH1 0x40 MLOAD PUSH2 0x951 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1186 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP SWAP2 SWAP4 DUP5 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0x727 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0xD0D JUMP JUMPDEST PUSH2 0xA27 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA4B PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xA56 DUP4 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA89 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAC5 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9CC SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB33 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB4C DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xD88 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xB5F PUSH1 0x0 DUP4 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH2 0xB79 PUSH2 0xB74 DUP3 PUSH2 0xB6E PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0xD96 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xBA9 SWAP1 DUP3 PUSH2 0xB3A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP2 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xC05 SWAP1 DUP6 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0xC35 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xC41 DUP3 PUSH1 0x0 DUP4 PUSH2 0x8D2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC74 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xB24 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xCAF PUSH2 0xB74 DUP3 PUSH2 0xCA9 PUSH2 0x5CC JUMP JUMPDEST SWAP1 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0xC05 SWAP2 SWAP1 PUSH2 0x11CF JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT JUMPDEST DUP2 PUSH2 0x718 JUMPI PUSH2 0x718 DUP2 PUSH2 0x9D9 JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB4C DUP4 DUP4 PUSH1 0x1 PUSH2 0xB24 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDEE JUMPI DUP1 DUP2 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE17 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE33 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE3D DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE69 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xE73 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xE82 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xEAE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEB8 DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH2 0xEC7 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xEF2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xEFC DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF0B DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH2 0xF21 DUP10 PUSH1 0x60 DUP11 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0xF46 DUP10 PUSH1 0xC0 DUP11 ADD PUSH2 0xDDD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xF6F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xF79 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xF88 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH2 0xF30 DUP10 PUSH1 0x80 DUP11 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0xFBF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xFC9 DUP10 DUP10 PUSH2 0xDA9 JUMP JUMPDEST SWAP7 POP PUSH2 0xFD8 DUP10 PUSH1 0x20 DUP11 ADD PUSH2 0xDA9 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xFFB JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x102A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1034 DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP2 POP PUSH2 0xE4C DUP5 PUSH1 0x20 DUP6 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1055 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x105F DUP5 DUP5 PUSH2 0xDA9 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1081 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x108B DUP6 DUP6 PUSH2 0xDA9 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0xE91 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x10B6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x10C0 DUP7 DUP7 PUSH2 0xDA9 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x10D6 DUP7 PUSH1 0x40 DUP8 ADD PUSH2 0xDF4 JUMP JUMPDEST SWAP2 POP PUSH2 0x10E5 DUP7 PUSH1 0x60 DUP8 ADD PUSH2 0xDCD JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1101 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xB4C DUP4 DUP4 PUSH2 0xDCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x111C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0xFFFF AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1204 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x11E8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x1215 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH29 0xF8B25F0251F9EE2D76E294ADF1E7A1CED26D99748D59C6D826EB99E853 0xD5 DUP3 PUSH5 0x736F6C6343 STOP SMOD ADD STOP CALLER ","sourceMap":"907:4939:98:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81:61;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4857:164;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5608:120:98:-;;;:::i;:::-;;;;;;;:::i;3500:106:61:-;;;:::i;:::-;;;;;;;:::i;5488:386::-;;;;;;:::i;:::-;;:::i;3395:181:98:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2147:84::-;;;:::i;2237:281::-;;;;;;:::i;:::-;;:::i;4844:125::-;;;;;;:::i;:::-;;:::i;3156:81:61:-;;;:::i;:::-;;;;;;;:::i;5232:124:98:-;;;:::i;2938:118::-;;;;;;:::i;:::-;;:::i;6269:211:61:-;;;;;;:::i;:::-;;:::i;4225:104:98:-;;;:::i;:::-;;866:99:69;;;;;;:::i;:::-;;:::i;4606:103:98:-;;;;;;:::i;:::-;;:::i;1789:87::-;;;:::i;4494:106::-;;;;;;:::i;:::-;;:::i;1882:89::-;;;:::i;3834:257::-;;;;;;:::i;:::-;;:::i;4022:117:61:-;;;;;;:::i;:::-;;:::i;2448:85::-;;;:::i;971:93:69:-;;;;;;:::i;:::-;;:::i;6967:312:61:-;;;;;;:::i;:::-;;:::i;4342:170::-;;;;;;:::i;:::-;;:::i;3582:246:98:-;;;;;;:::i;:::-;;:::i;3062:206::-;;;;;;:::i;:::-;;:::i;4335:153::-;;;;;;:::i;:::-;;:::i;4570:149:61:-;;;;;;:::i;:::-;;:::i;2524:286:98:-;;;;;;:::i;:::-;;:::i;2254:81:61:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:61;4857:164;;;;;:::o;5608:120:98:-;5673:7;5692:29;14976:3:19;5692:7:98;:29::i;3500:106:61:-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11033:3:19;5752:35:61;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:61;5488:386;;;;;:::o;3395:181:98:-;3512:7;3521;3540:29;14976:3:19;3540:7:98;:29::i;:::-;3395:181;;;;;;:::o;2147:84::-;1422:4;2147:84;:::o;2237:281::-;2396:7;2420:68;2428:10;2440:9;2451:6;2459:12;2473:14;2420:68;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2505:6:98;;2237:281;-1:-1:-1;;;2237:281:98:o;4844:125::-;4914:7;4933:29;14976:3:19;4933:7:98;:29::i;:::-;4844:125;;;:::o;3156:81:61:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4225:104:98:-;4293:29;14976:3:19;4293:7:98;:29::i;:::-;4225:104::o;866:99:69:-;934:24;940:9;951:6;934:5;:24::i;:::-;866:99;;:::o;4606:103:98:-;4673:29;14976:3:19;4673:7:98;:29::i;:::-;4606:103;:::o;1789:87::-;1863:6;1789:87;:::o;4494:106::-;4564:29;14976:3:19;4564:7:98;:29::i;1882:89::-;1957:7;1882:89;:::o;3834:257::-;4027:7;4036;4055:29;14976:3:19;4055:7:98;:29::i;:::-;3834:257;;;;;;;;;;:::o;4022:117:61:-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2448:85::-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;971:93:69;1036:21;1042:6;1050;1036:5;:21::i;6967:312:61:-;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11107:3:19;7143:36:61;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;3582:246:98:-;3773:7;3792:29;14976:3:19;3792:7:98;:29::i;:::-;3582:246;;;;;;;;;:::o;3062:206::-;3232:29;14976:3:19;3232:7:98;:29::i;:::-;3062:206;;;;;;;:::o;4335:153::-;4452:29;14976:3:19;4452:7:98;:29::i;:::-;4335:153;;;:::o;4570:149:61:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;2524:286:98:-;2653:7;2662;2686:84;2695:10;2707:9;2718:6;2726:29;2748:6;2726:21;:29::i;:::-;2757:12;2686:84;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2788:6:98;;;;-1:-1:-1;2524:286:98;-1:-1:-1;;2524:286:98:o;10034:213:61:-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;10208:32;;;;;10187:6;;10208:32;:::i;:::-;;;;;;;;10034:213;;;:::o;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;7753:559:61:-;7880:71;7889:20;;;;;10629:3:19;7880:8:61;:71::i;:::-;7961:72;7970:23;;;;;10697:3:19;7961:8:61;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11175:3:19;8122:21:61;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;;;;8298:6;;8270:35;:::i;1816:206:68:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:68;;;1816:206::o;966:167::-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:68:o;8583:297:61:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;8770:18;;:9;8836:37;;;;8866:6;;8836:37;:::i;:::-;;;;;;;;8583:297;;:::o;9200:411::-;9275:68;9284:21;;;;;10827:3:19;9275:8:61;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12271:3:19;9435:22:61;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9593:1;9567:37;;9576:7;9567:37;;;9597:6;9567:37;;;;;;:::i;1692:3378:19:-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14;926:101;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;3870:94:61:-;3937:12;:20;3870:94::o;1404:121:68:-;1462:7;1488:30;1492:1;1495;5194::19;1488:3:68;:30::i;5:130:-1:-;72:20;;13609:42;13598:54;;14939:35;;14929:2;;14988:1;;14978:12;142:124;206:20;;13340:13;;13333:21;15060:32;;15050:2;;15106:1;;15096:12;457:166;;576:2;567:6;562:3;558:16;554:25;551:2;;;-1:-1;;582:12;551:2;-1:-1;602:15;544:79;-1:-1;544:79::o;630:128::-;696:20;;13517:6;13506:18;;15304:34;;15294:2;;15352:1;;15342:12;1035:241;;1139:2;1127:9;1118:7;1114:23;1110:32;1107:2;;;-1:-1;;1145:12;1107:2;1207:53;1252:7;1228:22;1207:53;:::i;1283:366::-;;;1404:2;1392:9;1383:7;1379:23;1375:32;1372:2;;;-1:-1;;1410:12;1372:2;1472:53;1517:7;1493:22;1472:53;:::i;:::-;1462:63;;1580:53;1625:7;1562:2;1605:9;1601:22;1580:53;:::i;:::-;1570:63;;1366:283;;;;;:::o;1656:485::-;;;;1791:2;1779:9;1770:7;1766:23;1762:32;1759:2;;;-1:-1;;1797:12;1759:2;1859:53;1904:7;1880:22;1859:53;:::i;:::-;1849:63;;1967:53;2012:7;1949:2;1992:9;1988:22;1967:53;:::i;:::-;1957:63;;2075:50;2117:7;2057:2;2097:9;2093:22;2075:50;:::i;:::-;2065:60;;1753:388;;;;;:::o;2148:491::-;;;;2286:2;2274:9;2265:7;2261:23;2257:32;2254:2;;;-1:-1;;2292:12;2254:2;2354:53;2399:7;2375:22;2354:53;:::i;:::-;2344:63;;2462:53;2507:7;2444:2;2487:9;2483:22;2462:53;:::i;:::-;2452:63;;2552:2;2595:9;2591:22;832:20;2560:63;;2248:391;;;;;:::o;2646:1057::-;;;;;;;;2883:3;2871:9;2862:7;2858:23;2854:33;2851:2;;;-1:-1;;2890:12;2851:2;2952:53;2997:7;2973:22;2952:53;:::i;:::-;2942:63;;3060:53;3105:7;3042:2;3085:9;3081:22;3060:53;:::i;:::-;3050:63;;3150:2;3193:9;3189:22;832:20;3158:63;;3276:52;3320:7;3258:2;3300:9;3296:22;3276:52;:::i;:::-;3266:62;;3384:50;3426:7;3365:3;3406:9;3402:22;3384:50;:::i;:::-;3374:60;;3471:3;3515:9;3511:22;832:20;3480:63;;3599:88;3679:7;3580:3;3659:9;3655:22;3599:88;:::i;:::-;3589:98;;2845:858;;;;;;;;;;:::o;3710:1059::-;;;;;;;;3948:3;3936:9;3927:7;3923:23;3919:33;3916:2;;;-1:-1;;3955:12;3916:2;4017:53;4062:7;4038:22;4017:53;:::i;:::-;4007:63;;4125:53;4170:7;4107:2;4150:9;4146:22;4125:53;:::i;:::-;4115:63;;4215:2;4258:9;4254:22;832:20;4223:63;;4323:2;4366:9;4362:22;832:20;4331:63;;4450:50;4492:7;4431:3;4472:9;4468:22;4450:50;:::i;4776:991::-;;;;;;;;4980:3;4968:9;4959:7;4955:23;4951:33;4948:2;;;-1:-1;;4987:12;4948:2;5049:53;5094:7;5070:22;5049:53;:::i;:::-;5039:63;;5157:53;5202:7;5139:2;5182:9;5178:22;5157:53;:::i;:::-;5147:63;;5247:2;5290:9;5286:22;832:20;5255:63;;5355:2;5398:9;5394:22;832:20;5363:63;;5463:3;5505:9;5501:22;967:20;13814:4;15575:5;13803:16;15552:5;15549:33;15539:2;;-1:-1;;15586:12;15539:2;4942:825;;;;-1:-1;4942:825;;;;5472:61;5570:3;5610:22;;340:20;;-1:-1;5679:3;5719:22;;;340:20;;4942:825;-1:-1;;4942:825::o;5774:360::-;;;5892:2;5880:9;5871:7;5867:23;5863:32;5860:2;;;-1:-1;;5898:12;5860:2;5960:53;6005:7;5981:22;5960:53;:::i;:::-;5950:63;;6068:50;6110:7;6050:2;6090:9;6086:22;6068:50;:::i;6141:366::-;;;6262:2;6250:9;6241:7;6237:23;6233:32;6230:2;;;-1:-1;;6268:12;6230:2;6330:53;6375:7;6351:22;6330:53;:::i;:::-;6320:63;6420:2;6459:22;;;;832:20;;-1:-1;;;6224:283::o;6514:485::-;;;;6649:2;6637:9;6628:7;6624:23;6620:32;6617:2;;;-1:-1;;6655:12;6617:2;6717:53;6762:7;6738:22;6717:53;:::i;:::-;6707:63;;6807:2;6850:9;6846:22;832:20;6815:63;;6933:50;6975:7;6915:2;6955:9;6951:22;6933:50;:::i;7006:609::-;;;;;7157:3;7145:9;7136:7;7132:23;7128:33;7125:2;;;-1:-1;;7164:12;7125:2;7226:53;7271:7;7247:22;7226:53;:::i;:::-;7216:63;;7316:2;7359:9;7355:22;832:20;7324:63;;7442:52;7486:7;7424:2;7466:9;7462:22;7442:52;:::i;:::-;7432:62;;7549:50;7591:7;7531:2;7571:9;7567:22;7549:50;:::i;:::-;7539:60;;7119:496;;;;;;;:::o;7622:235::-;;7723:2;7711:9;7702:7;7698:23;7694:32;7691:2;;;-1:-1;;7729:12;7691:2;7791:50;7833:7;7809:22;7791:50;:::i;7864:241::-;;7968:2;7956:9;7947:7;7943:23;7939:32;7936:2;;;-1:-1;;7974:12;7936:2;-1:-1;832:20;;7930:175;-1:-1;7930:175::o;9480:222::-;13609:42;13598:54;;;;8332:37;;9607:2;9592:18;;9578:124::o;9709:668::-;13609:42;13598:54;;;8191:58;;13598:54;;;;10121:2;10106:18;;8332:37;10204:2;10189:18;;8563:37;;;;13517:6;13506:18;10285:2;10270:18;;9198:36;13340:13;;13333:21;10362:3;10347:19;;8446:34;9948:3;9933:19;;9919:458::o;10384:672::-;13609:42;13598:54;;;8191:58;;13598:54;;;;10798:2;10783:18;;8332:37;10881:2;10866:18;;8563:37;;;;10964:2;10949:18;;8563:37;13340:13;;13333:21;11041:3;11026:19;;8446:34;10625:3;10610:19;;10596:460::o;11063:210::-;13340:13;;13333:21;8446:34;;11184:2;11169:18;;11155:118::o;11280:222::-;8563:37;;;11407:2;11392:18;;11378:124::o;11768:310::-;;11915:2;;11936:17;11929:47;8920:5;12963:12;13120:6;11915:2;11904:9;11900:18;13108:19;-1:-1;14571:101;14585:6;14582:1;14579:13;14571:101;;;14652:11;;;;;14646:18;14633:11;;;13148:14;14633:11;14626:39;14600:10;;14571:101;;;14687:6;14684:1;14681:13;14678:2;;;-1:-1;13148:14;14743:6;11904:9;14734:16;;14727:27;14678:2;-1:-1;14863:2;14843:14;14859:7;14839:28;9078:39;;;;13148:14;9078:39;;11886:192;-1:-1;;;11886:192::o;12314:333::-;8563:37;;;12633:2;12618:18;;8563:37;12469:2;12454:18;;12440:207::o;12654:214::-;13814:4;13803:16;;;;9433:35;;12777:2;12762:18;;12748:120::o"},"methodIdentifiers":{"ASSET()":"4800d97f","ATOKEN()":"51c0e061","INCENTIVES_CONTROLLER()":"10d0ab22","LENDING_POOL()":"b4dcfc77","REWARD_TOKEN()":"99248ea7","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address,uint256)":"9dc29fac","claimRewards(address,bool)":"491c011a","claimRewardsOnBehalf(address,address,bool)":"dd05aa12","claimRewardsToSelf(bool)":"45c1ace7","collectAndUpdateRewards()":"3eb2eba6","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","deposit(address,uint256,uint16,bool)":"2f2cab87","dynamicBalanceOf(address)":"44b68c3f","dynamicToStaticAmount(uint256)":"36a5a6d6","getAccRewardsPerToken()":"a135a55e","getClaimableRewards(address)":"308e401e","getDomainSeparator()":"ed24911d","getLastRewardBlock()":"bf62bee6","getLifetimeRewards()":"b3a59022","getLifetimeRewardsClaimed()":"31a5cfa4","getTotalClaimableRewards()":"7f372cff","getUnclaimedRewards(address)":"69a69e29","increaseAllowance(address,uint256)":"39509351","metaDeposit(address,address,uint256,uint16,bool,uint256,(uint8,bytes32,bytes32))":"c485852b","metaWithdraw(address,address,uint256,uint256,bool,uint256,(uint8,bytes32,bytes32))":"60266557","mint(address,uint256)":"40c10f19","name()":"06fdde03","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","rate()":"2c4e722e","staticToDynamicAmount(uint256)":"f57d0b40","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(address,uint256,bool)":"ead5d359","withdrawDynamicAmount(address,uint256,bool)":"288587ce"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"contract IERC20\",\"name\":\"underlyingAsset\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"aToken\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"staticAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"dynamicAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ASSET\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ATOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"INCENTIVES_CONTROLLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LENDING_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"REWARD_TOKEN\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewardsOnBehalf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"claimRewardsToSelf\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectAndUpdateRewards\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"fromUnderlying\",\"type\":\"bool\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"dynamicBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"dynamicToStaticAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccRewardsPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRewardBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLifetimeRewardsClaimed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalClaimableRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getUnclaimedRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"metaDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"internalType\":\"struct IStaticATokenLM.SignatureParams\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"metaWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"staticToDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"toUnderlying\",\"type\":\"bool\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"withdrawDynamicAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"deposit(address,uint256,uint16,bool)\":{\"params\":{\"amount\":\"The amount of underlying `ASSET` to deposit (e.g. deposit of 100 USDC)\",\"fromUnderlying\":\"bool - `true` if the msg.sender comes with underlying tokens (e.g. USDC) - `false` if the msg.sender comes already with aTokens (e.g. aUSDC)\",\"recipient\":\"The address that will receive the static aTokens\",\"referralCode\":\"Code used to register the integrator originating the operation, for potential rewards. 0 if the action is executed directly by the user, without any middle-man\"},\"returns\":{\"_0\":\"uint256 The amount of StaticAToken minted, static balance*\"}},\"dynamicToStaticAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The static (scaled) amount*\"}},\"getDomainSeparator()\":{\"returns\":{\"_0\":\"bytes32 The domain separator*\"}},\"getTotalClaimableRewards()\":{\"returns\":{\"_0\":\"The current balance + pending rewards from the `_incentivesController`\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"rate()\":{\"returns\":{\"_0\":\"The liquidity index*\"}},\"staticToDynamicAmount(uint256)\":{\"params\":{\"amount\":\"The amount to convert from\"},\"returns\":{\"_0\":\"uint256 The dynamic amount*\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"withdraw(address,uint256,bool)\":{\"params\":{\"amount\":\"The amount to withdraw, in static balance of StaticAToken\",\"recipient\":\"The address that will receive the amount of `ASSET` withdrawn from the Aave protocol\",\"toUnderlying\":\"bool - `true` for the recipient to get underlying tokens (e.g. USDC) - `false` for the recipient to get aTokens (e.g. aUSDC)\"},\"returns\":{\"_0\":\"amountToBurn: StaticATokens burnt, static balance\",\"_1\":\"amountToWithdraw: underlying/aToken send to `recipient`, dynamic balance*\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collectAndUpdateRewards()\":{\"notice\":\"Claims rewards from `INCENTIVES_CONTROLLER` and updates internal accounting of rewards.\"},\"deposit(address,uint256,uint16,bool)\":{\"notice\":\"Deposits `ASSET` in the Aave protocol and mints static aTokens to msg.sender\"},\"dynamicToStaticAmount(uint256)\":{\"notice\":\"Converts an aToken or underlying amount to the what it is denominated on the aToken as scaled balance, function of the principal and the liquidity index\"},\"getDomainSeparator()\":{\"notice\":\"Function to return a dynamic domain separator, in order to be compatible with forks changing chainId\"},\"getTotalClaimableRewards()\":{\"notice\":\"Get the total claimable rewards of the contract.\"},\"rate()\":{\"notice\":\"Returns the Aave liquidity index of the underlying aToken, denominated rate here as it can be considered as an ever-increasing exchange rate\"},\"staticToDynamicAmount(uint256)\":{\"notice\":\"Converts a static amount (scaled balance on aToken) to the aToken/underlying value, using the current liquidity index on Aave\"},\"withdraw(address,uint256,bool)\":{\"notice\":\"Burns `amount` of static aToken, with recipient receiving the corresponding amount of `ASSET`\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockStaticATokenLM.sol\":\"MockStaticATokenLM\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IStaticATokenLM.sol\":{\"keccak256\":\"0xfafcbe0521ed86c23e7eba0228cc52475b2a4ed05741cbe82934c9cbeda0b291\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://200717e35fc8218765342006b3d20fb2b3734321bd809664d9c0527cbbe67e0b\",\"dweb:/ipfs/QmexSP1nGXHyf5gsNMTsE4rnYSQjorWVEVUiV31sFRgpQ4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"@balancer-labs/v2-solidity-utils/contracts/test/ERC20Mock.sol\":{\"keccak256\":\"0x8d2b8caba9d7c313b1e6d13b305f9aae9304ed533b24b56345311f175a02ccd1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://37c52b721d6a59fb11dc5fdd27a633c0af3e0cb7a1044a8f6b86e9ac3d7fe1cb\",\"dweb:/ipfs/QmdMQG1kKsZtyDgxVk3ZLHkoYi442pxf1MfAKVj2B74qLj\"]},\"contracts/test/MockStaticATokenLM.sol\":{\"keccak256\":\"0x6512dbead06601b2b9caec64d88bb0a4f09246679c66dca9c000bb21598cfa83\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://20963535a069cfd413a88c89ee969b043ae87ca4bcdf37f4cc1afa167a3220db\",\"dweb:/ipfs/QmVWjPFawJ4ThhkmncDAA9h3pjcQV8kb3YMJt7U8ZHnNJ8\"]}},\"version\":1}"}},"contracts/test/MockWstETH.sol":{"MockWstETH":{"abi":[{"inputs":[{"internalType":"contract IstETH","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"getStETHByWstETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"getWstETHByStETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stETH","outputs":[{"internalType":"contract IstETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stEthPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensPerStEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_wstETHAmount","type":"uint256"}],"name":"unwrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stETHAmount","type":"uint256"}],"name":"wrap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60806040526714d1120d7b1600006006553480156200001d57600080fd5b50604051620012c1380380620012c1833981810160405260208110156200004357600080fd5b5051604080518082018252601481527f57726170706564205374616b65642045746865720000000000000000000000006020828101918252835180850190945260068452650eee6e88aa8960d31b908401528151919291620000a891600391620000f8565b508051620000be906004906020840190620000f8565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff1990941660121793909316929092179091555062000194565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b5b808211156200017957600081556001016200017e565b61111d80620001a46000396000f3fe6080604052600436106101485760003560e01c80639576a0c8116100c0578063bb2952fc11610074578063dd62ed3e11610059578063dd62ed3e14610589578063de0e9a3e146105d1578063ea598cb0146105fb57610206565b8063bb2952fc14610521578063c1fe3e481461054b57610206565b8063a457c2d7116100a5578063a457c2d71461046b578063a9059cbb146104b1578063b0e38900146104f757610206565b80639576a0c81461044157806395d89b411461045657610206565b806323b872dd11610117578063313ce567116100fc578063313ce5671461039057806339509351146103bb57806370a082311461040157610206565b806323b872dd1461032b5780632c4e722e1461037b57610206565b8063035faf821461020b57806306fdde0314610232578063095ea7b3146102bc57806318160ddd1461031657610206565b3661020657600554604080517fa1903eab000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a1903eab913491602480830192602092919082900301818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b50505050506040513d60208110156101ef57600080fd5b506102049050336101ff34610625565b610642565b005b600080fd5b34801561021757600080fd5b506102206106fb565b60408051918252519081900360200190f35b34801561023e57600080fd5b50610247610713565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610281578181015183820152602001610269565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c857600080fd5b50610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c7565b604080519115158252519081900360200190f35b34801561032257600080fd5b506102206107dd565b34801561033757600080fd5b506103026004803603606081101561034e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e3565b34801561038757600080fd5b50610220610844565b34801561039c57600080fd5b506103a561084a565b6040805160ff9092168252519081900360200190f35b3480156103c757600080fd5b50610302600480360360408110156103de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610853565b34801561040d57600080fd5b506102206004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610896565b34801561044d57600080fd5b506102206108be565b34801561046257600080fd5b506102476108d1565b34801561047757600080fd5b506103026004803603604081101561048e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610950565b3480156104bd57600080fd5b50610302600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610996565b34801561050357600080fd5b506102206004803603602081101561051a57600080fd5b5035610625565b34801561052d57600080fd5b506102206004803603602081101561054457600080fd5b50356109a3565b34801561055757600080fd5b506105606109ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b50610220600480360360408110156105ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109db565b3480156105dd57600080fd5b50610220600480360360208110156105f457600080fd5b5035610a13565b34801561060757600080fd5b506102206004803603602081101561061e57600080fd5b5035610a56565b600061063c60065483610a9a90919063ffffffff16565b92915050565b61064e60008383610aed565b6106686106638261065d6107dd565b90610af2565b610b0b565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546106989082610af2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061070e670de0b6b3a76400006109a3565b905090565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d4338484610b10565b50600192915050565b60025490565b60006107f0848484610b7f565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461083a918691610835908661019e610ca8565b610b10565b5060019392505050565b60065481565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d49185906108359086610af2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070e670de0b6b3a7640000610625565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d4918590610835908661019f610ca8565b60006107d4338484610b7f565b600061063c60065483610cbe90919063ffffffff16565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610a1f3383610cf1565b6000610a2a836109a3565b60055490915061063c90610100900473ffffffffffffffffffffffffffffffffffffffff163383610de1565b600554600090610a8390610100900473ffffffffffffffffffffffffffffffffffffffff16333085610e6e565b6000610a8e83610625565b905061063c3382610642565b6000610aa98215156004610f09565b670de0b6b3a76400008302610adb841580610ad45750670de0b6b3a7640000858381610ad157fe5b04145b6005610f09565b828181610ae457fe5b04949350505050565b505050565b6000828201610b048482101583610f09565b9392505050565b600255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610ba373ffffffffffffffffffffffffffffffffffffffff84161515610198610f09565b610bc773ffffffffffffffffffffffffffffffffffffffff83161515610199610f09565b610bd2838383610aed565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c0590826101a0610ca8565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c419082610af2565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610cb78484111583610f09565b5050900390565b6000828202610ce2841580610cdb575083858381610cd857fe5b04145b6003610f09565b670de0b6b3a764000081610ae4565b610d1573ffffffffffffffffffffffffffffffffffffffff8316151561019b610f09565b610d2182600083610aed565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d5490826101b2610ca8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d8f61066382610d896107dd565b90610f1b565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610aed908490610f29565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610f03908590610f29565b50505050565b81610f1757610f178161103f565b5050565b6000610b0483836001610ca8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610f9257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ff4576040519150601f19603f3d011682016040523d82523d6000602084013e610ff9565b606091505b50915091506000821415611011573d6000803e3d6000fd5b610f03815160001480611037575081806020019051602081101561103457600080fd5b50515b6101a2610f09565b611069817f42414c000000000000000000000000000000000000000000000000000000000061106c565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220d39220e7396e2300625cb75f67eacec9db7734eb75903c550fd3c55a691fe12d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH8 0x14D1120D7B160000 PUSH1 0x6 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x12C1 CODESIZE SUB DUP1 PUSH3 0x12C1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x57726170706564205374616B6564204574686572000000000000000000000000 PUSH1 0x20 DUP3 DUP2 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD DUP1 DUP6 ADD SWAP1 SWAP5 MSTORE PUSH1 0x6 DUP5 MSTORE PUSH6 0xEEE6E88AA89 PUSH1 0xD3 SHL SWAP1 DUP5 ADD MSTORE DUP2 MLOAD SWAP2 SWAP3 SWAP2 PUSH3 0xA8 SWAP2 PUSH1 0x3 SWAP2 PUSH3 0xF8 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0xBE SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0xF8 JUMP JUMPDEST POP POP PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT PUSH1 0xFF NOT SWAP1 SWAP5 AND PUSH1 0x12 OR SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP PUSH3 0x194 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x13B JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x16B JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x16B JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x16B JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x14E JUMP JUMPDEST POP PUSH3 0x179 SWAP3 SWAP2 POP PUSH3 0x17D JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x179 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x17E JUMP JUMPDEST PUSH2 0x111D DUP1 PUSH3 0x1A4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9576A0C8 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xBB2952FC GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0xDE0E9A3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA598CB0 EQ PUSH2 0x5FB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xBB2952FC EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xC1FE3E48 EQ PUSH2 0x54B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xB0E38900 EQ PUSH2 0x4F7 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x9576A0C8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x456 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x401 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x37B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x35FAF82 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x316 JUMPI PUSH2 0x206 JUMP JUMPDEST CALLDATASIZE PUSH2 0x206 JUMPI PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA1903EAB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA1903EAB SWAP2 CALLVALUE SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 SWAP1 POP CALLER PUSH2 0x1FF CALLVALUE PUSH2 0x625 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x7DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x8BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x8D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x625 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x560 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xA9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64E PUSH1 0x0 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x668 PUSH2 0x663 DUP3 PUSH2 0x65D PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xAF2 JUMP JUMPDEST PUSH2 0xB0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x698 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 DUP5 DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x83A SWAP2 DUP7 SWAP2 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xCBE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F CALLER DUP4 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2A DUP4 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH2 0x63C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0xDE1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xA83 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0xE6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8E DUP4 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP PUSH2 0x63C CALLER DUP3 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0xADB DUP5 ISZERO DUP1 PUSH2 0xAD4 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0xAD1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0xF09 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xAE4 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB04 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBA3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBC7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBD2 DUP4 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC05 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC41 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xCE2 DUP5 ISZERO DUP1 PUSH2 0xCDB JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xCD8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0xD15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xD21 DUP3 PUSH1 0x0 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD54 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD8F PUSH2 0x663 DUP3 PUSH2 0xD89 PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xAED SWAP1 DUP5 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF03 SWAP1 DUP6 SWAP1 PUSH2 0xF29 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xF17 JUMPI PUSH2 0xF17 DUP2 PUSH2 0x103F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB04 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xF92 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xF55 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFF9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1011 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xF03 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1037 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0x1069 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x106C JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 SWAP3 KECCAK256 0xE7 CODECOPY PUSH15 0x2300625CB75F67EACEC9DB7734EB75 SWAP1 EXTCODECOPY SSTORE 0xF 0xD3 0xC5 GAS PUSH10 0x1FE12D64736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"1142:1543:99:-:0;;;1309:6;1287:28;;1322:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1322:96:99;2052:137:61;;;;;;;;;;;;1322:96:99;2052:137:61;;;;;;;;;;;;;;;;;-1:-1:-1;;;2052:137:61;;;;2118:13;;2052:137;;;2118:13;;:5;;:13;:::i;:::-;-1:-1:-1;2141:17:61;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2168:9:61;:14;;-1:-1:-1;;;;;1398:13:99;;::::1;2168:14:61::0;1398:13:99::1;-1:-1:-1::0;;;;;;;;2168:14:61;;;2180:2;2168:14;1398:13:99;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1142:1543:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1142:1543:99;;;-1:-1:-1;1142:1543:99;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106101485760003560e01c80639576a0c8116100c0578063bb2952fc11610074578063dd62ed3e11610059578063dd62ed3e14610589578063de0e9a3e146105d1578063ea598cb0146105fb57610206565b8063bb2952fc14610521578063c1fe3e481461054b57610206565b8063a457c2d7116100a5578063a457c2d71461046b578063a9059cbb146104b1578063b0e38900146104f757610206565b80639576a0c81461044157806395d89b411461045657610206565b806323b872dd11610117578063313ce567116100fc578063313ce5671461039057806339509351146103bb57806370a082311461040157610206565b806323b872dd1461032b5780632c4e722e1461037b57610206565b8063035faf821461020b57806306fdde0314610232578063095ea7b3146102bc57806318160ddd1461031657610206565b3661020657600554604080517fa1903eab000000000000000000000000000000000000000000000000000000008152306004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163a1903eab913491602480830192602092919082900301818588803b1580156101c457600080fd5b505af11580156101d8573d6000803e3d6000fd5b50505050506040513d60208110156101ef57600080fd5b506102049050336101ff34610625565b610642565b005b600080fd5b34801561021757600080fd5b506102206106fb565b60408051918252519081900360200190f35b34801561023e57600080fd5b50610247610713565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610281578181015183820152602001610269565b50505050905090810190601f1680156102ae5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102c857600080fd5b50610302600480360360408110156102df57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107c7565b604080519115158252519081900360200190f35b34801561032257600080fd5b506102206107dd565b34801561033757600080fd5b506103026004803603606081101561034e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356107e3565b34801561038757600080fd5b50610220610844565b34801561039c57600080fd5b506103a561084a565b6040805160ff9092168252519081900360200190f35b3480156103c757600080fd5b50610302600480360360408110156103de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610853565b34801561040d57600080fd5b506102206004803603602081101561042457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610896565b34801561044d57600080fd5b506102206108be565b34801561046257600080fd5b506102476108d1565b34801561047757600080fd5b506103026004803603604081101561048e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610950565b3480156104bd57600080fd5b50610302600480360360408110156104d457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610996565b34801561050357600080fd5b506102206004803603602081101561051a57600080fd5b5035610625565b34801561052d57600080fd5b506102206004803603602081101561054457600080fd5b50356109a3565b34801561055757600080fd5b506105606109ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561059557600080fd5b50610220600480360360408110156105ac57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166109db565b3480156105dd57600080fd5b50610220600480360360208110156105f457600080fd5b5035610a13565b34801561060757600080fd5b506102206004803603602081101561061e57600080fd5b5035610a56565b600061063c60065483610a9a90919063ffffffff16565b92915050565b61064e60008383610aed565b6106686106638261065d6107dd565b90610af2565b610b0b565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546106989082610af2565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600061070e670de0b6b3a76400006109a3565b905090565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b820191906000526020600020905b8154815290600101906020018083116107a057829003601f168201915b5050505050905090565b60006107d4338484610b10565b50600192915050565b60025490565b60006107f0848484610b7f565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461083a918691610835908661019e610ca8565b610b10565b5060019392505050565b60065481565b60055460ff1690565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d49185906108359086610af2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061070e670de0b6b3a7640000610625565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156107bd5780601f10610792576101008083540402835291602001916107bd565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916107d4918590610835908661019f610ca8565b60006107d4338484610b7f565b600061063c60065483610cbe90919063ffffffff16565b600554610100900473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610a1f3383610cf1565b6000610a2a836109a3565b60055490915061063c90610100900473ffffffffffffffffffffffffffffffffffffffff163383610de1565b600554600090610a8390610100900473ffffffffffffffffffffffffffffffffffffffff16333085610e6e565b6000610a8e83610625565b905061063c3382610642565b6000610aa98215156004610f09565b670de0b6b3a76400008302610adb841580610ad45750670de0b6b3a7640000858381610ad157fe5b04145b6005610f09565b828181610ae457fe5b04949350505050565b505050565b6000828201610b048482101583610f09565b9392505050565b600255565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b610ba373ffffffffffffffffffffffffffffffffffffffff84161515610198610f09565b610bc773ffffffffffffffffffffffffffffffffffffffff83161515610199610f09565b610bd2838383610aed565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054610c0590826101a0610ca8565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082209390935590841681522054610c419082610af2565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000610cb78484111583610f09565b5050900390565b6000828202610ce2841580610cdb575083858381610cd857fe5b04145b6003610f09565b670de0b6b3a764000081610ae4565b610d1573ffffffffffffffffffffffffffffffffffffffff8316151561019b610f09565b610d2182600083610aed565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610d5490826101b2610ca8565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902055610d8f61066382610d896107dd565b90610f1b565b60408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610aed908490610f29565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610f03908590610f29565b50505050565b81610f1757610f178161103f565b5050565b6000610b0483836001610ca8565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310610f9257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610f55565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ff4576040519150601f19603f3d011682016040523d82523d6000602084013e610ff9565b606091505b50915091506000821415611011573d6000803e3d6000fd5b610f03815160001480611037575081806020019051602081101561103457600080fd5b50515b6101a2610f09565b611069817f42414c000000000000000000000000000000000000000000000000000000000061106c565b50565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fdfea2646970667358221220d39220e7396e2300625cb75f67eacec9db7734eb75903c550fd3c55a691fe12d64736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x148 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9576A0C8 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xBB2952FC GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x589 JUMPI DUP1 PUSH4 0xDE0E9A3E EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xEA598CB0 EQ PUSH2 0x5FB JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xBB2952FC EQ PUSH2 0x521 JUMPI DUP1 PUSH4 0xC1FE3E48 EQ PUSH2 0x54B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0xA457C2D7 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x46B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x4B1 JUMPI DUP1 PUSH4 0xB0E38900 EQ PUSH2 0x4F7 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x9576A0C8 EQ PUSH2 0x441 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x456 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x313CE567 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x390 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x3BB JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x401 JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x2C4E722E EQ PUSH2 0x37B JUMPI PUSH2 0x206 JUMP JUMPDEST DUP1 PUSH4 0x35FAF82 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x316 JUMPI PUSH2 0x206 JUMP JUMPDEST CALLDATASIZE PUSH2 0x206 JUMPI PUSH1 0x5 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xA1903EAB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH2 0x100 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH4 0xA1903EAB SWAP2 CALLVALUE SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x204 SWAP1 POP CALLER PUSH2 0x1FF CALLVALUE PUSH2 0x625 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x6FB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x269 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2AE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x7DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x844 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3A5 PUSH2 0x84A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x853 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x424 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH2 0x8BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x247 PUSH2 0x8D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x48E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x950 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x996 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x503 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x625 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x560 PUSH2 0x9BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x595 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x9DB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA13 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x220 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x61E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xA56 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xA9A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x64E PUSH1 0x0 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x668 PUSH2 0x663 DUP3 PUSH2 0x65D PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xAF2 JUMP JUMPDEST PUSH2 0xB0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x698 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x9A3 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x7A0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7F0 DUP5 DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x83A SWAP2 DUP7 SWAP2 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19E PUSH2 0xCA8 JUMP JUMPDEST PUSH2 0xB10 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x70E PUSH8 0xDE0B6B3A7640000 PUSH2 0x625 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x7BD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x792 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x7BD JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x7D4 SWAP2 DUP6 SWAP1 PUSH2 0x835 SWAP1 DUP7 PUSH2 0x19F PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D4 CALLER DUP5 DUP5 PUSH2 0xB7F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x63C PUSH1 0x6 SLOAD DUP4 PUSH2 0xCBE SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA1F CALLER DUP4 PUSH2 0xCF1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA2A DUP4 PUSH2 0x9A3 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH2 0x63C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP4 PUSH2 0xDE1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x0 SWAP1 PUSH2 0xA83 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER ADDRESS DUP6 PUSH2 0xE6E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA8E DUP4 PUSH2 0x625 JUMP JUMPDEST SWAP1 POP PUSH2 0x63C CALLER DUP3 PUSH2 0x642 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAA9 DUP3 ISZERO ISZERO PUSH1 0x4 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP4 MUL PUSH2 0xADB DUP5 ISZERO DUP1 PUSH2 0xAD4 JUMPI POP PUSH8 0xDE0B6B3A7640000 DUP6 DUP4 DUP2 PUSH2 0xAD1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x5 PUSH2 0xF09 JUMP JUMPDEST DUP3 DUP2 DUP2 PUSH2 0xAE4 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD PUSH2 0xB04 DUP5 DUP3 LT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xBA3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO PUSH2 0x198 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBC7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x199 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xBD2 DUP4 DUP4 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xC05 SWAP1 DUP3 PUSH2 0x1A0 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xC41 SWAP1 DUP3 PUSH2 0xAF2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 DUP5 DUP5 GT ISZERO DUP4 PUSH2 0xF09 JUMP JUMPDEST POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MUL PUSH2 0xCE2 DUP5 ISZERO DUP1 PUSH2 0xCDB JUMPI POP DUP4 DUP6 DUP4 DUP2 PUSH2 0xCD8 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH1 0x3 PUSH2 0xF09 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 DUP2 PUSH2 0xAE4 JUMP JUMPDEST PUSH2 0xD15 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO PUSH2 0x19B PUSH2 0xF09 JUMP JUMPDEST PUSH2 0xD21 DUP3 PUSH1 0x0 DUP4 PUSH2 0xAED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xD54 SWAP1 DUP3 PUSH2 0x1B2 PUSH2 0xCA8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0xD8F PUSH2 0x663 DUP3 PUSH2 0xD89 PUSH2 0x7DD JUMP JUMPDEST SWAP1 PUSH2 0xF1B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xAED SWAP1 DUP5 SWAP1 PUSH2 0xF29 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE PUSH2 0xF03 SWAP1 DUP6 SWAP1 PUSH2 0xF29 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 PUSH2 0xF17 JUMPI PUSH2 0xF17 DUP2 PUSH2 0x103F JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB04 DUP4 DUP4 PUSH1 0x1 PUSH2 0xCA8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xF92 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xF55 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xFF4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xFF9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 DUP3 EQ ISZERO PUSH2 0x1011 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0xF03 DUP2 MLOAD PUSH1 0x0 EQ DUP1 PUSH2 0x1037 JUMPI POP DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1034 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x1A2 PUSH2 0xF09 JUMP JUMPDEST PUSH2 0x1069 DUP2 PUSH32 0x42414C0000000000000000000000000000000000000000000000000000000000 PUSH2 0x106C JUMP JUMPDEST POP JUMP JUMPDEST PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 MSTORE PUSH1 0x7 PUSH1 0x24 MSTORE PUSH1 0xA DUP1 DUP5 DIV DUP2 DUP2 MOD PUSH1 0x30 SWAP1 DUP2 ADD PUSH1 0x8 SHL SWAP6 DUP4 SWAP1 MOD SWAP6 SWAP1 SWAP6 ADD SWAP1 DUP3 SWAP1 DIV SWAP2 DUP3 MOD DUP6 ADD PUSH1 0x10 SHL ADD PUSH1 0x23 PUSH4 0xFFFFFF00 PUSH1 0xE0 DUP7 SWAP1 SHR AND ADD PUSH1 0x18 SHL ADD SWAP1 SWAP4 ADD PUSH1 0xC8 SHL PUSH1 0x44 MSTORE PUSH1 0xE8 DUP3 SWAP1 SHR SWAP1 PUSH1 0x64 SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 SWAP3 KECCAK256 0xE7 CODECOPY PUSH15 0x2300625CB75F67EACEC9DB7734EB75 SWAP1 EXTCODECOPY SSTORE 0xF 0xD3 0xC5 GAS PUSH10 0x1FE12D64736F6C634300 SMOD ADD STOP CALLER ","sourceMap":"1142:1543:99:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2042:5;;:47;;;;;;2083:4;2042:47;;;;;;:5;;;;;;;:12;;2063:9;;2042:47;;;;;;;;;;;;;;2063:9;2042:5;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2099:46:99;;-1:-1:-1;2105:10:99;2117:27;2134:9;2117:16;:27::i;:::-;2099:5;:46::i;:::-;1142:1543;;;;;2446:115;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2254:81:61;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4857:164;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4857:164:61;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3500:106;;;;;;;;;;;;;:::i;5488:386::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5488:386:61;;;;;;;;;;;;;;;;;;:::i;1287:28:99:-;;;;;;;;;;;;;:::i;3156:81:61:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6269:211;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6269:211:61;;;;;;;;;:::i;4022:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4022:117:61;;;;:::i;2567:116:99:-;;;;;;;;;;;;;:::i;2448:85:61:-;;;;;;;;;;;;;:::i;6967:312::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6967:312:61;;;;;;;;;:::i;4342:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4342:170:61;;;;;;;;;:::i;2158:137:99:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2158:137:99;;:::i;2301:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2301:139:99;;:::i;1253:28::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4570:149:61;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4570:149:61;;;;;;;;;;;:::i;1723:276:99:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1723:276:99;;:::i;1424:293::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1424:293:99;;:::i;2158:137::-;2236:7;2262:26;2283:4;;2262:12;:20;;:26;;;;:::i;:::-;2255:33;2158:137;-1:-1:-1;;2158:137:99:o;8583:297:61:-;8658:49;8687:1;8691:7;8700:6;8658:20;:49::i;:::-;8718:42;8734:25;8752:6;8734:13;:11;:13::i;:::-;:17;;:25::i;:::-;8718:15;:42::i;:::-;8791:18;;;:9;:18;;;;;;;;;;;:30;;8814:6;8791:22;:30::i;:::-;8770:18;;;:9;:18;;;;;;;;;;;:51;;;;8836:37;;;;;;;8770:18;;:9;;8836:37;;;;;;;;;;8583:297;;:::o;2446:115:99:-;2503:7;2529:25;2546:7;2529:16;:25::i;:::-;2522:32;;2446:115;:::o;2254:81:61:-;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2291:13;;2316:12;;2323:5;;2316:12;;2323:5;2316:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2254:81;:::o;4857:164::-;4940:4;4956:37;4965:10;4977:7;4986:6;4956:8;:37::i;:::-;-1:-1:-1;5010:4:61;4857:164;;;;:::o;3500:106::-;3587:12;;3500:106;:::o;5488:386::-;5624:4;5640:36;5650:6;5658:9;5669:6;5640:9;:36::i;:::-;5752:19;;;;;;;:11;:19;;;;;;;;5728:10;5752:31;;;;;;;;;5686:160;;5708:6;;5752:84;;5788:6;11033:3:19;5752:35:61;:84::i;:::-;5686:8;:160::i;:::-;-1:-1:-1;5863:4:61;5488:386;;;;;:::o;1287:28:99:-;;;;:::o;3156:81:61:-;3221:9;;;;3156:81;:::o;6269:211::-;6382:10;6357:4;6403:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;6357:4;;6373:79;;6394:7;;6403:48;;6440:10;6403:36;:48::i;4022:117::-;4114:18;;4088:7;4114:18;;;;;;;;;;;;4022:117::o;2567:116:99:-;2625:7;2651:25;2668:7;2651:16;:25::i;2448:85:61:-;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2487:13;;2512:14;;2519:7;;2512:14;;2519:7;2512:14;;;;;;;;;;;;;;;;;;;;;;;;6967:312;7098:10;7060:4;7143:23;;;:11;:23;;;;;;;;;:32;;;;;;;;;;7060:4;;7076:175;;7122:7;;7143:98;;7180:15;11107:3:19;7143:36:61;:98::i;4342:170::-;4428:4;4444:40;4454:10;4466:9;4477:6;4444:9;:40::i;2301:139:99:-;2380:7;2406:27;2428:4;;2406:13;:21;;:27;;;;:::i;1253:28::-;;;;;;;;;:::o;4570:149:61:-;4685:18;;;;4659:7;4685:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4570:149::o;1723:276:99:-;1789:7;1808:32;1814:10;1826:13;1808:5;:32::i;:::-;1850:19;1872:31;1889:13;1872:16;:31::i;:::-;1920:5;;1850:53;;-1:-1:-1;1913:51:99;;1920:5;;;;;1940:10;1850:53;1913:26;:51::i;1424:293::-;1513:5;;1487:7;;1506:71;;1513:5;;;;;1537:10;1557:4;1564:12;1506:30;:71::i;:::-;1587:20;1610:30;1627:12;1610:16;:30::i;:::-;1587:53;;1650:31;1656:10;1668:12;1650:5;:31::i;2768:282:56:-;2830:7;2849:38;2858:6;;;5340:1:19;2849:8:56;:38::i;:::-;988:4;2918:7;;2935:61;2944:6;;;:30;;;988:4;2966:1;2954:9;:13;;;;;;:20;2944:30;5388:1:19;2935:8:56;:61::i;:::-;3042:1;3030:9;:13;;;;;;;2768:282;-1:-1:-1;;;;2768:282:56:o;11245:183:61:-;;;;:::o;966:167:68:-;1024:7;1055:5;;;1070:37;1079:6;;;;1024:7;1070:8;:37::i;:::-;1125:1;966:167;-1:-1:-1;;;966:167:68:o;3870:94:61:-;3937:12;:20;3870:94::o;10034:213::-;10157:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10208:32;;;;;;;;;;;;;;;;;10034:213;;;:::o;7753:559::-;7880:71;7889:20;;;;;10629:3:19;7880:8:61;:71::i;:::-;7961:72;7970:23;;;;;10697:3:19;7961:8:61;:72::i;:::-;8044:47;8065:6;8073:9;8084:6;8044:20;:47::i;:::-;8122:17;;;:9;:17;;;;;;;;;;;:68;;8144:6;11175:3:19;8122:21:61;:68::i;:::-;8102:17;;;;:9;:17;;;;;;;;;;;:88;;;;8223:20;;;;;;;:32;;8248:6;8223:24;:32::i;:::-;8200:20;;;;:9;:20;;;;;;;;;;;;:55;;;;8270:35;;;;;;;8200:20;;8270:35;;;;;;;;;;;;;7753:559;;;:::o;1816:206:68:-;1923:7;1942:27;1956:1;1951;:6;;1959:9;1942:8;:27::i;:::-;-1:-1:-1;;1991:5:68;;;1816:206::o;1833:209:56:-;1895:7;1932:5;;;1947:57;1956:6;;;:26;;;1981:1;1976;1966:7;:11;;;;;;:16;1956:26;5291:1:19;1947:8:56;:57::i;:::-;988:4;2022:7;:13;;9200:411:61;9275:68;9284:21;;;;;10827:3:19;9275:8:61;:68::i;:::-;9354:49;9375:7;9392:1;9396:6;9354:20;:49::i;:::-;9435:18;;;:9;:18;;;;;;;;;;;:65;;9458:6;12271:3:19;9435:22:61;:65::i;:::-;9414:18;;;:9;:18;;;;;;;;;;:86;9510:42;9526:25;9544:6;9526:13;:11;:13::i;:::-;:17;;:25::i;9510:42::-;9567:37;;;;;;;;9593:1;;9567:37;;;;;;;;;;;;;9200:411;;:::o;1514:214:67:-;1662:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1685:23;1662:58;;;1626:95;;1654:5;;1626:19;:95::i;1734:250::-;1908:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:27;1908:68;;;1872:105;;1900:5;;1872:19;:105::i;:::-;1734:250;;;;:::o;926:101:19:-;995:9;990:34;;1006:18;1014:9;1006:7;:18::i;:::-;926:101;;:::o;1404:121:68:-;1462:7;1488:30;1492:1;1495;5194::19;1488:3:68;:30::i;2324:914:67:-;2626:12;2640:23;2667:5;:10;;2678:4;2667:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2625:58;;;;2877:1;2868:7;2865:14;2862:2;;;2919:16;2916:1;2913;2898:38;2963:16;2960:1;2953:27;2862:2;3134:97;3143:10;:17;3164:1;3143:22;:56;;;;3180:10;3169:30;;;;;;;;;;;;;;;-1:-1:-1;3169:30:67;3143:56;11301:3:19;3134:8:67;:97::i;1459:126:19:-;1506:28;1514:9;1506:28;:7;:28::i;:::-;1459:126;:::o;1692:3378::-;4417:66;1754:18;4405:79;;;4623:66;4617:4;4610:80;4765:1;4759:4;4752:15;2893:2;2926:18;;;2971;;;2898:4;2967:29;;;3769:1;3860:14;2878:18;;;;3849:26;;;;3019:18;;;;3066;;;3062:29;;3881:2;3877:17;3845:50;3759:4;3765:18;;;;;;3755:29;3751:2;3747:38;3824:72;;;;3819:3;3815:82;4832:4;4825:26;1783:14;;;;;5058:3;;5048:14"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","getStETHByWstETH(uint256)":"bb2952fc","getWstETHByStETH(uint256)":"b0e38900","increaseAllowance(address,uint256)":"39509351","name()":"06fdde03","rate()":"2c4e722e","stETH()":"c1fe3e48","stEthPerToken()":"035faf82","symbol()":"95d89b41","tokensPerStEth()":"9576a0c8","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","unwrap(uint256)":"de0e9a3e","wrap(uint256)":"ea598cb0"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"getStETHByWstETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"getWstETHByStETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stETH\",\"outputs\":[{\"internalType\":\"contract IstETH\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stEthPerToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokensPerStEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_wstETHAmount\",\"type\":\"uint256\"}],\"name\":\"unwrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_stETHAmount\",\"type\":\"uint256\"}],\"name\":\"wrap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getStETHByWstETH(uint256)\":{\"params\":{\"_wstETHAmount\":\"amount of wstETH\"},\"returns\":{\"_0\":\"Amount of stETH for a given wstETH amount\"}},\"getWstETHByStETH(uint256)\":{\"params\":{\"_stETHAmount\":\"amount of stETH\"},\"returns\":{\"_0\":\"Amount of wstETH for a given stETH amount\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"stEthPerToken()\":{\"returns\":{\"_0\":\"Amount of stETH for 1 wstETH\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"tokensPerStEth()\":{\"returns\":{\"_0\":\"Amount of wstETH for a 1 stETH\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}. The total supply should only be read using this function Can be overridden by derived contracts to store the total supply in a different way (e.g. packed with other storage values).\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"unwrap(uint256)\":{\"details\":\"Requirements: - `_wstETHAmount` must be non-zero - msg.sender must have at least `_wstETHAmount` wstETH.\",\"params\":{\"_wstETHAmount\":\"amount of wstETH to uwrap in exchange for stETH\"},\"returns\":{\"_0\":\"Amount of stETH user receives after unwrap\"}},\"wrap(uint256)\":{\"details\":\"Requirements: - `_stETHAmount` must be non-zero - msg.sender must approve at least `_stETHAmount` stETH to this contract. - msg.sender must have at least `_stETHAmount` of stETH. User should first approve _stETHAmount to the WstETH contract\",\"params\":{\"_stETHAmount\":\"amount of stETH to wrap in exchange for wstETH\"},\"returns\":{\"_0\":\"Amount of wstETH user receives after wrap\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getStETHByWstETH(uint256)\":{\"notice\":\"Get amount of stETH for a given amount of wstETH\"},\"getWstETHByStETH(uint256)\":{\"notice\":\"Get amount of wstETH for a given amount of stETH\"},\"stEthPerToken()\":{\"notice\":\"Get amount of wstETH for a one stETH\"},\"tokensPerStEth()\":{\"notice\":\"Get amount of stETH for a one wstETH\"},\"unwrap(uint256)\":{\"notice\":\"Exchanges wstETH to stETH\"},\"wrap(uint256)\":{\"notice\":\"Exchanges stETH to wstETH\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/MockWstETH.sol\":\"MockWstETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x6cb22c6fc3bc6c72b01207d4619347ef4b4364d0f690cd44f8842389adbe3057\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7fd647e0bb89fa20bcbc611b41bacf18f5cac947adf3762c36d1125114d499b8\",\"dweb:/ipfs/QmWEt6qE6KHJmp9rKKqGq6cTJPxhjCDQfJx8H3BpMBc68G\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IstETH.sol\":{\"keccak256\":\"0x3cbbcb67b2e48a6b8d5584d4b0b519649c24698ddb7fc1e64dc9e0dae89ca87d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://98337763bb94e843bea3fe45c40d7ce4e58ccd0e6e947de1331c16282c2aecaf\",\"dweb:/ipfs/QmXHVeCCLqg1wQoY5d4m8oLSKPYepVkt9c7QtDHhhypt4T\"]},\"@balancer-labs/v2-interfaces/contracts/standalone-utils/IwstETH.sol\":{\"keccak256\":\"0x3773de2cf826ca0a582750ae8a3e3086e00d8dc5a190eac4226baaceb133072b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://d14704b71ab0d139c56d437507ebac6094715e99a0463309679783713115e922\",\"dweb:/ipfs/QmXKNH49aUhrvAbHLTC5e4bgTzT6fVSu5QnNgjcxnDeB6H\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x596f4c9f0ac07a447dca74c20bffb5827dc2dc200b99181fc64d7ff6c89070a6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://7b625c6bfe363603bb9facfbe0e1198d5e7c369f713fdd1e729072ccdda0a5af\",\"dweb:/ipfs/QmcGpAUfw2EvJP4TEX6TUkXvfJynQaP4ntiL64cM5KrnbN\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x1ef044eb991d5278b9edfe159e3cd4824733d5ed8e6a9de3f4f57d6bf65be94d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://168d31e5d2a92c9eeb0b50be5fb859d17746ad4ce0ee97552befce65dc6d726a\",\"dweb:/ipfs/QmQLyFUS1PTkkKUKKXU5Z7BoMPoQGdcvgpMUtJ6LaWMjrW\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4c243366b8586a81a439c52e400fd74ef22ee55dc6569ee49beefc0651417163\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7ef6fc6451c8f9010777eb0e46ed7800212220e50d36286caf56b9a9fcdb4229\",\"dweb:/ipfs/QmR2HnofdMgVS9qW8AzPGNEQTBk8UJxPrLheTUmXX5GfSH\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeERC20.sol\":{\"keccak256\":\"0x69d31837c1aefe83a3502a96c911bf9ec1680bfb3400f1197bd0481509ddabcf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a77f611b44151bd12b432fc69ed7c0b33c413f87fd7a91f29e27ef9910cdf1cc\",\"dweb:/ipfs/QmcwJDRhVuBZnqa6681E9HrQiD9Am3gPih84R4hCXUv1E2\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0x59848b5045422c5cf58841baea490766b848f84ec1bb5066e2ae9365e2a6d750\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6bc10face470969cd65169aa12404814b4f76ad0e199e8ffedbf64af135e86e2\",\"dweb:/ipfs/QmSzcRHgfGuBUD2TPLat3JJejCWgSWKJP54ZCvzLWZPCiz\"]},\"contracts/test/MockWstETH.sol\":{\"keccak256\":\"0x5a4bbfe0710bd5c8fc05add15ef148efab460d3ccd32315978542e57d54b1d2c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://18cddf6d434c5926c13f2e8a259b23d8c721d340499b72a6dffc500d788ac8f5\",\"dweb:/ipfs/QmSjUEUZVaT2XEGhcbFjZYLS14ByqkCK7RGjz7Xi3LfL6d\"]}},\"version\":1}"}},"contracts/test/TestWETH.sol":{"TestWETH":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"guy","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"destinatary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6109eb8061011c6000396000f3fe6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb1461032a578063d0e30db014610370578063dd62ed3e14610378576100da565b806340c10f191461028f57806370a08231146102d557806395d89b4114610315576100da565b806323b872dd116100a557806323b872dd146101ea5780632e1a7d4d1461023a578063313ce56714610264576100da565b806306fdde03146100df578063095ea7b31461016957806318160ddd146101c3576100da565b366100da576100d86103c0565b005b600080fd5b3480156100eb57600080fd5b506100f461040f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b506101af6004803603604081101561018c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104bb565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506101d861052e565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101af6004803603606081101561020d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610532565b34801561024657600080fd5b506100d86004803603602081101561025d57600080fd5b5035610796565b34801561027057600080fd5b5061027961088d565b6040805160ff9092168252519081900360200190f35b34801561029b57600080fd5b506100d8600480360360408110156102b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b3480156102e157600080fd5b506101d8600480360360208110156102f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108fa565b34801561032157600080fd5b506100f461090c565b34801561033657600080fd5b506101af6004803603604081101561034d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610984565b6100d86103c0565b34801561038457600080fd5b506101d86004803603604081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610998565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b820191906000526020600020905b81548152906001019060200180831161049657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156105c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061063c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156107185773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561081457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610853573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604091829020805485019055815184815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25050565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b6000610991338484610532565b9392505050565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220fb9cf9133c644c55785c38f9b32f5d1dd1f97620cf5265707fc7f0665ef3791164736f6c63430007010033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x2BB930B83832B21022BA3432B9 PUSH1 0x99 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5A SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xBB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCD JUMP JUMPDEST POP PUSH2 0xF4 SWAP3 SWAP2 POP PUSH2 0xF8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x9EB DUP1 PUSH2 0x11C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x378 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x315 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x264 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C3 JUMPI PUSH2 0xDA JUMP JUMPDEST CALLDATASIZE PUSH2 0xDA JUMPI PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x984 JUMP JUMPDEST PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x998 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x496 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x63C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414C4C4F57414E434500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x991 CALLER DUP5 DUP5 PUSH2 0x532 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB SWAP13 0xF9 SGT EXTCODECOPY PUSH5 0x4C55785C38 0xF9 0xB3 0x2F 0x5D SAR 0xD1 0xF9 PUSH23 0x20CF5265707FC7F0665EF3791164736F6C634300070100 CALLER ","sourceMap":"869:36:100:-:0;836:2078;869:36;;836:2078;869:36;;;-1:-1:-1;;;869:36:100;;;;;;-1:-1:-1;;869:36:100;;:::i;:::-;-1:-1:-1;911:29:100;;;;;;;;;;;;;-1:-1:-1;;;911:29:100;;;;;;;;;;;;:::i;:::-;-1:-1:-1;946:26:100;;;-1:-1:-1;;946:26:100;970:2;946:26;;;836:2078;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;836:2078:100;;;-1:-1:-1;836:2078:100;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100cb5760003560e01c806340c10f1911610074578063a9059cbb1161004e578063a9059cbb1461032a578063d0e30db014610370578063dd62ed3e14610378576100da565b806340c10f191461028f57806370a08231146102d557806395d89b4114610315576100da565b806323b872dd116100a557806323b872dd146101ea5780632e1a7d4d1461023a578063313ce56714610264576100da565b806306fdde03146100df578063095ea7b31461016957806318160ddd146101c3576100da565b366100da576100d86103c0565b005b600080fd5b3480156100eb57600080fd5b506100f461040f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012e578181015183820152602001610116565b50505050905090810190601f16801561015b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561017557600080fd5b506101af6004803603604081101561018c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104bb565b604080519115158252519081900360200190f35b3480156101cf57600080fd5b506101d861052e565b60408051918252519081900360200190f35b3480156101f657600080fd5b506101af6004803603606081101561020d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610532565b34801561024657600080fd5b506100d86004803603602081101561025d57600080fd5b5035610796565b34801561027057600080fd5b5061027961088d565b6040805160ff9092168252519081900360200190f35b34801561029b57600080fd5b506100d8600480360360408110156102b257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610896565b3480156102e157600080fd5b506101d8600480360360208110156102f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108fa565b34801561032157600080fd5b506100f461090c565b34801561033657600080fd5b506101af6004803603604081101561034d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610984565b6100d86103c0565b34801561038457600080fd5b506101d86004803603604081101561039b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610998565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b820191906000526020600020905b81548152906001019060200180831161049657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156105c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8416331480159061063c575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b156107185773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156106e057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414c4c4f57414e434500000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b3360009081526003602052604090205481111561081457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e53554646494349454e545f42414c414e4345000000000000000000000000604482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610853573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604091829020805485019055815184815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25050565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104b35780601f10610488576101008083540402835291602001916104b3565b6000610991338484610532565b9392505050565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220fb9cf9133c644c55785c38f9b32f5d1dd1f97620cf5265707fc7f0665ef3791164736f6c63430007010033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x40C10F19 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x378 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x40C10F19 EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x2D5 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x315 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x23A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x264 JUMPI PUSH2 0xDA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1C3 JUMPI PUSH2 0xDA JUMP JUMPDEST CALLDATASIZE PUSH2 0xDA JUMPI PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x40F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x175 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH2 0x52E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x532 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x796 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH2 0x88D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x896 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF4 PUSH2 0x90C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x984 JUMP JUMPDEST PUSH2 0xD8 PUSH2 0x3C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x998 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x496 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x63C JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x718 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414C4C4F57414E434500000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x814 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F42414C414E4345000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE DUP2 MLOAD DUP5 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4B3 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x488 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x991 CALLER DUP5 DUP5 PUSH2 0x532 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFB SWAP13 0xF9 SGT EXTCODECOPY PUSH5 0x4C55785C38 0xF9 0xB3 0x2F 0x5D SAR 0xD1 0xF9 PUSH23 0x20CF5265707FC7F0665EF3791164736F6C634300070100 CALLER ","sourceMap":"836:2078:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:9;:7;:9::i;:::-;836:2078;;;;;869:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2043:189;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2043:189:100;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1930:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2377:535;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2377:535:100;;;;;;;;;;;;;;;;;;:::i;1432:239::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1432:239:100;;:::i;946:26::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1772:152;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1772:152:100;;;;;;;;;:::i;1089:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1089:53:100;;;;:::i;911:29::-;;;;;;;;;;;;;:::i;2238:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2238:133:100;;;;;;;;;:::i;1287:139::-;;;:::i;1148:73::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1148:73:100;;;;;;;;;;;:::i;1287:139::-;1350:10;1340:21;;;;:9;:21;;;;;;;;;:34;;1365:9;1340:34;;;;;;1389:30;;;;;;;;;;;;;;;;;1287:139::o;869:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2043:189::-;2137:10;2111:4;2127:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;2174:30;;;;;;;2111:4;;2127:26;;2137:10;;2174:30;;;;;;;;-1:-1:-1;2221:4:100;2043:189;;;;:::o;1930:107::-;2009:21;1930:107;:::o;2377:535::-;2517:14;;;2493:4;2517:14;;;:9;:14;;;;;;:21;-1:-1:-1;2517:21:100;2509:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2578:17;;;2585:10;2578:17;;;;:62;;-1:-1:-1;2599:14:100;;;;;;;:9;:14;;;;;;;;2614:10;2599:26;;;;;;;;2637:2;2599:41;;2578:62;2574:208;;;2664:14;;;;;;;:9;:14;;;;;;;;2679:10;2664:26;;;;;;;;:33;-1:-1:-1;2664:33:100;2656:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:14;;;;;;;:9;:14;;;;;;;;2753:10;2738:26;;;;;;;:33;;;;;;;2574:208;2792:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;2823:14;;;;;;;;;;:21;;;;;;2860:23;;;;;;;2823:14;;2860:23;;;;;;;;;;;-1:-1:-1;2901:4:100;2377:535;;;;;:::o;1432:239::-;1507:10;1497:21;;;;:9;:21;;;;;;:28;-1:-1:-1;1497:28:100;1489:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:10;1560:21;;;;:9;:21;;;;;;:28;;;;;;;1598:24;;;;;;1585:3;;1598:24;;1560:21;1598:24;1585:3;1570:10;1598:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1637:27:100;;;;;;;;1648:10;;1637:27;;;;;;;;;;1432:239;:::o;946:26::-;;;;;;:::o;1772:152::-;1842:22;;;;;;;:9;:22;;;;;;;;;:32;;;;;;1889:28;;;;;;;;;;;;;;;;;1772:152;;:::o;1089:53::-;;;;;;;;;;;;;:::o;911:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2238:133;2307:4;2330:34;2343:10;2355:3;2360;2330:12;:34::i;:::-;2323:41;2238:133;-1:-1:-1;;;2238:133:100:o;1148:73::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","deposit()":"d0e30db0","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinatary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"}},\"stateVariables\":{\"allowance\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"balanceOf\":{\"details\":\"Returns the amount of tokens owned by `account`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TestWETH.sol\":\"TestWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":9999},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-interfaces/contracts/solidity-utils/misc/IWETH.sol\":{\"keccak256\":\"0x41c26d92fde92c927352c447ff80e3b2216d076662f2b222b735e4c865a481dc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://291a4b4f141ea187a61c3bb1ab16b370012e7e80ddc045671015ab2bfaf3c52c\",\"dweb:/ipfs/QmXvvVdfZC3pAqLst3bW9Fbj8mS9y1t1k7Zqr9BXuKdUHP\"]},\"@balancer-labs/v2-interfaces/contracts/solidity-utils/openzeppelin/IERC20.sol\":{\"keccak256\":\"0x3c415102b8b53a3efe0209b7fa4fd052a48b35a1df99e1b37572597d25030249\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8aac0d9f5ff03e0edeb07e1c400b78edea5948acff7e113ba52fd32f86cad72d\",\"dweb:/ipfs/Qmbh6C53fCjvjoHEVZHNadpRq5KZJzfHpDeR3qYfPgKvZt\"]},\"contracts/test/TestWETH.sol\":{\"keccak256\":\"0xd1fb738e861ca79bf0d37db866ca57c20f545ea233f424b38166f922c567a5f3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://49543f3a71b64d14874a9f591b8fb339eef34134d53baa397032ba8c81d72ef7\",\"dweb:/ipfs/QmRz9G3xF7sp8NyFm4yHcUbrdwUXvoZF8UTdkVy8YEpNsX\"]}},\"version\":1}"}}}}} \ No newline at end of file diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/bytecode/PoolRecoveryHelper.json b/pkg/deployments/tasks/20221123-pool-recovery-helper/bytecode/PoolRecoveryHelper.json new file mode 100644 index 0000000000..ab166b7be3 --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/bytecode/PoolRecoveryHelper.json @@ -0,0 +1,3 @@ +{ + "creationCode": "60c06040523480156200001157600080fd5b506040516200112e3803806200112e833981016040819052620000349162000157565b306080526001600160601b0319606083901b1660a05260005b8151811015620000b757620000868282815181106200006857fe5b60200260200101516000620000c060201b620006981790919060201c565b620000ae5760405162461bcd60e51b8152600401620000a59062000225565b60405180910390fd5b6001016200004d565b5050506200029c565b6000620000ce838362000129565b6200011f57508154600180820184556000848152602080822090930180546001600160a01b0319166001600160a01b0386169081179091558554908252828601909352604090209190915562000123565b5060005b92915050565b6001600160a01b031660009081526001919091016020526040902054151590565b8051620001238162000283565b600080604083850312156200016a578182fd5b8251620001778162000283565b602084810151919350906001600160401b038082111562000196578384fd5b818601915086601f830112620001aa578384fd5b815181811115620001b9578485fd5b8381029150620001cb8483016200025c565b8181528481019084860184860187018b1015620001e6578788fd5b8795505b838610156200021457620001ff8b826200014a565b835260019590950194918601918601620001ea565b508096505050505050509250929050565b60208082526019908201527f4475706c696361746520696e697469616c20666163746f727900000000000000604082015260600190565b6040518181016001600160401b03811182821017156200027b57600080fd5b604052919050565b6001600160a01b03811681146200029957600080fd5b50565b60805160a05160601c610e6b620002c3600039806102fe5250806102ae5250610e6b6000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063a587bbe111610076578063d10474341161005b578063d104743414610136578063dc3f574e1461013e578063dc867b7914610151576100a3565b8063a587bbe11461011b578063aaabadc51461012e576100a3565b806326e54479146100a85780633a987dfa146100bd578063851c1bb3146100e65780638d928af814610106575b600080fd5b6100bb6100b6366004610ae6565b610164565b005b6100d06100cb366004610ae6565b6101b9565b6040516100dd9190610caa565b60405180910390f35b6100f96100f4366004610bcd565b6102aa565b6040516100dd9190610cb5565b61010e6102fc565b6040516100dd9190610c89565b61010e610129366004610c29565b610320565b61010e610332565b6100f96103be565b6100bb61014c366004610ae6565b6103ca565b6100bb61015f366004610ae6565b61064f565b61016c610721565b610177600082610767565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d21565b60405180910390fd5b50565b6000806101c66000610915565b905060005b8181101561029e5760006101df8183610919565b6040517f6634b75300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690636634b75390610234908890600401610c89565b60206040518083038186803b15801561024c57600080fd5b505afa158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190610bad565b1561029557600193505050506102a5565b506001016101cb565b5060009150505b919050565b60007f0000000000000000000000000000000000000000000000000000000000000000826040516020016102df929190610c59565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b600061032c8183610953565b92915050565b600061033c6102fc565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190610c0d565b905090565b60006103b96000610915565b6103d3816101b9565b610409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610cea565b60608173ffffffffffffffffffffffffffffffffffffffff1663238a2d596040518163ffffffff1660e01b815260040160006040518083038186803b15801561045157600080fd5b505afa158015610465573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526104ab9190810190610b02565b905060005b815181101561061c57600073ffffffffffffffffffffffffffffffffffffffff168282815181106104dd57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16146106145781818151811061050c57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663679aefce6040518163ffffffff1660e01b815260040160206040518083038186803b15801561055957600080fd5b505afa9250505080156105a7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526105a491810190610c41565b60015b610612578273ffffffffffffffffffffffffffffffffffffffff166354a844ba6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105f357600080fd5b505af1158015610607573d6000803e3d6000fd5b5050505050506101b6565b505b6001016104b0565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d8f565b610657610721565b610662600082610698565b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90610d58565b60006106a48383610976565b61071857508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86169081179091558554908252828601909352604090209190915561032c565b50600092915050565b60006107506000357fffffffff00000000000000000000000000000000000000000000000000000000166102aa565b90506101b661075f82336109a4565b610191610a3a565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600183016020526040812054801561090b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191018082146108705760008660000182815481106107d557fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff9091169150819088908590811061080b57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061087b57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061032c92505050565b600091505061032c565b5490565b600082600001828154811061092a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b81546000906109659083106064610a3a565b61096f8383610919565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b60006109ae610332565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b81526004016109ea93929190610cbe565b60206040518083038186803b158015610a0257600080fd5b505afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610bad565b81610a4857610a4881610a4c565b5050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b6044526101b6917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5b805161032c81610e13565b600060208284031215610af7578081fd5b813561096f81610e13565b60006020808385031215610b14578182fd5b825167ffffffffffffffff80821115610b2b578384fd5b818501915085601f830112610b3e578384fd5b815181811115610b4c578485fd5b8381029150610b5c848301610dec565b8181528481019084860184860187018a1015610b76578788fd5b8795505b83861015610ba057610b8c8a82610adb565b835260019590950194918601918601610b7a565b5098975050505050505050565b600060208284031215610bbe578081fd5b8151801515811461096f578182fd5b600060208284031215610bde578081fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461096f578182fd5b600060208284031215610c1e578081fd5b815161096f81610e13565b600060208284031215610c3a578081fd5b5035919050565b600060208284031215610c52578081fd5b5051919050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6020808252601e908201527f506f6f6c206973206e6f742066726f6d206b6e6f776e20666163746f72790000604082015260600190565b60208082526014908201527f4e6f6e2d6578697374656e7420666163746f7279000000000000000000000000604082015260600190565b60208082526011908201527f4475706c696361746520666163746f7279000000000000000000000000000000604082015260600190565b60208082526023908201527f506f6f6c277320726174652070726f76696465727320646f206e6f742072657660408201527f6572740000000000000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715610e0b57600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146101b657600080fdfea26469706673582212204a4ddb678100ac3d28b3cc7a63dd5c7ebd98961521f276072a8d3a453b9caa8564736f6c63430007010033" +} \ No newline at end of file diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/index.ts b/pkg/deployments/tasks/20221123-pool-recovery-helper/index.ts new file mode 100644 index 0000000000..fd532c1185 --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/index.ts @@ -0,0 +1,10 @@ +import Task from '../../src/task'; +import { TaskRunOptions } from '../../src/types'; +import { PoolRecoveryHelperDeployment } from './input'; + +export default async (task: Task, { force, from }: TaskRunOptions = {}): Promise => { + const input = task.input() as PoolRecoveryHelperDeployment; + + const args = [input.Vault, input.InitialFactories]; + await task.deployAndVerify('PoolRecoveryHelper', args, from, force); +}; diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts b/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts new file mode 100644 index 0000000000..acae22388a --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts @@ -0,0 +1,20 @@ +import Task, { TaskMode } from '../../src/task'; + +export type PoolRecoveryHelperDeployment = { + Vault: string; + InitialFactories: Array; +}; + +const Vault = new Task('20210418-vault', TaskMode.READ_ONLY); +const ComposableStablePoolFactoryTask = new Task('20220906-composable-stable-pool', TaskMode.READ_ONLY); +const WeightedPoolFactoryTask = new Task('20220908-weighted-pool-v2', TaskMode.READ_ONLY); + +export default { + Vault, + mainnet: { + InitialFactories: [ + ComposableStablePoolFactoryTask.output({ network: 'mainnet' }).ComposableStablePoolFactory, + WeightedPoolFactoryTask.output({ network: 'mainnet' }).WeightedPoolFactory, + ], + }, +}; diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/readme.md b/pkg/deployments/tasks/20221123-pool-recovery-helper/readme.md new file mode 100644 index 0000000000..bc47498a72 --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/readme.md @@ -0,0 +1,13 @@ +# 2022-11-22 - Pool Recovery Helper + +Deployment of the `PoolRecoveryHelper`, which allows creating Managed Pools. + +## Useful Files + +- [Ethereum addresses](./output/mainnet.json) +- [Polygon addresses](./output/polygon.json) +- [Arbitrum addresses](./output/arbitrum.json) +- [Optimism addresses](./output/optimism.json) +- [Binance addresses](./output/bsc.json) +- [Gnosis addresses](./output/gnosis.json) +- [`PoolRecoveryHelper` ABI](./abi/PoolRecoveryHelper.json) diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts b/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts new file mode 100644 index 0000000000..1ffcf2c8dd --- /dev/null +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts @@ -0,0 +1,101 @@ +import hre from 'hardhat'; +import { expect } from 'chai'; +import { Contract } from 'ethers'; + +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; +import { actionId } from '@balancer-labs/v2-helpers/src/models/misc/actions'; +import { ZERO_ADDRESS } from '@balancer-labs/v2-helpers/src/constants'; + +import { describeForkTest, impersonate, getForkedNetwork, Task, TaskMode, getSigner } from '../../../src'; +import { setCode } from '@nomicfoundation/hardhat-network-helpers'; + +describeForkTest('PoolRecoveryHelper', 'mainnet', 15998800, function () { + let task: Task; + + let helper: Contract; + let operator: SignerWithAddress, admin: SignerWithAddress; + let vault: Contract, authorizer: Contract; + + const POOL_STABLE = '0xbD482fFb3E6E50dC1c437557C3Bea2B68f3683Ee'; // From ComposableStablePoolFactory + const POOL_WEIGHTED = '0xe340EBfcAA544da8bB1Ee9005F1a346D50Ec422e'; // From WeightedPoolFactory + + before('run task', async () => { + task = new Task('20221123-pool-recovery-helper', TaskMode.TEST, getForkedNetwork(hre)); + await task.run({ force: true }); + helper = await task.deployedInstance('PoolRecoveryHelper'); + }); + + before('load vault', async () => { + const vaultTask = new Task('20210418-vault', TaskMode.READ_ONLY, getForkedNetwork(hre)); + + vault = await vaultTask.instanceAt('Vault', await helper.getVault()); + authorizer = await vaultTask.instanceAt('Authorizer', await vault.getAuthorizer()); + }); + + before('load signers', async () => { + // We impersonate an account with the default admin role in order to be able to grant permissions. This assumes + // such an account exists. + admin = await impersonate(await authorizer.getRoleMember(await authorizer.DEFAULT_ADMIN_ROLE(), 0)); + operator = await getSigner(); + }); + + before('approve helper at the authorizer', async () => { + const selector = task.artifact('IRecoveryMode').evm.methodIdentifiers['enableRecoveryMode()']; + + const actionIds = await Promise.all( + [POOL_STABLE, POOL_WEIGHTED].map(async (poolAddress) => { + const pool = await task.instanceAt('IAuthentication', poolAddress); + return await pool.getActionId(`0x${selector}`); + }) + ); + + // Grant helper permission to enable recovery mode + await authorizer.connect(admin).grantRoles(actionIds, helper.address); + }); + + before('approve operator at the authorizer', async () => { + const actionIds = await Promise.all( + ['addPoolFactory', 'removePoolFactory'].map(async (method) => actionId(helper, method)) + ); + await authorizer.connect(admin).grantRoles(actionIds, operator.address); + }); + context('with ComposableStablePool', () => { + itWorksWithPool(POOL_STABLE); + }); + + context('with WeightedPool', () => { + itWorksWithPool(POOL_WEIGHTED); + }); + + function itWorksWithPool(poolAddress: string) { + it('recognizes pools from the initial factories', async () => { + expect(await helper.isPoolFromKnownFactory(poolAddress)).to.equal(true); + }); + + it("reverts if the pool rate providers don't revert", async () => { + await expect(helper.enableRecoveryMode(poolAddress)).to.be.revertedWith("Pool's rate providers do not revert"); + }); + + it('puts the pool in recovery mode if one of the rate providers reverts', async () => { + // We get the first non-zero rate provider of the Pool, and replace it with a mock one that reverts + const rateProviderPool = await task.instanceAt('IRateProviderPool', poolAddress); + const rateProviders = await rateProviderPool.getRateProviders(); + const mockedRateProvider: string = rateProviders.filter((provider) => provider !== ZERO_ADDRESS)[0]; + + // Make sure there's at least one rate provider + expect(mockedRateProvider).to.not.equal(undefined); + + await setCode( + mockedRateProvider, + `0x${(await task.artifact('MockRevertingRateProvider')).evm.deployedBytecode.object}` + ); + const mockLendingPool = await task.instanceAt('MockRevertingRateProvider', mockedRateProvider); + await mockLendingPool.setRevertOnGetRate(true); + + await helper.enableRecoveryMode(poolAddress); + + const recoveryModePool = await task.instanceAt('IRecoveryMode', poolAddress); + expect(await recoveryModePool.inRecoveryMode()).to.equal(true); + }); + } +}); From 767553e4b418d97addfa2adc6db01383123b15f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 22 Nov 2022 13:55:12 -0300 Subject: [PATCH 2/3] Add other networks --- .../20221123-pool-recovery-helper/input.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts b/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts index acae22388a..17b4c7dbab 100644 --- a/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/input.ts @@ -17,4 +17,34 @@ export default { WeightedPoolFactoryTask.output({ network: 'mainnet' }).WeightedPoolFactory, ], }, + goerli: { + InitialFactories: [ + ComposableStablePoolFactoryTask.output({ network: 'goerli' }).ComposableStablePoolFactory, + WeightedPoolFactoryTask.output({ network: 'goerli' }).WeightedPoolFactory, + ], + }, + polygon: { + InitialFactories: [ + ComposableStablePoolFactoryTask.output({ network: 'polygon' }).ComposableStablePoolFactory, + WeightedPoolFactoryTask.output({ network: 'polygon' }).WeightedPoolFactory, + ], + }, + arbitrum: { + InitialFactories: [ + ComposableStablePoolFactoryTask.output({ network: 'arbitrum' }).ComposableStablePoolFactory, + WeightedPoolFactoryTask.output({ network: 'arbitrum' }).WeightedPoolFactory, + ], + }, + optimism: { + InitialFactories: [ + ComposableStablePoolFactoryTask.output({ network: 'optimism' }).ComposableStablePoolFactory, + WeightedPoolFactoryTask.output({ network: 'optimism' }).WeightedPoolFactory, + ], + }, + bsc: { + InitialFactories: [ + ComposableStablePoolFactoryTask.output({ network: 'bsc' }).ComposableStablePoolFactory, + WeightedPoolFactoryTask.output({ network: 'bsc' }).WeightedPoolFactory, + ], + }, }; From c5aefe9d75540061f088815ed9b87c5681952e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Tue, 22 Nov 2022 14:32:41 -0300 Subject: [PATCH 3/3] Improve deps --- .../tasks/20221123-pool-recovery-helper/test/test.fork.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts b/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts index 1ffcf2c8dd..230a584a0b 100644 --- a/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts +++ b/pkg/deployments/tasks/20221123-pool-recovery-helper/test/test.fork.ts @@ -27,9 +27,10 @@ describeForkTest('PoolRecoveryHelper', 'mainnet', 15998800, function () { before('load vault', async () => { const vaultTask = new Task('20210418-vault', TaskMode.READ_ONLY, getForkedNetwork(hre)); + vault = await vaultTask.deployedInstance('Vault'); - vault = await vaultTask.instanceAt('Vault', await helper.getVault()); - authorizer = await vaultTask.instanceAt('Authorizer', await vault.getAuthorizer()); + const authorizerTask = new Task('20210418-authorizer', TaskMode.READ_ONLY, getForkedNetwork(hre)); + authorizer = await authorizerTask.deployedInstance('Authorizer'); }); before('load signers', async () => {