Skip to content

Instantly share code, notes, and snippets.

@sagarjethi
Created June 16, 2021 19:07
Show Gist options
  • Save sagarjethi/c9a57a0a80459620e2f4fc0b45bdb43c to your computer and use it in GitHub Desktop.
Save sagarjethi/c9a57a0a80459620e2f4fc0b45bdb43c to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.6.12+commit.27d51765.js&optimize=false&runs=200&gist=
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
// File: @openzeppelin/contracts/utils/Address.sol
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies in extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e0710e0fbcb58ef4467bf9cbbfddd7f67adc8f02a94ac56bde3291ae5846c74964736f6c634300060c0033",
"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 0xE0 PUSH18 0xE0FBCB58EF4467BF9CBBFDDD7F67ADC8F02 0xA9 0x4A 0xC5 PUSH12 0xDE3291AE5846C74964736F6C PUSH4 0x4300060C STOP CALLER ",
"sourceMap": "178:5754:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e0710e0fbcb58ef4467bf9cbbfddd7f67adc8f02a94ac56bde3291ae5846c74964736f6c634300060c0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 PUSH18 0xE0FBCB58EF4467BF9CBBFDDD7F67ADC8F02 0xA9 0x4A 0xC5 PUSH12 0xDE3291AE5846C74964736F6C PUSH4 0x4300060C STOP CALLER ",
"sourceMap": "178:5754:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"_functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
"functionCall(address,bytes memory)": "infinite",
"functionCall(address,bytes memory,string memory)": "infinite",
"functionCallWithValue(address,bytes memory,uint256)": "infinite",
"functionCallWithValue(address,bytes memory,uint256,string memory)": "infinite",
"isContract(address)": "infinite",
"sendValue(address payable,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"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": {
"contracts/Address.sol": "Address"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Address.sol": {
"keccak256": "0x52dea7fa816d1fd29103098c5aecebb058bc4e9d0865a77feff15a6a1badd671",
"license": "MIT",
"urls": [
"bzz-raw://9f28e483caf7712c3798d8f2b2c09aa3c34f9e4857688245e29602fe069971a5",
"dweb:/ipfs/QmTBrFoYwjw8fh9Kz7S6SVCMpGPaWDShPu7YoJJbaXUa2x"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405260028055674563918244f4000060035569043c33c19375648000006004556843c33c193756480000600555600a60065568056bc75e2d6310000060075568056bc75e2d63100000600b5562015180600c5562015180600d5562093a80600e557305ff2b0db69458a0750badebc4f9e13add608c7f601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bcfccbde45ce874adcb698cc183debcf17952812601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561016e57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061215e806102006000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c8063716eede411610151578063aee3f80c116100c3578063cd611db111610087578063cd611db1146106dc578063d2ce6964146106fa578063df4eafd414610716578063e30c397814610732578063f2fde38b14610750578063fb993d211461076c57610269565b8063aee3f80c1461063a578063bc38fa1b14610656578063be0247ad14610672578063c408689314610690578063cab27a64146106c057610269565b80638eb10426116101155780638eb104261461056457806392ea45041461058057806399fd92bc1461059e5780639b747dae146105ce578063a0ae93d4146105ec578063aabea7831461061c57610269565b8063716eede4146104ce57806373a59a95146104ec578063775aca521461050a5780638d3af9a2146105285780638da5cb5b1461054657610269565b80634810b405116101ea57806357ca7679116101ae57806357ca76791461041e5780635b16fe4e1461043a5780635d5ce3cf146104565780635f75856f146104745780636518cd45146104925780636ac3861a146104b057610269565b80634810b405146103a05780634dd9584a146103be5780634e71e0c8146103da5780634f3e2f59146103e4578063500594da1461040257610269565b80631b2e10a2116102315780631b2e10a2146102fe57806333835b961461031a5780633b190811146103385780633cd221a21461035457806340769b301461038457610269565b806305a911671461026e57806309a6c3361461028c5780630dedb2f0146102a85780630e34c01b146102c45780630eee1736146102e2575b600080fd5b61027661079c565b6040516102839190611f56565b60405180910390f35b6102a660048036038101906102a19190611c59565b6107a6565b005b6102c260048036038101906102bd9190611c59565b610808565b005b6102cc61086a565b6040516102d99190611f56565b60405180910390f35b6102fc60048036038101906102f79190611bc6565b610874565b005b61031860048036038101906103139190611c59565b610910565b005b6103226109bf565b60405161032f9190611f56565b60405180910390f35b610352600480360381019061034d9190611c59565b6109c9565b005b61036e60048036038101906103699190611bc6565b610a2b565b60405161037b9190611f56565b60405180910390f35b61039e60048036038101906103999190611bc6565b610afa565b005b6103a8610b96565b6040516103b59190611f56565b60405180910390f35b6103d860048036038101906103d39190611bc6565b610ba0565b005b6103e2610c3c565b005b6103ec610dd8565b6040516103f99190611e7c565b60405180910390f35b61041c60048036038101906104179190611c59565b610e02565b005b61043860048036038101906104339190611bc6565b610e64565b005b610454600480360381019061044f9190611c59565b610f00565b005b61045e610f62565b60405161046b9190611f56565b60405180910390f35b61047c610f6c565b6040516104899190611e7c565b60405180910390f35b61049a610f96565b6040516104a79190611f56565b60405180910390f35b6104b8610fa3565b6040516104c59190611e7c565b60405180910390f35b6104d6610fcd565b6040516104e39190611f56565b60405180910390f35b6104f4610fd7565b6040516105019190611f56565b60405180910390f35b610512610fe1565b60405161051f9190611e7c565b60405180910390f35b61053061100b565b60405161053d9190611f56565b60405180910390f35b61054e611015565b60405161055b9190611e7c565b60405180910390f35b61057e60048036038101906105799190611c59565b611039565b005b61058861109b565b6040516105959190611e7c565b60405180910390f35b6105b860048036038101906105b39190611c59565b6110c5565b6040516105c59190611e7c565b60405180910390f35b6105d6611106565b6040516105e39190611eb2565b60405180910390f35b61060660048036038101906106019190611bc6565b611194565b6040516106139190611f56565b60405180910390f35b610624611263565b6040516106319190611f56565b60405180910390f35b610654600480360381019061064f9190611c18565b61126d565b005b610670600480360381019061066b9190611c59565b6112df565b005b61067a611341565b6040516106879190611f56565b60405180910390f35b6106aa60048036038101906106a59190611bef565b61134b565b6040516106b79190611f56565b60405180910390f35b6106da60048036038101906106d59190611bc6565b6115d0565b005b6106e461166c565b6040516106f19190611f56565b60405180910390f35b610714600480360381019061070f9190611c59565b611679565b005b610730600480360381019061072b9190611c59565b6116db565b005b61073a61173d565b6040516107479190611e7c565b60405180910390f35b61076a60048036038101906107659190611bc6565b611763565b005b61078660048036038101906107819190611c59565b611879565b6040516107939190611e7c565b60405180910390f35b6000600254905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107fe57600080fd5b8060048190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086057600080fd5b8060058190555050565b6000600354905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108cc57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096857600080fd5b69010f0cf064dd592000008111156109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90611f16565b60405180910390fd5b8060078190555050565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2157600080fd5b80600e8190555050565b60003373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8757600080fd5b6009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050039050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5257600080fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600d54905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf857600080fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9657600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f897d3c8bbea11029ba3b26eb993fe8edb14c2c4c0d2ecceccce41d1d83d3e35960405160405180910390a3565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5a57600080fd5b8060038190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebc57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5857600080fd5b8060028190555050565b6000600454905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a80549050905090565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600e54905090565b6000600b54905090565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c54905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461109157600080fd5b80600b8190555050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600982815481106110d457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600f80548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611140575b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f057600080fd5b600a829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a80549050039050919050565b6000600554905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112c557600080fd5b80600f90805190602001906112db929190611a2a565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133757600080fd5b8060068190555050565b6000600654905090565b6000805b600f805490508110156115ca576000600f828154811061136b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166396b98862866040518263ffffffff1660e01b81526004016113d39190611e97565b60206040518083038186803b1580156113eb57600080fd5b505afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190611c82565b905060008273ffffffffffffffffffffffffffffffffffffffff1663c884ef83876040518263ffffffff1660e01b81526004016114609190611e97565b60206040518083038186803b15801561147857600080fd5b505afa15801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190611c82565b90506000821180156114c25750600481105b156115ba5760008373ffffffffffffffffffffffffffffffffffffffff16632f8de8106040518163ffffffff1660e01b815260040160206040518083038186803b15801561150f57600080fd5b505afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190611c82565b905060006115a082611592670de0b6b3a76400006115848760040361157660048b6118ba90919063ffffffff16565b61190490919063ffffffff16565b61190490919063ffffffff16565b6118ba90919063ffffffff16565b90506115b5818861197490919063ffffffff16565b965050505b505050808060010191505061134f565b50919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162857600080fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600980549050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d157600080fd5b80600d8190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461173357600080fd5b80600c8190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bb57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f83ada3430836f9d4bd6f7bc690ffbba5199cb19b37393dd64c2299302135359660405160405180910390a350565b6000600a828154811061188857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006118fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119c9565b905092915050565b600080831415611917576000905061196e565b600082840290508284828161192857fe5b0414611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090611f36565b60405180910390fd5b809150505b92915050565b6000808284019050838110156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690611ef6565b60405180910390fd5b8091505092915050565b60008083118290611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a079190611ed4565b60405180910390fd5b506000838581611a1c57fe5b049050809150509392505050565b828054828255906000526020600020908101928215611aa3579160200282015b82811115611aa25782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611a4a565b5b509050611ab09190611ab4565b5090565b5b80821115611aeb57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611ab5565b5090565b600081359050611afe816120e3565b92915050565b600081359050611b13816120fa565b92915050565b600082601f830112611b2a57600080fd5b8135611b3d611b3882611f9e565b611f71565b91508181835260208401935060208101905083856020840282011115611b6257600080fd5b60005b83811015611b925781611b788882611b04565b845260208401935060208301925050600181019050611b65565b5050505092915050565b600081359050611bab81612111565b92915050565b600081519050611bc081612111565b92915050565b600060208284031215611bd857600080fd5b6000611be684828501611aef565b91505092915050565b600060208284031215611c0157600080fd5b6000611c0f84828501611b04565b91505092915050565b600060208284031215611c2a57600080fd5b600082013567ffffffffffffffff811115611c4457600080fd5b611c5084828501611b19565b91505092915050565b600060208284031215611c6b57600080fd5b6000611c7984828501611b9c565b91505092915050565b600060208284031215611c9457600080fd5b6000611ca284828501611bb1565b91505092915050565b6000611cb78383611cd2565b60208301905092915050565b611ccc81612069565b82525050565b611cdb8161202d565b82525050565b611cea8161201b565b82525050565b6000611cfb82611fd6565b611d058185611ff9565b9350611d1083611fc6565b8060005b83811015611d41578151611d288882611cab565b9750611d3383611fec565b925050600181019050611d14565b5085935050505092915050565b6000611d5982611fe1565b611d63818561200a565b9350611d7381856020860161209f565b611d7c816120d2565b840191505092915050565b6000611d94601b8361200a565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611dd4601c8361200a565b91507f496e76616c69642070726573616c65206772616e7420616d6f756e74000000006000830152602082019050919050565b6000611e1460218361200a565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611e768161205f565b82525050565b6000602082019050611e916000830184611ce1565b92915050565b6000602082019050611eac6000830184611cc3565b92915050565b60006020820190508181036000830152611ecc8184611cf0565b905092915050565b60006020820190508181036000830152611eee8184611d4e565b905092915050565b60006020820190508181036000830152611f0f81611d87565b9050919050565b60006020820190508181036000830152611f2f81611dc7565b9050919050565b60006020820190508181036000830152611f4f81611e07565b9050919050565b6000602082019050611f6b6000830184611e6d565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611f9457600080fd5b8060405250919050565b600067ffffffffffffffff821115611fb557600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006120268261203f565b9050919050565b60006120388261203f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006120748261207b565b9050919050565b60006120868261208d565b9050919050565b60006120988261203f565b9050919050565b60005b838110156120bd5780820151818401526020810190506120a2565b838111156120cc576000848401525b50505050565b6000601f19601f8301169050919050565b6120ec8161201b565b81146120f757600080fd5b50565b6121038161202d565b811461210e57600080fd5b50565b61211a8161205f565b811461212557600080fd5b5056fea26469706673582212208ac66fcc0333ef71562fd093f027633057a42625fae1fa2b515e099762602c3464736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x2 DUP1 SSTORE PUSH8 0x4563918244F40000 PUSH1 0x3 SSTORE PUSH10 0x43C33C1937564800000 PUSH1 0x4 SSTORE PUSH9 0x43C33C193756480000 PUSH1 0x5 SSTORE PUSH1 0xA PUSH1 0x6 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x7 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0xB SSTORE PUSH3 0x15180 PUSH1 0xC SSTORE PUSH3 0x15180 PUSH1 0xD SSTORE PUSH3 0x93A80 PUSH1 0xE SSTORE PUSH20 0x5FF2B0DB69458A0750BADEBC4F9E13ADD608C7F PUSH1 0x10 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH20 0xBCFCCBDE45CE874ADCB698CC183DEBCF17952812 PUSH1 0x11 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH20 0xBB4CDB9CBD36B01BD1CBAEBF2DE08D9173BC095C PUSH1 0x12 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x215E DUP1 PUSH2 0x200 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 0x269 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x716EEDE4 GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xAEE3F80C GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xCD611DB1 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xCD611DB1 EQ PUSH2 0x6DC JUMPI DUP1 PUSH4 0xD2CE6964 EQ PUSH2 0x6FA JUMPI DUP1 PUSH4 0xDF4EAFD4 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x732 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0xFB993D21 EQ PUSH2 0x76C JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0xAEE3F80C EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0xBC38FA1B EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0xBE0247AD EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0xCAB27A64 EQ PUSH2 0x6C0 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x8EB10426 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x8EB10426 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x92EA4504 EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x99FD92BC EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x9B747DAE EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0xA0AE93D4 EQ PUSH2 0x5EC JUMPI DUP1 PUSH4 0xAABEA783 EQ PUSH2 0x61C JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x716EEDE4 EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x73A59A95 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x775ACA52 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x8D3AF9A2 EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x546 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x4810B405 GT PUSH2 0x1EA JUMPI DUP1 PUSH4 0x57CA7679 GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x57CA7679 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5B16FE4E EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x5D5CE3CF EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0x5F75856F EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0x6518CD45 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x6AC3861A EQ PUSH2 0x4B0 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x4810B405 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x4DD9584A EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x4F3E2F59 EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0x500594DA EQ PUSH2 0x402 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x1B2E10A2 GT PUSH2 0x231 JUMPI DUP1 PUSH4 0x1B2E10A2 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x33835B96 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0x3B190811 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x3CD221A2 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x40769B30 EQ PUSH2 0x384 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x5A91167 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0x9A6C336 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xDEDB2F0 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xE34C01B EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xEEE1736 EQ PUSH2 0x2E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x276 PUSH2 0x79C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x7A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BD SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x808 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2CC PUSH2 0x86A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D9 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x874 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x313 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x322 PUSH2 0x9BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32F SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x352 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x34D SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x9C9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x36E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x369 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xA2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37B SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x399 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xAFA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3A8 PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B5 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xBA0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0xC3C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3EC PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0xE02 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x438 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x433 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xE64 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x454 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x44F SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x45E PUSH2 0xF62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46B SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x47C PUSH2 0xF6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x489 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH2 0xF96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A7 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4B8 PUSH2 0xFA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4C5 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D6 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E3 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F4 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x501 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x512 PUSH2 0xFE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x51F SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x530 PUSH2 0x100B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53D SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54E PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x57E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x579 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x1039 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x588 PUSH2 0x109B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x595 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5B3 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x10C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C5 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5D6 PUSH2 0x1106 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5E3 SWAP2 SWAP1 PUSH2 0x1EB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x606 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x601 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x613 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x624 PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x631 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x654 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x64F SWAP2 SWAP1 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x126D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x670 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66B SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x12DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x67A PUSH2 0x1341 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x687 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6AA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A5 SWAP2 SWAP1 PUSH2 0x1BEF JUMP JUMPDEST PUSH2 0x134B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6B7 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6DA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6D5 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x15D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E4 PUSH2 0x166C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6F1 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x714 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x70F SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x1679 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x730 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x72B SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x16DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x73A PUSH2 0x173D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x747 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x765 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x1763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x786 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x781 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x1879 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x793 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x11 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH10 0x10F0CF064DD59200000 DUP2 GT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9AC SWAP1 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x9 DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x9 DUP1 SLOAD SWAP1 POP SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x13 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x10 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x897D3C8BBEA11029BA3B26EB993FE8EDB14C2C4C0D2ECCECCCE41D1D83D3E359 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x11 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xEBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x10D4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xF 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 0x118A JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1140 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x11F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xA DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xA DUP1 SLOAD SWAP1 POP SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x12C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xF SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x12DB SWAP3 SWAP2 SWAP1 PUSH2 0x1A2A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0xF DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x15CA JUMPI PUSH1 0x0 PUSH1 0xF DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x136B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x96B98862 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13D3 SWAP2 SWAP1 PUSH2 0x1E97 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13FF 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 0x1423 SWAP2 SWAP1 PUSH2 0x1C82 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC884EF83 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1460 SWAP2 SWAP1 PUSH2 0x1E97 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x148C 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 0x14B0 SWAP2 SWAP1 PUSH2 0x1C82 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x14C2 JUMPI POP PUSH1 0x4 DUP2 LT JUMPDEST ISZERO PUSH2 0x15BA JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2F8DE810 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 0x150F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1523 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 0x1547 SWAP2 SWAP1 PUSH2 0x1C82 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15A0 DUP3 PUSH2 0x1592 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1584 DUP8 PUSH1 0x4 SUB PUSH2 0x1576 PUSH1 0x4 DUP12 PUSH2 0x18BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1904 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1904 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x18BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x15B5 DUP2 DUP9 PUSH2 0x1974 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP7 POP POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x134F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x12 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1733 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xC DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x83ADA3430836F9D4BD6F7BC690FFBBA5199CB19B37393DD64C22993021353596 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1888 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18FC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x19C9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x1917 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x196E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x1928 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1969 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1960 SWAP1 PUSH2 0x1F36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x19BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19B6 SWAP1 PUSH2 0x1EF6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP3 SWAP1 PUSH2 0x1A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A07 SWAP2 SWAP1 PUSH2 0x1ED4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1A1C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1AA3 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1AA2 JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1A4A JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1AB0 SWAP2 SWAP1 PUSH2 0x1AB4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1AEB JUMPI PUSH1 0x0 DUP2 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1AB5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1AFE DUP2 PUSH2 0x20E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1B13 DUP2 PUSH2 0x20FA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1B3D PUSH2 0x1B38 DUP3 PUSH2 0x1F9E JUMP JUMPDEST PUSH2 0x1F71 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B92 JUMPI DUP2 PUSH2 0x1B78 DUP9 DUP3 PUSH2 0x1B04 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1B65 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1BAB DUP2 PUSH2 0x2111 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC0 DUP2 PUSH2 0x2111 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1BE6 DUP5 DUP3 DUP6 ADD PUSH2 0x1AEF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C0F DUP5 DUP3 DUP6 ADD PUSH2 0x1B04 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C50 DUP5 DUP3 DUP6 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C79 DUP5 DUP3 DUP6 ADD PUSH2 0x1B9C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA2 DUP5 DUP3 DUP6 ADD PUSH2 0x1BB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CB7 DUP4 DUP4 PUSH2 0x1CD2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CCC DUP2 PUSH2 0x2069 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1CDB DUP2 PUSH2 0x202D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1CEA DUP2 PUSH2 0x201B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CFB DUP3 PUSH2 0x1FD6 JUMP JUMPDEST PUSH2 0x1D05 DUP2 DUP6 PUSH2 0x1FF9 JUMP JUMPDEST SWAP4 POP PUSH2 0x1D10 DUP4 PUSH2 0x1FC6 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D41 JUMPI DUP2 MLOAD PUSH2 0x1D28 DUP9 DUP3 PUSH2 0x1CAB JUMP JUMPDEST SWAP8 POP PUSH2 0x1D33 DUP4 PUSH2 0x1FEC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1D14 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D59 DUP3 PUSH2 0x1FE1 JUMP JUMPDEST PUSH2 0x1D63 DUP2 DUP6 PUSH2 0x200A JUMP JUMPDEST SWAP4 POP PUSH2 0x1D73 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x209F JUMP JUMPDEST PUSH2 0x1D7C DUP2 PUSH2 0x20D2 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D94 PUSH1 0x1B DUP4 PUSH2 0x200A JUMP JUMPDEST SWAP2 POP PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD4 PUSH1 0x1C DUP4 PUSH2 0x200A JUMP JUMPDEST SWAP2 POP PUSH32 0x496E76616C69642070726573616C65206772616E7420616D6F756E7400000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E14 PUSH1 0x21 DUP4 PUSH2 0x200A JUMP JUMPDEST SWAP2 POP PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E76 DUP2 PUSH2 0x205F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E91 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1CE1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1EAC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1CC3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1ECC DUP2 DUP5 PUSH2 0x1CF0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1EEE DUP2 DUP5 PUSH2 0x1D4E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F0F DUP2 PUSH2 0x1D87 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F2F DUP2 PUSH2 0x1DC7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F4F DUP2 PUSH2 0x1E07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F6B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1E6D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1F94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2026 DUP3 PUSH2 0x203F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2038 DUP3 PUSH2 0x203F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2074 DUP3 PUSH2 0x207B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2086 DUP3 PUSH2 0x208D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2098 DUP3 PUSH2 0x203F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x20A2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x20CC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20EC DUP2 PUSH2 0x201B JUMP JUMPDEST DUP2 EQ PUSH2 0x20F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2103 DUP2 PUSH2 0x202D JUMP JUMPDEST DUP2 EQ PUSH2 0x210E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x211A DUP2 PUSH2 0x205F JUMP JUMPDEST DUP2 EQ PUSH2 0x2125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 0xC6 PUSH16 0xCC0333EF71562FD093F027633057A426 0x25 STATICCALL 0xE1 STATICCALL 0x2B MLOAD 0x5E MULMOD SWAP8 PUSH3 0x602C34 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
"sourceMap": "170:8036:0:-:0;;;279:1;244:36;;367:7;334:40;;466:12;428:50;;575:11;537:49;;690:2;645:47;;794:10;757:47;;1163:10;1122:51;;1255:8;1224:39;;1302:8;1269:41;;1347:6;1316:37;;1462:42;1410:95;;;;;;;;;;;;;;;;;;;;1564:42;1511:96;;;;;;;;;;;;;;;;;;;;1644:42;1613:74;;;;;;;;;;;;;;;;;;;;170:8036;;;;;;;;;;897:10:2;889:5;;:18;;;;;;;;;;;;;;;;;;940:1;917:12;;:25;;;;;;;;;;;;;;;;;;170:8036:0;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106102695760003560e01c8063716eede411610151578063aee3f80c116100c3578063cd611db111610087578063cd611db1146106dc578063d2ce6964146106fa578063df4eafd414610716578063e30c397814610732578063f2fde38b14610750578063fb993d211461076c57610269565b8063aee3f80c1461063a578063bc38fa1b14610656578063be0247ad14610672578063c408689314610690578063cab27a64146106c057610269565b80638eb10426116101155780638eb104261461056457806392ea45041461058057806399fd92bc1461059e5780639b747dae146105ce578063a0ae93d4146105ec578063aabea7831461061c57610269565b8063716eede4146104ce57806373a59a95146104ec578063775aca521461050a5780638d3af9a2146105285780638da5cb5b1461054657610269565b80634810b405116101ea57806357ca7679116101ae57806357ca76791461041e5780635b16fe4e1461043a5780635d5ce3cf146104565780635f75856f146104745780636518cd45146104925780636ac3861a146104b057610269565b80634810b405146103a05780634dd9584a146103be5780634e71e0c8146103da5780634f3e2f59146103e4578063500594da1461040257610269565b80631b2e10a2116102315780631b2e10a2146102fe57806333835b961461031a5780633b190811146103385780633cd221a21461035457806340769b301461038457610269565b806305a911671461026e57806309a6c3361461028c5780630dedb2f0146102a85780630e34c01b146102c45780630eee1736146102e2575b600080fd5b61027661079c565b6040516102839190611f56565b60405180910390f35b6102a660048036038101906102a19190611c59565b6107a6565b005b6102c260048036038101906102bd9190611c59565b610808565b005b6102cc61086a565b6040516102d99190611f56565b60405180910390f35b6102fc60048036038101906102f79190611bc6565b610874565b005b61031860048036038101906103139190611c59565b610910565b005b6103226109bf565b60405161032f9190611f56565b60405180910390f35b610352600480360381019061034d9190611c59565b6109c9565b005b61036e60048036038101906103699190611bc6565b610a2b565b60405161037b9190611f56565b60405180910390f35b61039e60048036038101906103999190611bc6565b610afa565b005b6103a8610b96565b6040516103b59190611f56565b60405180910390f35b6103d860048036038101906103d39190611bc6565b610ba0565b005b6103e2610c3c565b005b6103ec610dd8565b6040516103f99190611e7c565b60405180910390f35b61041c60048036038101906104179190611c59565b610e02565b005b61043860048036038101906104339190611bc6565b610e64565b005b610454600480360381019061044f9190611c59565b610f00565b005b61045e610f62565b60405161046b9190611f56565b60405180910390f35b61047c610f6c565b6040516104899190611e7c565b60405180910390f35b61049a610f96565b6040516104a79190611f56565b60405180910390f35b6104b8610fa3565b6040516104c59190611e7c565b60405180910390f35b6104d6610fcd565b6040516104e39190611f56565b60405180910390f35b6104f4610fd7565b6040516105019190611f56565b60405180910390f35b610512610fe1565b60405161051f9190611e7c565b60405180910390f35b61053061100b565b60405161053d9190611f56565b60405180910390f35b61054e611015565b60405161055b9190611e7c565b60405180910390f35b61057e60048036038101906105799190611c59565b611039565b005b61058861109b565b6040516105959190611e7c565b60405180910390f35b6105b860048036038101906105b39190611c59565b6110c5565b6040516105c59190611e7c565b60405180910390f35b6105d6611106565b6040516105e39190611eb2565b60405180910390f35b61060660048036038101906106019190611bc6565b611194565b6040516106139190611f56565b60405180910390f35b610624611263565b6040516106319190611f56565b60405180910390f35b610654600480360381019061064f9190611c18565b61126d565b005b610670600480360381019061066b9190611c59565b6112df565b005b61067a611341565b6040516106879190611f56565b60405180910390f35b6106aa60048036038101906106a59190611bef565b61134b565b6040516106b79190611f56565b60405180910390f35b6106da60048036038101906106d59190611bc6565b6115d0565b005b6106e461166c565b6040516106f19190611f56565b60405180910390f35b610714600480360381019061070f9190611c59565b611679565b005b610730600480360381019061072b9190611c59565b6116db565b005b61073a61173d565b6040516107479190611e7c565b60405180910390f35b61076a60048036038101906107659190611bc6565b611763565b005b61078660048036038101906107819190611c59565b611879565b6040516107939190611e7c565b60405180910390f35b6000600254905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107fe57600080fd5b8060048190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086057600080fd5b8060058190555050565b6000600354905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108cc57600080fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096857600080fd5b69010f0cf064dd592000008111156109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac90611f16565b60405180910390fd5b8060078190555050565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2157600080fd5b80600e8190555050565b60003373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a8757600080fd5b6009829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050039050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5257600080fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600d54905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf857600080fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c9657600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f897d3c8bbea11029ba3b26eb993fe8edb14c2c4c0d2ecceccce41d1d83d3e35960405160405180910390a3565b6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5a57600080fd5b8060038190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ebc57600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5857600080fd5b8060028190555050565b6000600454905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600a80549050905090565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600e54905090565b6000600b54905090565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c54905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461109157600080fd5b80600b8190555050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600982815481106110d457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060600f80548060200260200160405190810160405280929190818152602001828054801561118a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611140575b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f057600080fd5b600a829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a80549050039050919050565b6000600554905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112c557600080fd5b80600f90805190602001906112db929190611a2a565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461133757600080fd5b8060068190555050565b6000600654905090565b6000805b600f805490508110156115ca576000600f828154811061136b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166396b98862866040518263ffffffff1660e01b81526004016113d39190611e97565b60206040518083038186803b1580156113eb57600080fd5b505afa1580156113ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114239190611c82565b905060008273ffffffffffffffffffffffffffffffffffffffff1663c884ef83876040518263ffffffff1660e01b81526004016114609190611e97565b60206040518083038186803b15801561147857600080fd5b505afa15801561148c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b09190611c82565b90506000821180156114c25750600481105b156115ba5760008373ffffffffffffffffffffffffffffffffffffffff16632f8de8106040518163ffffffff1660e01b815260040160206040518083038186803b15801561150f57600080fd5b505afa158015611523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115479190611c82565b905060006115a082611592670de0b6b3a76400006115848760040361157660048b6118ba90919063ffffffff16565b61190490919063ffffffff16565b61190490919063ffffffff16565b6118ba90919063ffffffff16565b90506115b5818861197490919063ffffffff16565b965050505b505050808060010191505061134f565b50919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461162857600080fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600980549050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116d157600080fd5b80600d8190555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461173357600080fd5b80600c8190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bb57600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f83ada3430836f9d4bd6f7bc690ffbba5199cb19b37393dd64c2299302135359660405160405180910390a350565b6000600a828154811061188857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006118fc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506119c9565b905092915050565b600080831415611917576000905061196e565b600082840290508284828161192857fe5b0414611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090611f36565b60405180910390fd5b809150505b92915050565b6000808284019050838110156119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690611ef6565b60405180910390fd5b8091505092915050565b60008083118290611a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a079190611ed4565b60405180910390fd5b506000838581611a1c57fe5b049050809150509392505050565b828054828255906000526020600020908101928215611aa3579160200282015b82811115611aa25782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611a4a565b5b509050611ab09190611ab4565b5090565b5b80821115611aeb57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611ab5565b5090565b600081359050611afe816120e3565b92915050565b600081359050611b13816120fa565b92915050565b600082601f830112611b2a57600080fd5b8135611b3d611b3882611f9e565b611f71565b91508181835260208401935060208101905083856020840282011115611b6257600080fd5b60005b83811015611b925781611b788882611b04565b845260208401935060208301925050600181019050611b65565b5050505092915050565b600081359050611bab81612111565b92915050565b600081519050611bc081612111565b92915050565b600060208284031215611bd857600080fd5b6000611be684828501611aef565b91505092915050565b600060208284031215611c0157600080fd5b6000611c0f84828501611b04565b91505092915050565b600060208284031215611c2a57600080fd5b600082013567ffffffffffffffff811115611c4457600080fd5b611c5084828501611b19565b91505092915050565b600060208284031215611c6b57600080fd5b6000611c7984828501611b9c565b91505092915050565b600060208284031215611c9457600080fd5b6000611ca284828501611bb1565b91505092915050565b6000611cb78383611cd2565b60208301905092915050565b611ccc81612069565b82525050565b611cdb8161202d565b82525050565b611cea8161201b565b82525050565b6000611cfb82611fd6565b611d058185611ff9565b9350611d1083611fc6565b8060005b83811015611d41578151611d288882611cab565b9750611d3383611fec565b925050600181019050611d14565b5085935050505092915050565b6000611d5982611fe1565b611d63818561200a565b9350611d7381856020860161209f565b611d7c816120d2565b840191505092915050565b6000611d94601b8361200a565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000611dd4601c8361200a565b91507f496e76616c69642070726573616c65206772616e7420616d6f756e74000000006000830152602082019050919050565b6000611e1460218361200a565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611e768161205f565b82525050565b6000602082019050611e916000830184611ce1565b92915050565b6000602082019050611eac6000830184611cc3565b92915050565b60006020820190508181036000830152611ecc8184611cf0565b905092915050565b60006020820190508181036000830152611eee8184611d4e565b905092915050565b60006020820190508181036000830152611f0f81611d87565b9050919050565b60006020820190508181036000830152611f2f81611dc7565b9050919050565b60006020820190508181036000830152611f4f81611e07565b9050919050565b6000602082019050611f6b6000830184611e6d565b92915050565b6000604051905081810181811067ffffffffffffffff82111715611f9457600080fd5b8060405250919050565b600067ffffffffffffffff821115611fb557600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006120268261203f565b9050919050565b60006120388261203f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006120748261207b565b9050919050565b60006120868261208d565b9050919050565b60006120988261203f565b9050919050565b60005b838110156120bd5780820151818401526020810190506120a2565b838111156120cc576000848401525b50505050565b6000601f19601f8301169050919050565b6120ec8161201b565b81146120f757600080fd5b50565b6121038161202d565b811461210e57600080fd5b50565b61211a8161205f565b811461212557600080fd5b5056fea26469706673582212208ac66fcc0333ef71562fd093f027633057a42625fae1fa2b515e099762602c3464736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x269 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x716EEDE4 GT PUSH2 0x151 JUMPI DUP1 PUSH4 0xAEE3F80C GT PUSH2 0xC3 JUMPI DUP1 PUSH4 0xCD611DB1 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xCD611DB1 EQ PUSH2 0x6DC JUMPI DUP1 PUSH4 0xD2CE6964 EQ PUSH2 0x6FA JUMPI DUP1 PUSH4 0xDF4EAFD4 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x732 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x750 JUMPI DUP1 PUSH4 0xFB993D21 EQ PUSH2 0x76C JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0xAEE3F80C EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0xBC38FA1B EQ PUSH2 0x656 JUMPI DUP1 PUSH4 0xBE0247AD EQ PUSH2 0x672 JUMPI DUP1 PUSH4 0xC4086893 EQ PUSH2 0x690 JUMPI DUP1 PUSH4 0xCAB27A64 EQ PUSH2 0x6C0 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x8EB10426 GT PUSH2 0x115 JUMPI DUP1 PUSH4 0x8EB10426 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x92EA4504 EQ PUSH2 0x580 JUMPI DUP1 PUSH4 0x99FD92BC EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x9B747DAE EQ PUSH2 0x5CE JUMPI DUP1 PUSH4 0xA0AE93D4 EQ PUSH2 0x5EC JUMPI DUP1 PUSH4 0xAABEA783 EQ PUSH2 0x61C JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x716EEDE4 EQ PUSH2 0x4CE JUMPI DUP1 PUSH4 0x73A59A95 EQ PUSH2 0x4EC JUMPI DUP1 PUSH4 0x775ACA52 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x8D3AF9A2 EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x546 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x4810B405 GT PUSH2 0x1EA JUMPI DUP1 PUSH4 0x57CA7679 GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x57CA7679 EQ PUSH2 0x41E JUMPI DUP1 PUSH4 0x5B16FE4E EQ PUSH2 0x43A JUMPI DUP1 PUSH4 0x5D5CE3CF EQ PUSH2 0x456 JUMPI DUP1 PUSH4 0x5F75856F EQ PUSH2 0x474 JUMPI DUP1 PUSH4 0x6518CD45 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0x6AC3861A EQ PUSH2 0x4B0 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x4810B405 EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x4DD9584A EQ PUSH2 0x3BE JUMPI DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x4F3E2F59 EQ PUSH2 0x3E4 JUMPI DUP1 PUSH4 0x500594DA EQ PUSH2 0x402 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x1B2E10A2 GT PUSH2 0x231 JUMPI DUP1 PUSH4 0x1B2E10A2 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x33835B96 EQ PUSH2 0x31A JUMPI DUP1 PUSH4 0x3B190811 EQ PUSH2 0x338 JUMPI DUP1 PUSH4 0x3CD221A2 EQ PUSH2 0x354 JUMPI DUP1 PUSH4 0x40769B30 EQ PUSH2 0x384 JUMPI PUSH2 0x269 JUMP JUMPDEST DUP1 PUSH4 0x5A91167 EQ PUSH2 0x26E JUMPI DUP1 PUSH4 0x9A6C336 EQ PUSH2 0x28C JUMPI DUP1 PUSH4 0xDEDB2F0 EQ PUSH2 0x2A8 JUMPI DUP1 PUSH4 0xE34C01B EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0xEEE1736 EQ PUSH2 0x2E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x276 PUSH2 0x79C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x283 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A6 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2A1 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x7A6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2C2 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2BD SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x808 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2CC PUSH2 0x86A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2D9 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2FC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2F7 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x874 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x318 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x313 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x910 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x322 PUSH2 0x9BF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x32F SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x352 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x34D SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x9C9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x36E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x369 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xA2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x37B SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x39E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x399 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xAFA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3A8 PUSH2 0xB96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3B5 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3D8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x3D3 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xBA0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3E2 PUSH2 0xC3C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x3EC PUSH2 0xDD8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3F9 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x417 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0xE02 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x438 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x433 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0xE64 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x454 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x44F SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0xF00 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x45E PUSH2 0xF62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x46B SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x47C PUSH2 0xF6C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x489 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x49A PUSH2 0xF96 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4A7 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4B8 PUSH2 0xFA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4C5 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4D6 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x4E3 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x4F4 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x501 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x512 PUSH2 0xFE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x51F SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x530 PUSH2 0x100B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x53D SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x54E PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x55B SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x57E PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x579 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x1039 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x588 PUSH2 0x109B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x595 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5B8 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x5B3 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x10C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5C5 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x5D6 PUSH2 0x1106 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x5E3 SWAP2 SWAP1 PUSH2 0x1EB2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x606 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x601 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x613 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x624 PUSH2 0x1263 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x631 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x654 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x64F SWAP2 SWAP1 PUSH2 0x1C18 JUMP JUMPDEST PUSH2 0x126D JUMP JUMPDEST STOP JUMPDEST PUSH2 0x670 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x66B SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x12DF JUMP JUMPDEST STOP JUMPDEST PUSH2 0x67A PUSH2 0x1341 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x687 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6AA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6A5 SWAP2 SWAP1 PUSH2 0x1BEF JUMP JUMPDEST PUSH2 0x134B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6B7 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x6DA PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x6D5 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x15D0 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x6E4 PUSH2 0x166C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x6F1 SWAP2 SWAP1 PUSH2 0x1F56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x714 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x70F SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x1679 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x730 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x72B SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x16DB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x73A PUSH2 0x173D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x747 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x76A PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x765 SWAP2 SWAP1 PUSH2 0x1BC6 JUMP JUMPDEST PUSH2 0x1763 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x786 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x781 SWAP2 SWAP1 PUSH2 0x1C59 JUMP JUMPDEST PUSH2 0x1879 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x793 SWAP2 SWAP1 PUSH2 0x1E7C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x2 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x4 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x860 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x11 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x968 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH10 0x10F0CF064DD59200000 DUP2 GT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9AC SWAP1 PUSH2 0x1F16 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x7 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xE DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x9 DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x9 DUP1 SLOAD SWAP1 POP SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x13 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x10 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xC96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x897D3C8BBEA11029BA3B26EB993FE8EDB14C2C4C0D2ECCECCCE41D1D83D3E359 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x11 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x3 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xEBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x8 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x12 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xB DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x10 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x10D4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xF 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 0x118A JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x1140 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x11F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xA DUP3 SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0xA DUP1 SLOAD SWAP1 POP SUB SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x5 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x12C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xF SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x12DB SWAP3 SWAP2 SWAP1 PUSH2 0x1A2A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x6 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x6 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST PUSH1 0xF DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x15CA JUMPI PUSH1 0x0 PUSH1 0xF DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x136B JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x96B98862 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x13D3 SWAP2 SWAP1 PUSH2 0x1E97 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13FF 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 0x1423 SWAP2 SWAP1 PUSH2 0x1C82 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC884EF83 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1460 SWAP2 SWAP1 PUSH2 0x1E97 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x148C 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 0x14B0 SWAP2 SWAP1 PUSH2 0x1C82 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 ISZERO PUSH2 0x14C2 JUMPI POP PUSH1 0x4 DUP2 LT JUMPDEST ISZERO PUSH2 0x15BA JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2F8DE810 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 0x150F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1523 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 0x1547 SWAP2 SWAP1 PUSH2 0x1C82 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15A0 DUP3 PUSH2 0x1592 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1584 DUP8 PUSH1 0x4 SUB PUSH2 0x1576 PUSH1 0x4 DUP12 PUSH2 0x18BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1904 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x1904 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x18BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x15B5 DUP2 DUP9 PUSH2 0x1974 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP7 POP POP POP JUMPDEST POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x134F JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x12 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x16D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xD DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1733 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0xC DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x83ADA3430836F9D4BD6F7BC690FFBBA5199CB19B37393DD64C22993021353596 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1888 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18FC DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x19C9 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x1917 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x196E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x1928 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1969 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1960 SWAP1 PUSH2 0x1F36 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x19BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x19B6 SWAP1 PUSH2 0x1EF6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP3 SWAP1 PUSH2 0x1A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1A07 SWAP2 SWAP1 PUSH2 0x1ED4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x1A1C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x1AA3 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1AA2 JUMPI DUP3 MLOAD DUP3 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1A4A JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1AB0 SWAP2 SWAP1 PUSH2 0x1AB4 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1AEB JUMPI PUSH1 0x0 DUP2 DUP2 PUSH2 0x100 EXP DUP2 SLOAD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x1AB5 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1AFE DUP2 PUSH2 0x20E3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1B13 DUP2 PUSH2 0x20FA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1B2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1B3D PUSH2 0x1B38 DUP3 PUSH2 0x1F9E JUMP JUMPDEST PUSH2 0x1F71 JUMP JUMPDEST SWAP2 POP DUP2 DUP2 DUP4 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP2 ADD SWAP1 POP DUP4 DUP6 PUSH1 0x20 DUP5 MUL DUP3 ADD GT ISZERO PUSH2 0x1B62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B92 JUMPI DUP2 PUSH2 0x1B78 DUP9 DUP3 PUSH2 0x1B04 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x20 DUP4 ADD SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1B65 JUMP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1BAB DUP2 PUSH2 0x2111 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1BC0 DUP2 PUSH2 0x2111 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1BD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1BE6 DUP5 DUP3 DUP6 ADD PUSH2 0x1AEF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C0F DUP5 DUP3 DUP6 ADD PUSH2 0x1B04 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1C50 DUP5 DUP3 DUP6 ADD PUSH2 0x1B19 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1C79 DUP5 DUP3 DUP6 ADD PUSH2 0x1B9C JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1CA2 DUP5 DUP3 DUP6 ADD PUSH2 0x1BB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CB7 DUP4 DUP4 PUSH2 0x1CD2 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1CCC DUP2 PUSH2 0x2069 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1CDB DUP2 PUSH2 0x202D JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH2 0x1CEA DUP2 PUSH2 0x201B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CFB DUP3 PUSH2 0x1FD6 JUMP JUMPDEST PUSH2 0x1D05 DUP2 DUP6 PUSH2 0x1FF9 JUMP JUMPDEST SWAP4 POP PUSH2 0x1D10 DUP4 PUSH2 0x1FC6 JUMP JUMPDEST DUP1 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D41 JUMPI DUP2 MLOAD PUSH2 0x1D28 DUP9 DUP3 PUSH2 0x1CAB JUMP JUMPDEST SWAP8 POP PUSH2 0x1D33 DUP4 PUSH2 0x1FEC JUMP JUMPDEST SWAP3 POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x1D14 JUMP JUMPDEST POP DUP6 SWAP4 POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D59 DUP3 PUSH2 0x1FE1 JUMP JUMPDEST PUSH2 0x1D63 DUP2 DUP6 PUSH2 0x200A JUMP JUMPDEST SWAP4 POP PUSH2 0x1D73 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x209F JUMP JUMPDEST PUSH2 0x1D7C DUP2 PUSH2 0x20D2 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D94 PUSH1 0x1B DUP4 PUSH2 0x200A JUMP JUMPDEST SWAP2 POP PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1DD4 PUSH1 0x1C DUP4 PUSH2 0x200A JUMP JUMPDEST SWAP2 POP PUSH32 0x496E76616C69642070726573616C65206772616E7420616D6F756E7400000000 PUSH1 0x0 DUP4 ADD MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1E14 PUSH1 0x21 DUP4 PUSH2 0x200A JUMP JUMPDEST SWAP2 POP PUSH32 0x536166654D6174683A206D756C7469706C69636174696F6E206F766572666C6F PUSH1 0x0 DUP4 ADD MSTORE PUSH32 0x7700000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1E76 DUP2 PUSH2 0x205F JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1E91 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1CE1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1EAC PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1CC3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1ECC DUP2 DUP5 PUSH2 0x1CF0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1EEE DUP2 DUP5 PUSH2 0x1D4E JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F0F DUP2 PUSH2 0x1D87 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F2F DUP2 PUSH2 0x1DC7 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1F4F DUP2 PUSH2 0x1E07 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1F6B PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1E6D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP DUP2 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1F94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x40 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x1FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP3 MUL SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2026 DUP3 PUSH2 0x203F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2038 DUP3 PUSH2 0x203F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2074 DUP3 PUSH2 0x207B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2086 DUP3 PUSH2 0x208D JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2098 DUP3 PUSH2 0x203F JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x20BD JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x20A2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x20CC JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x20EC DUP2 PUSH2 0x201B JUMP JUMPDEST DUP2 EQ PUSH2 0x20F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x2103 DUP2 PUSH2 0x202D JUMP JUMPDEST DUP2 EQ PUSH2 0x210E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0x211A DUP2 PUSH2 0x205F JUMP JUMPDEST DUP2 EQ PUSH2 0x2125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP11 0xC6 PUSH16 0xCC0333EF71562FD093F027633057A426 0x25 STATICCALL 0xE1 STATICCALL 0x2B MLOAD 0x5E MULMOD SWAP8 PUSH3 0x602C34 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
"sourceMap": "170:8036:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3211:103;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5085:160;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4804;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3454:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7877:156;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3798:275;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3685:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6101:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2240:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2080:154;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5769:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7606:152;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1338:181:2;;;:::i;:::-;;7764:107:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3559:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4196:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3320:128;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4970:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4079:111;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2927:117;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8039:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6000:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5251:115;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1967:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5550:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;175:20:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5372:172:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7495:105;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2563:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6219:150;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2692:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4689:109;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6375:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4495:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4366:123;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6550:939;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8124:80;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2450:107;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5874:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5651:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;201:27:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1103:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3050:155:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3211:103;3265:7;3291:16;;3284:23;;3211:103;:::o;5085:160::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;5218:20:0::1;5196:19;:42;;;;5085:160:::0;:::o;4804:::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;4937:20:0::1;4915:19;:42;;;;4804:160:::0;:::o;3454:99::-;3506:7;3532:14;;3525:21;;3454:99;:::o;7877:156::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;8007:19:0::1;7986:18;;:40;;;;;;;;;;;;;;;;;;7877:156:::0;:::o;3798:275::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;3951:11:0::1;3928:19;:34;;3907:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;4047:19;4026:18;:40;;;;3798:275:::0;:::o;3685:107::-;3741:7;3767:18;;3760:25;;3685:107;:::o;6101:112::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;6193:13:0::1;6178:12;:28;;;;6101:112:::0;:::o;2240:204::-;2339:7;1932:10;1910:32;;:18;;;;;;;;;;;:32;;;1902:41;;;;;;2362:16:::1;2384:8;2362:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2436:1;2410:16;:23;;;;:27;2403:34;;2240:204:::0;;;:::o;2080:154::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;2209:18:0::1;2188;;:39;;;;;;;;;;;;;;;;;;2080:154:::0;:::o;5769:99::-;5821:7;5847:14;;5840:21;;5769:99;:::o;7606:152::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;7733:18:0::1;7713:17;;:38;;;;;;;;;;;;;;;;;;7606:152:::0;:::o;1338:181:2:-;755:12;;;;;;;;;;;741:26;;:10;:26;;;733:35;;;;;;1406:12:::1;;;;;;;;;;;1398:5;::::0;:20:::1;;;;;;;;;;;;;;;;;;1451:1;1428:12;;:25;;;;;;;;;;;;;;;;;;1499:12;;;;;;;;;;;1468:44;;1492:5;::::0;::::1;;;;;;;;1468:44;;;;;;;;;;;;1338:181::o:0;7764:107:0:-;7820:7;7846:18;;;;;;;;;;;7839:25;;7764:107;:::o;3559:120::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;3657:15:0::1;3640:14;:32;;;;3559:120:::0;:::o;4196:164::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;4332:21:0::1;4309:20;;:44;;;;;;;;;;;;;;;;;;4196:164:::0;:::o;3320:128::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;3424:17:0::1;3405:16;:36;;;;3320:128:::0;:::o;4970:109::-;5027:7;5053:19;;5046:26;;4970:109;:::o;4079:111::-;4137:7;4163:20;;;;;;;;;;;4156:27;;4079:111;:::o;2927:117::-;2983:7;3009:21;:28;;;;3002:35;;2927:117;:::o;8039:79::-;8081:7;8107:4;;;;;;;;;;;8100:11;;8039:79;:::o;6000:95::-;6050:7;6076:12;;6069:19;;6000:95;:::o;5251:115::-;5311:7;5337:22;;5330:29;;5251:115;:::o;1967:107::-;2023:7;2049:18;;;;;;;;;;;2042:25;;1967:107;:::o;5550:95::-;5600:7;5626:12;;5619:19;;5550:95;:::o;175:20:2:-;;;;;;;;;;;;:::o;5372:172:0:-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;5514:23:0::1;5489:22;:48;;;;5372:172:::0;:::o;7495:105::-;7550:7;7576:17;;;;;;;;;;;7569:24;;7495:105;:::o;2563:123::-;2629:7;2655:16;2672:6;2655:24;;;;;;;;;;;;;;;;;;;;;;;;;2648:31;;2563:123;;;:::o;6219:150::-;6298:24;6345:17;6338:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6219:150;:::o;2692:229::-;2801:7;1932:10;1910:32;;:18;;;;;;;;;;;:32;;;1902:41;;;;;;2824:21:::1;2851:13;2824:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2913:1;2882:21;:28;;;;:32;2875:39;;2692:229:::0;;;:::o;4689:109::-;4746:7;4772:19;;4765:26;;4689:109;:::o;6375:169::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;6519:18:0::1;6499:17;:38;;;;;;;;;;;;:::i;:::-;;6375:169:::0;:::o;4495:188::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;4649:27:0::1;4620:26;:56;;;;4495:188:::0;:::o;4366:123::-;4430:7;4456:26;;4449:33;;4366:123;:::o;6550:939::-;6647:26;6726:9;6721:762;6745:17;:24;;;;6741:1;:28;6721:762;;;6790:25;6831:17;6849:1;6831:20;;;;;;;;;;;;;;;;;;;;;;;;;6790:62;;6867:24;6894:12;:24;;;6919:6;6894:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6867:59;;6940:21;6964:12;:20;;;6985:6;6964:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6940:52;;7029:1;7010:16;:20;:41;;;;;7050:1;7034:13;:17;7010:41;7006:467;;;7071:27;7101:12;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7071:60;;7149:25;7197:181;7358:19;7197:131;7323:4;7197:96;7279:13;7275:1;:17;7197:48;7243:1;7197:16;:45;;:48;;;;:::i;:::-;:77;;:96;;;;:::i;:::-;:125;;:131;;;;:::i;:::-;:160;;:181;;;;:::i;:::-;7149:229;;7417:41;7440:17;7417:18;:22;;:41;;;;:::i;:::-;7396:62;;7006:467;;;6721:762;;;6771:3;;;;;;;6721:762;;;;6550:939;;;:::o;8124:80::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;8192:5:0::1;8185:4;;:12;;;;;;;;;;;;;;;;;;8124:80:::0;:::o;2450:107::-;2501:7;2527:16;:23;;;;2520:30;;2450:107;:::o;5874:120::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;5972:15:0::1;5955:14;:32;;;;5874:120:::0;:::o;5651:112::-;567:5:2;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;5743:13:0::1;5728:12;:28;;;;5651:112:::0;:::o;201:27:2:-;;;;;;;;;;;;;:::o;1103:166::-;567:5;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;1191:9:::1;1176:12;;:24;;;;;;;;;;;;;;;;;;1252:9;1215:47;;1245:5;::::0;::::1;;;;;;;;1215:47;;;;;;;;;;;;1103:166:::0;:::o;3050:155:0:-;3142:7;3172:21;3194:3;3172:26;;;;;;;;;;;;;;;;;;;;;;;;;3165:33;;3050:155;;;:::o;3153:130:4:-;3211:7;3237:39;3241:1;3244;3237:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3230:46;;3153:130;;;;:::o;2232:459::-;2290:7;2536:1;2531;:6;2527:45;;;2560:1;2553:8;;;;2527:45;2582:9;2598:1;2594;:5;2582:17;;2626:1;2621;2617;:5;;;;;;:10;2609:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2683:1;2676:8;;;2232:459;;;;;:::o;926:176::-;984:7;1003:9;1019:1;1015;:5;1003:17;;1043:1;1038;:6;;1030:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1094:1;1087:8;;;926:176;;;;:::o;3765:272::-;3851:7;3882:1;3878;:5;3885:12;3870:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3908:9;3924:1;3920;:5;;;;;;3908:17;;4029:1;4022:8;;;3765:272;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:146::-;;230:6;217:20;208:29;;242:41;277:5;242:41;:::i;:::-;202:86;;;;:::o;321:731::-;;446:3;439:4;431:6;427:17;423:27;413:2;;464:1;461;454:12;413:2;501:6;488:20;523:88;538:72;603:6;538:72;:::i;:::-;523:88;:::i;:::-;514:97;;628:5;653:6;646:5;639:21;683:4;675:6;671:17;661:27;;705:4;700:3;696:14;689:21;;758:6;805:3;797:4;789:6;785:17;780:3;776:27;773:36;770:2;;;822:1;819;812:12;770:2;847:1;832:214;857:6;854:1;851:13;832:214;;;915:3;937:45;978:3;966:10;937:45;:::i;:::-;932:3;925:58;1006:4;1001:3;997:14;990:21;;1034:4;1029:3;1025:14;1018:21;;889:157;879:1;876;872:9;867:14;;832:214;;;836:14;406:646;;;;;;;:::o;1060:130::-;;1140:6;1127:20;1118:29;;1152:33;1179:5;1152:33;:::i;:::-;1112:78;;;;:::o;1197:134::-;;1281:6;1275:13;1266:22;;1293:33;1320:5;1293:33;:::i;:::-;1260:71;;;;:::o;1338:241::-;;1442:2;1430:9;1421:7;1417:23;1413:32;1410:2;;;1458:1;1455;1448:12;1410:2;1493:1;1510:53;1555:7;1546:6;1535:9;1531:22;1510:53;:::i;:::-;1500:63;;1472:97;1404:175;;;;:::o;1586:257::-;;1698:2;1686:9;1677:7;1673:23;1669:32;1666:2;;;1714:1;1711;1704:12;1666:2;1749:1;1766:61;1819:7;1810:6;1799:9;1795:22;1766:61;:::i;:::-;1756:71;;1728:105;1660:183;;;;:::o;1850:393::-;;1987:2;1975:9;1966:7;1962:23;1958:32;1955:2;;;2003:1;2000;1993:12;1955:2;2066:1;2055:9;2051:17;2038:31;2089:18;2081:6;2078:30;2075:2;;;2121:1;2118;2111:12;2075:2;2141:86;2219:7;2210:6;2199:9;2195:22;2141:86;:::i;:::-;2131:96;;2017:216;1949:294;;;;:::o;2250:241::-;;2354:2;2342:9;2333:7;2329:23;2325:32;2322:2;;;2370:1;2367;2360:12;2322:2;2405:1;2422:53;2467:7;2458:6;2447:9;2443:22;2422:53;:::i;:::-;2412:63;;2384:97;2316:175;;;;:::o;2498:263::-;;2613:2;2601:9;2592:7;2588:23;2584:32;2581:2;;;2629:1;2626;2619:12;2581:2;2664:1;2681:64;2737:7;2728:6;2717:9;2713:22;2681:64;:::i;:::-;2671:74;;2643:108;2575:186;;;;:::o;2769:205::-;;2872:62;2930:3;2922:6;2872:62;:::i;:::-;2963:4;2958:3;2954:14;2940:28;;2865:109;;;;:::o;2982:142::-;3073:45;3112:5;3073:45;:::i;:::-;3068:3;3061:58;3055:69;;:::o;3131:127::-;3220:32;3246:5;3220:32;:::i;:::-;3215:3;3208:45;3202:56;;:::o;3265:113::-;3348:24;3366:5;3348:24;:::i;:::-;3343:3;3336:37;3330:48;;:::o;3432:754::-;;3593:62;3649:5;3593:62;:::i;:::-;3668:94;3755:6;3750:3;3668:94;:::i;:::-;3661:101;;3783:64;3841:5;3783:64;:::i;:::-;3867:7;3895:1;3880:284;3905:6;3902:1;3899:13;3880:284;;;3972:6;3966:13;3993:79;4068:3;4053:13;3993:79;:::i;:::-;3986:86;;4089:68;4150:6;4089:68;:::i;:::-;4079:78;;3937:227;3927:1;3924;3920:9;3915:14;;3880:284;;;3884:14;4177:3;4170:10;;3572:614;;;;;;;:::o;4194:347::-;;4306:39;4339:5;4306:39;:::i;:::-;4357:71;4421:6;4416:3;4357:71;:::i;:::-;4350:78;;4433:52;4478:6;4473:3;4466:4;4459:5;4455:16;4433:52;:::i;:::-;4506:29;4528:6;4506:29;:::i;:::-;4501:3;4497:39;4490:46;;4286:255;;;;;:::o;4549:327::-;;4709:67;4773:2;4768:3;4709:67;:::i;:::-;4702:74;;4809:29;4805:1;4800:3;4796:11;4789:50;4867:2;4862:3;4858:12;4851:19;;4695:181;;;:::o;4885:328::-;;5045:67;5109:2;5104:3;5045:67;:::i;:::-;5038:74;;5145:30;5141:1;5136:3;5132:11;5125:51;5204:2;5199:3;5195:12;5188:19;;5031:182;;;:::o;5222:370::-;;5382:67;5446:2;5441:3;5382:67;:::i;:::-;5375:74;;5482:34;5478:1;5473:3;5469:11;5462:55;5551:3;5546:2;5541:3;5537:12;5530:25;5583:2;5578:3;5574:12;5567:19;;5368:224;;;:::o;5600:113::-;5683:24;5701:5;5683:24;:::i;:::-;5678:3;5671:37;5665:48;;:::o;5720:222::-;;5847:2;5836:9;5832:18;5824:26;;5861:71;5929:1;5918:9;5914:17;5905:6;5861:71;:::i;:::-;5818:124;;;;:::o;5949:238::-;;6084:2;6073:9;6069:18;6061:26;;6098:79;6174:1;6163:9;6159:17;6150:6;6098:79;:::i;:::-;6055:132;;;;:::o;6194:402::-;;6387:2;6376:9;6372:18;6364:26;;6437:9;6431:4;6427:20;6423:1;6412:9;6408:17;6401:47;6462:124;6581:4;6572:6;6462:124;:::i;:::-;6454:132;;6358:238;;;;:::o;6603:310::-;;6750:2;6739:9;6735:18;6727:26;;6800:9;6794:4;6790:20;6786:1;6775:9;6771:17;6764:47;6825:78;6898:4;6889:6;6825:78;:::i;:::-;6817:86;;6721:192;;;;:::o;6920:416::-;;7120:2;7109:9;7105:18;7097:26;;7170:9;7164:4;7160:20;7156:1;7145:9;7141:17;7134:47;7195:131;7321:4;7195:131;:::i;:::-;7187:139;;7091:245;;;:::o;7343:416::-;;7543:2;7532:9;7528:18;7520:26;;7593:9;7587:4;7583:20;7579:1;7568:9;7564:17;7557:47;7618:131;7744:4;7618:131;:::i;:::-;7610:139;;7514:245;;;:::o;7766:416::-;;7966:2;7955:9;7951:18;7943:26;;8016:9;8010:4;8006:20;8002:1;7991:9;7987:17;7980:47;8041:131;8167:4;8041:131;:::i;:::-;8033:139;;7937:245;;;:::o;8189:222::-;;8316:2;8305:9;8301:18;8293:26;;8330:71;8398:1;8387:9;8383:17;8374:6;8330:71;:::i;:::-;8287:124;;;;:::o;8418:256::-;;8480:2;8474:9;8464:19;;8518:4;8510:6;8506:17;8617:6;8605:10;8602:22;8581:18;8569:10;8566:34;8563:62;8560:2;;;8638:1;8635;8628:12;8560:2;8658:10;8654:2;8647:22;8458:216;;;;:::o;8681:312::-;;8848:18;8840:6;8837:30;8834:2;;;8880:1;8877;8870:12;8834:2;8915:4;8907:6;8903:17;8895:25;;8978:4;8972;8968:15;8960:23;;8771:222;;;:::o;9000:159::-;;9094:3;9086:11;;9132:4;9127:3;9123:14;9115:22;;9080:79;;;:::o;9166:145::-;;9283:5;9277:12;9267:22;;9248:63;;;:::o;9318:122::-;;9412:5;9406:12;9396:22;;9377:63;;;:::o;9447:116::-;;9553:4;9548:3;9544:14;9536:22;;9530:33;;;:::o;9571:186::-;;9709:6;9704:3;9697:19;9746:4;9741:3;9737:14;9722:29;;9690:67;;;;:::o;9766:163::-;;9881:6;9876:3;9869:19;9918:4;9913:3;9909:14;9894:29;;9862:67;;;;:::o;9937:91::-;;9999:24;10017:5;9999:24;:::i;:::-;9988:35;;9982:46;;;:::o;10035:99::-;;10105:24;10123:5;10105:24;:::i;:::-;10094:35;;10088:46;;;:::o;10141:121::-;;10214:42;10207:5;10203:54;10192:65;;10186:76;;;:::o;10269:72::-;;10331:5;10320:16;;10314:27;;;:::o;10348:129::-;;10435:37;10466:5;10435:37;:::i;:::-;10422:50;;10416:61;;;:::o;10484:121::-;;10563:37;10594:5;10563:37;:::i;:::-;10550:50;;10544:61;;;:::o;10612:108::-;;10691:24;10709:5;10691:24;:::i;:::-;10678:37;;10672:48;;;:::o;10728:268::-;10793:1;10800:101;10814:6;10811:1;10808:13;10800:101;;;10890:1;10885:3;10881:11;10875:18;10871:1;10866:3;10862:11;10855:39;10836:2;10833:1;10829:10;10824:15;;10800:101;;;10916:6;10913:1;10910:13;10907:2;;;10981:1;10972:6;10967:3;10963:16;10956:27;10907:2;10777:219;;;;:::o;11004:97::-;;11092:2;11088:7;11083:2;11076:5;11072:14;11068:28;11058:38;;11052:49;;;:::o;11109:117::-;11178:24;11196:5;11178:24;:::i;:::-;11171:5;11168:35;11158:2;;11217:1;11214;11207:12;11158:2;11152:74;:::o;11233:133::-;11310:32;11336:5;11310:32;:::i;:::-;11303:5;11300:43;11290:2;;11357:1;11354;11347:12;11290:2;11284:82;:::o;11373:117::-;11442:24;11460:5;11442:24;:::i;:::-;11435:5;11432:35;11422:2;;11481:1;11478;11471:12;11422:2;11416:74;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1708400",
"executionCost": "306186",
"totalCost": "2014586"
},
"external": {
"addPresaleAddress(address)": "44226",
"addPresaleGrantAddress(address)": "44247",
"claimOwnership()": "46888",
"getBscsFactoryAddress()": "1312",
"getBscsTokenPresales()": "infinite",
"getDevFeePercentage()": "1184",
"getIncubatorMsigAddress()": "1333",
"getLockedBalance(address)": "infinite",
"getMaxRewardQualifyBal()": "1226",
"getMinClaimTime()": "1183",
"getMinDevFeeInWei()": "1250",
"getMinInvestorBSCSBalance()": "1205",
"getMinRewardQualifyBal()": "1292",
"getMinRewardQualifyPercentage()": "1226",
"getMinStakeTime()": "1249",
"getMinUnstakeTime()": "1183",
"getPancakeSwapFactory()": "1334",
"getPancakeSwapRouter()": "1289",
"getPresaleAddress(uint256)": "2456",
"getPresaleGrantAddress(uint256)": "2521",
"getPresaleGrantAmount()": "1205",
"getPresaleGrantsCount()": "1278",
"getPresalesCount()": "1189",
"getWBNB()": "1377",
"owner()": "1345",
"pendingOwner()": "1324",
"setBscsFactoryAddress(address)": "22323",
"setBscsTokenPresales(address[])": "infinite",
"setDevFeePercentage(uint256)": "21354",
"setIncubatorMsigAddress(address)": "22234",
"setMaxRewardQualifyBal(uint256)": "21356",
"setMinClaimTime(uint256)": "21377",
"setMinDevFeeInWei(uint256)": "21421",
"setMinInvestorBSCSBalance(uint256)": "21332",
"setMinRewardQualifyBal(uint256)": "21378",
"setMinRewardQualifyPercentage(uint256)": "21354",
"setMinStakeTime(uint256)": "21375",
"setMinUnstakeTime(uint256)": "21353",
"setPancakeSwapFactory(address)": "22324",
"setPancakeSwapRouter(address)": "22257",
"setPresaleGrantAmount(uint256)": "21359",
"setWBNB(address)": "22322",
"transferOwnership(address)": "24699"
}
},
"methodIdentifiers": {
"addPresaleAddress(address)": "3cd221a2",
"addPresaleGrantAddress(address)": "a0ae93d4",
"claimOwnership()": "4e71e0c8",
"getBscsFactoryAddress()": "775aca52",
"getBscsTokenPresales()": "9b747dae",
"getDevFeePercentage()": "05a91167",
"getIncubatorMsigAddress()": "5f75856f",
"getLockedBalance(address)": "c4086893",
"getMaxRewardQualifyBal()": "5d5ce3cf",
"getMinClaimTime()": "716eede4",
"getMinDevFeeInWei()": "0e34c01b",
"getMinInvestorBSCSBalance()": "73a59a95",
"getMinRewardQualifyBal()": "aabea783",
"getMinRewardQualifyPercentage()": "be0247ad",
"getMinStakeTime()": "8d3af9a2",
"getMinUnstakeTime()": "4810b405",
"getPancakeSwapFactory()": "4f3e2f59",
"getPancakeSwapRouter()": "92ea4504",
"getPresaleAddress(uint256)": "99fd92bc",
"getPresaleGrantAddress(uint256)": "fb993d21",
"getPresaleGrantAmount()": "33835b96",
"getPresaleGrantsCount()": "6518cd45",
"getPresalesCount()": "cd611db1",
"getWBNB()": "6ac3861a",
"owner()": "8da5cb5b",
"pendingOwner()": "e30c3978",
"setBscsFactoryAddress(address)": "40769b30",
"setBscsTokenPresales(address[])": "aee3f80c",
"setDevFeePercentage(uint256)": "5b16fe4e",
"setIncubatorMsigAddress(address)": "57ca7679",
"setMaxRewardQualifyBal(uint256)": "09a6c336",
"setMinClaimTime(uint256)": "3b190811",
"setMinDevFeeInWei(uint256)": "500594da",
"setMinInvestorBSCSBalance(uint256)": "8eb10426",
"setMinRewardQualifyBal(uint256)": "0dedb2f0",
"setMinRewardQualifyPercentage(uint256)": "bc38fa1b",
"setMinStakeTime(uint256)": "df4eafd4",
"setMinUnstakeTime(uint256)": "d2ce6964",
"setPancakeSwapFactory(address)": "0eee1736",
"setPancakeSwapRouter(address)": "4dd9584a",
"setPresaleGrantAmount(uint256)": "1b2e10a2",
"setWBNB(address)": "cab27a64",
"transferOwnership(address)": "f2fde38b"
}
},
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferred",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_presale",
"type": "address"
}
],
"name": "addPresaleAddress",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_presaleGrant",
"type": "address"
}
],
"name": "addPresaleGrantAddress",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getBscsFactoryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBscsTokenPresales",
"outputs": [
{
"internalType": "address payable[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDevFeePercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getIncubatorMsigAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "sender",
"type": "address"
}
],
"name": "getLockedBalance",
"outputs": [
{
"internalType": "uint256",
"name": "totalLockedBalance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMaxRewardQualifyBal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinClaimTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinDevFeeInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinInvestorBSCSBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinRewardQualifyBal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinRewardQualifyPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinStakeTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinUnstakeTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPancakeSwapFactory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPancakeSwapRouter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "bscsId",
"type": "uint256"
}
],
"name": "getPresaleAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
}
],
"name": "getPresaleGrantAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPresaleGrantAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPresaleGrantsCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPresalesCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getWBNB",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newFactoryAddress",
"type": "address"
}
],
"name": "setBscsFactoryAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable[]",
"name": "_bscsTokenPresales",
"type": "address[]"
}
],
"name": "setBscsTokenPresales",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_devFeePercentage",
"type": "uint256"
}
],
"name": "setDevFeePercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_incubatorMsigAddress",
"type": "address"
}
],
"name": "setIncubatorMsigAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxRewardQualifyBal",
"type": "uint256"
}
],
"name": "setMaxRewardQualifyBal",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minClaimTime",
"type": "uint256"
}
],
"name": "setMinClaimTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minDevFeeInWei",
"type": "uint256"
}
],
"name": "setMinDevFeeInWei",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minInvestorBSCSBalance",
"type": "uint256"
}
],
"name": "setMinInvestorBSCSBalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minRewardQualifyBal",
"type": "uint256"
}
],
"name": "setMinRewardQualifyBal",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minRewardQualifyPercentage",
"type": "uint256"
}
],
"name": "setMinRewardQualifyPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minStakeTime",
"type": "uint256"
}
],
"name": "setMinStakeTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minUnstakeTime",
"type": "uint256"
}
],
"name": "setMinUnstakeTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pancakeSwapFactory",
"type": "address"
}
],
"name": "setPancakeSwapFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pancakeSwapRouter",
"type": "address"
}
],
"name": "setPancakeSwapRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_presaleGrantAmount",
"type": "uint256"
}
],
"name": "setPresaleGrantAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_wbnb",
"type": "address"
}
],
"name": "setWBNB",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferred",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_presale",
"type": "address"
}
],
"name": "addPresaleAddress",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_presaleGrant",
"type": "address"
}
],
"name": "addPresaleGrantAddress",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getBscsFactoryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBscsTokenPresales",
"outputs": [
{
"internalType": "address payable[]",
"name": "",
"type": "address[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDevFeePercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getIncubatorMsigAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",
"name": "sender",
"type": "address"
}
],
"name": "getLockedBalance",
"outputs": [
{
"internalType": "uint256",
"name": "totalLockedBalance",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMaxRewardQualifyBal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinClaimTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinDevFeeInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinInvestorBSCSBalance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinRewardQualifyBal",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinRewardQualifyPercentage",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinStakeTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMinUnstakeTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPancakeSwapFactory",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPancakeSwapRouter",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "bscsId",
"type": "uint256"
}
],
"name": "getPresaleAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_id",
"type": "uint256"
}
],
"name": "getPresaleGrantAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPresaleGrantAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPresaleGrantsCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPresalesCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getWBNB",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newFactoryAddress",
"type": "address"
}
],
"name": "setBscsFactoryAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable[]",
"name": "_bscsTokenPresales",
"type": "address[]"
}
],
"name": "setBscsTokenPresales",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_devFeePercentage",
"type": "uint256"
}
],
"name": "setDevFeePercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_incubatorMsigAddress",
"type": "address"
}
],
"name": "setIncubatorMsigAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxRewardQualifyBal",
"type": "uint256"
}
],
"name": "setMaxRewardQualifyBal",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minClaimTime",
"type": "uint256"
}
],
"name": "setMinClaimTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minDevFeeInWei",
"type": "uint256"
}
],
"name": "setMinDevFeeInWei",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minInvestorBSCSBalance",
"type": "uint256"
}
],
"name": "setMinInvestorBSCSBalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minRewardQualifyBal",
"type": "uint256"
}
],
"name": "setMinRewardQualifyBal",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minRewardQualifyPercentage",
"type": "uint256"
}
],
"name": "setMinRewardQualifyPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minStakeTime",
"type": "uint256"
}
],
"name": "setMinStakeTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_minUnstakeTime",
"type": "uint256"
}
],
"name": "setMinUnstakeTime",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pancakeSwapFactory",
"type": "address"
}
],
"name": "setPancakeSwapFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_pancakeSwapRouter",
"type": "address"
}
],
"name": "setPancakeSwapRouter",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_presaleGrantAmount",
"type": "uint256"
}
],
"name": "setPresaleGrantAmount",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_wbnb",
"type": "address"
}
],
"name": "setWBNB",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"claimOwnership()": {
"details": "PendingOwner can accept ownership."
},
"transferOwnership(address)": {
"details": "Allows the current owner to set the pendingOwner address.",
"params": {
"_newOwner": "The address to transfer ownership to."
}
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/BSCstarterInfo.sol": "BSCstarterInfo"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/BSCstarterInfo.sol": {
"keccak256": "0xab6b8e73f3a33ce040e930aec09ebc9e61909e85a451312ec93afb28159efb62",
"license": "MIT",
"urls": [
"bzz-raw://0b9e802ecc92683a559541e0918d62013a2840a82e9b76eb63a0089b9746a4b4",
"dweb:/ipfs/QmRLK2JV5hVf2s6kaHC39cBZZtxn4jZGC2JhUW5VknxE6C"
]
},
"contracts/IERC20.sol": {
"keccak256": "0x03544d3d2e0ba629bb2e9fa9f1e2efd99aa11608b85140fbaca7bcc95fa4fbad",
"license": "MIT",
"urls": [
"bzz-raw://e1887bab7f6d22092b02e6ba8182c164e41d77ebeb2bff9d06c47d7f9b2c5dbd",
"dweb:/ipfs/QmVW67x7K9q4oZmPR72zGnwxmCL3WycmVSPakLR8wyt1sW"
]
},
"contracts/Ownable.sol": {
"keccak256": "0x977c3ff6dda86587932937f3a65240b3d8c5f8734cf77e307bc8e5c5453326e9",
"license": "MIT",
"urls": [
"bzz-raw://9faf4462735ef133e27f1d5f03d9170765b904c164eb8a6532a2dfa5e7d0e3b5",
"dweb:/ipfs/QmVxQKGKcFvNb4LqqcJJQAxsk2RckED7teViGrY3nqBNr3"
]
},
"contracts/STARTPresale.sol": {
"keccak256": "0x5d2593d231ae76d62446384c7285d59c9d84bb003c6e3a59eab2b300535971bf",
"license": "MIT",
"urls": [
"bzz-raw://4f081a0250c7da75615539a1fa6df1d792db93552f345297e875c8e2200abaed",
"dweb:/ipfs/QmQUCo7tgS1GpHKTciEfL6Ne42h9xxyhpqfWg1c5Y5GRUT"
]
},
"contracts/SafeMath.sol": {
"keccak256": "0x0b09157bd0d65909e80d13db9433648e3117c174c3204e843e51d3362763ee76",
"license": "MIT",
"urls": [
"bzz-raw://1655f5fc8a364fddb677a50f493b74a833c9a6dd7fe408653e12c897e73cbfaf",
"dweb:/ipfs/Qmd1wqVMQxKXdVsA9AHiuqq74gSy59NUoQLwgG2xuX8oKH"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Context.sol": "Context"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Context.sol": {
"keccak256": "0x4ae949797ab5d26ad7f5341e9e95ba1899eb611d4d59b19ef05030fe42aa498d",
"license": "MIT",
"urls": [
"bzz-raw://850035fd59fa416f61efe9bb4d99f3293c9594c91cd1d7eb1b5fe5f2639cb914",
"dweb:/ipfs/QmSKahpEXoyLW1TkuDWv76YJCJYxHiFXPpVxSYqsNuwuSm"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {
"allowance(address,address)": "dd62ed3e",
"approve(address,uint256)": "095ea7b3",
"balanceOf(address)": "70a08231",
"totalSupply()": "18160ddd",
"transfer(address,uint256)": "a9059cbb",
"transferFrom(address,address,uint256)": "23b872dd"
}
},
"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"
}
]
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"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": {
"contracts/IERC20.sol": "IERC20"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/IERC20.sol": {
"keccak256": "0x03544d3d2e0ba629bb2e9fa9f1e2efd99aa11608b85140fbaca7bcc95fa4fbad",
"license": "MIT",
"urls": [
"bzz-raw://e1887bab7f6d22092b02e6ba8182c164e41d77ebeb2bff9d06c47d7f9b2c5dbd",
"dweb:/ipfs/QmVW67x7K9q4oZmPR72zGnwxmCL3WycmVSPakLR8wyt1sW"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610439806100a26000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634e71e0c8146100515780638da5cb5b1461005b578063e30c39781461008f578063f2fde38b146100c3575b600080fd5b610059610107565b005b6100636102a3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100976102c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610105600480360360208110156100d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102ed565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461016157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f897d3c8bbea11029ba3b26eb993fe8edb14c2c4c0d2ecceccce41d1d83d3e35960405160405180910390a3565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f83ada3430836f9d4bd6f7bc690ffbba5199cb19b37393dd64c2299302135359660405160405180910390a35056fea2646970667358221220b659faf91dcadd45d20195c25199d67da438ac706d702c478413e4964c4dd6fc64736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x439 DUP1 PUSH2 0xA2 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E71E0C8 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x107 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x97 PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x105 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2ED JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x897D3C8BBEA11029BA3B26EB993FE8EDB14C2C4C0D2ECCECCCE41D1D83D3E359 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x83ADA3430836F9D4BD6F7BC690FFBBA5199CB19B37393DD64C22993021353596 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 MSIZE STATICCALL 0xF9 SAR 0xCA 0xDD GASLIMIT 0xD2 ADD SWAP6 0xC2 MLOAD SWAP10 0xD6 PUSH30 0xA438AC706D702C478413E4964C4DD6FC64736F6C634300060C0033000000 ",
"sourceMap": "152:1369:0:-:0;;;858:91;;;;;;;;;;897:10;889:5;;:18;;;;;;;;;;;;;;;;;;940:1;917:12;;:25;;;;;;;;;;;;;;;;;;152:1369;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80634e71e0c8146100515780638da5cb5b1461005b578063e30c39781461008f578063f2fde38b146100c3575b600080fd5b610059610107565b005b6100636102a3565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100976102c7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610105600480360360208110156100d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506102ed565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461016157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f897d3c8bbea11029ba3b26eb993fe8edb14c2c4c0d2ecceccce41d1d83d3e35960405160405180910390a3565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461034557600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f83ada3430836f9d4bd6f7bc690ffbba5199cb19b37393dd64c2299302135359660405160405180910390a35056fea2646970667358221220b659faf91dcadd45d20195c25199d67da438ac706d702c478413e4964c4dd6fc64736f6c634300060c0033",
"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 0x4E71E0C8 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0xC3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0x107 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x63 PUSH2 0x2A3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x97 PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x105 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2ED JUMP JUMPDEST STOP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x897D3C8BBEA11029BA3B26EB993FE8EDB14C2C4C0D2ECCECCCE41D1D83D3E359 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x345 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x83ADA3430836F9D4BD6F7BC690FFBBA5199CB19B37393DD64C22993021353596 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 MSIZE STATICCALL 0xF9 SAR 0xCA 0xDD GASLIMIT 0xD2 ADD SWAP6 0xC2 MLOAD SWAP10 0xD6 PUSH30 0xA438AC706D702C478413E4964C4DD6FC64736F6C634300060C0033000000 ",
"sourceMap": "152:1369:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1338:181;;;:::i;:::-;;175:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;201:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1103:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1338:181;755:12;;;;;;;;;;;741:26;;:10;:26;;;733:35;;;;;;1406:12:::1;;;;;;;;;;;1398:5;::::0;:20:::1;;;;;;;;;;;;;;;;;;1451:1;1428:12;;:25;;;;;;;;;;;;;;;;;;1499:12;;;;;;;;;;;1468:44;;1492:5;::::0;::::1;;;;;;;;1468:44;;;;;;;;;;;;1338:181::o:0;175:20::-;;;;;;;;;;;;:::o;201:27::-;;;;;;;;;;;;;:::o;1103:166::-;567:5;;;;;;;;;;553:19;;:10;:19;;;545:28;;;;;;1191:9:::1;1176:12;;:24;;;;;;;;;;;;;;;;;;1252:9;1215:47;;1245:5;::::0;::::1;;;;;;;;1215:47;;;;;;;;;;;;1103:166:::0;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "216200",
"executionCost": "41990",
"totalCost": "258190"
},
"external": {
"claimOwnership()": "46776",
"owner()": "1044",
"pendingOwner()": "1069",
"transferOwnership(address)": "24390"
}
},
"methodIdentifiers": {
"claimOwnership()": "4e71e0c8",
"owner()": "8da5cb5b",
"pendingOwner()": "e30c3978",
"transferOwnership(address)": "f2fde38b"
}
},
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "claimOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferInitiated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "LogOwnerShipTransferred",
"type": "event"
},
{
"inputs": [],
"name": "claimOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "pendingOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"author": "dicether",
"details": "Basic contract for authorization control.",
"kind": "dev",
"methods": {
"claimOwnership()": {
"details": "PendingOwner can accept ownership."
},
"constructor": {
"details": "Set contract creator as initial owner"
},
"transferOwnership(address)": {
"details": "Allows the current owner to set the pendingOwner address.",
"params": {
"_newOwner": "The address to transfer ownership to."
}
}
},
"title": "Owned",
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/Ownable.sol": "Ownable"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/Ownable.sol": {
"keccak256": "0x977c3ff6dda86587932937f3a65240b3d8c5f8734cf77e307bc8e5c5453326e9",
"license": "MIT",
"urls": [
"bzz-raw://9faf4462735ef133e27f1d5f03d9170765b904c164eb8a6532a2dfa5e7d0e3b5",
"dweb:/ipfs/QmVxQKGKcFvNb4LqqcJJQAxsk2RckED7teViGrY3nqBNr3"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "",
"opcodes": "",
"sourceMap": ""
},
"gasEstimates": null,
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"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": {
"contracts/ReentrancyGuard.sol": "ReentrancyGuard"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/ReentrancyGuard.sol": {
"keccak256": "0xe929e6eeb7cd3ec059f8e9c5bb2997aff2db04817da26e1eac854a324bd793e7",
"license": "MIT",
"urls": [
"bzz-raw://6ef7831aa1c506aaaaaa92ef687db3731d2d0e88761c41b312744a8b0f642599",
"dweb:/ipfs/QmfRvL4mbLSuutMBapqHTHUB8Wj8RnFrS9TmMKcwj15TGU"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dedb87dfdfb7d0fe293a80cbd041213c29c9bcf00f07908ba6b01fe24a03b4e64736f6c634300060c0033",
"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 0x5D 0xED 0xB8 PUSH30 0xFDFB7D0FE293A80CBD041213C29C9BCF00F07908BA6B01FE24A03B4E6473 PUSH16 0x6C634300060C00330000000000000000 ",
"sourceMap": "674:4578:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205dedb87dfdfb7d0fe293a80cbd041213c29c9bcf00f07908ba6b01fe24a03b4e64736f6c634300060c0033",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xED 0xB8 PUSH30 0xFDFB7D0FE293A80CBD041213C29C9BCF00F07908BA6B01FE24A03B4E6473 PUSH16 0x6C634300060C00330000000000000000 ",
"sourceMap": "674:4578:0:-:0;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17200",
"executionCost": "97",
"totalCost": "17297"
},
"internal": {
"add(uint256,uint256)": "infinite",
"div(uint256,uint256)": "infinite",
"div(uint256,uint256,string memory)": "infinite",
"mod(uint256,uint256)": "infinite",
"mod(uint256,uint256,string memory)": "infinite",
"mul(uint256,uint256)": "infinite",
"sub(uint256,uint256)": "infinite",
"sub(uint256,uint256,string memory)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"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": {
"contracts/SafeMath.sol": "SafeMath"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/SafeMath.sol": {
"keccak256": "0x0b09157bd0d65909e80d13db9433648e3117c174c3204e843e51d3362763ee76",
"license": "MIT",
"urls": [
"bzz-raw://1655f5fc8a364fddb677a50f493b74a833c9a6dd7fe408653e12c897e73cbfaf",
"dweb:/ipfs/Qmd1wqVMQxKXdVsA9AHiuqq74gSy59NUoQLwgG2xuX8oKH"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "608060405262278d006012556000601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055506000601360026101000a81548160ff0219169083151502179055506000601360036101000a81548160ff02191690831515021790555034801561008357600080fd5b50604051620035e8380380620035e8833981810160405260208110156100a857600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100f357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506134a480620001446000396000f3fe6080604052600436106102805760003560e01c806389771dd81161014f578063c51d16b6116100c1578063d6c86b1b1161007a578063d6c86b1b14610ccd578063e861e34d14610cf8578063e8b5e51f14610d23578063ebc9afcc14610d2d578063f59eb57514610e2a578063fc0c546a14610e415761028f565b8063c51d16b614610ad9578063c6a4266914610b04578063c884ef8314610b2f578063ca2cfc2014610b94578063d5933c2c14610c1a578063d64d313814610c475761028f565b8063b13aaebd11610113578063b13aaebd146109e9578063b2d5ae4414610a14578063b31f8f9314610a2b578063b425688814610a56578063bc89ff2b14610a81578063c502b13b14610aae5761028f565b806389771dd8146108c257806396b98862146108ed5780639767b58c146109525780639fa1eccc1461097d578063a2460d2e146109a85761028f565b80633fa911ae116101f35780637275ae14116101ac5780637275ae14146106c457806374458306146106ef578063762789a81461071a5780637e1c0c09146107555780637f0feacc14610780578063872f0b97146108955761028f565b80633fa911ae1461058c578063411db1ad146105b957806345af6115146105fa57806348c54b9d1461066b578063627749e6146106825780636cb96287146106ad5761028f565b806316bc4f0e1161024557806316bc4f0e146103935780631c194ba9146103fa5780631c3cb1771461047c578063245fc183146104b95780632b24a878146104f45780632f8de810146105615761028f565b80629948361461029457806306c933d8146102bf5780630ca99ca8146103265780630cdc1fc5146103515780630ce40c8f1461037c5761028f565b3661028f5761028d610e82565b005b600080fd5b3480156102a057600080fd5b506102a96113c4565b6040518082815260200191505060405180910390f35b3480156102cb57600080fd5b5061030e600480360360208110156102e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113ca565b60405180821515815260200191505060405180910390f35b34801561033257600080fd5b5061033b6113ea565b6040518082815260200191505060405180910390f35b34801561035d57600080fd5b506103666113f0565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b506103916113f6565b005b34801561039f57600080fd5b506103e2600480360360208110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169f565b60405180821515815260200191505060405180910390f35b34801561040657600080fd5b5061047a600480360361010081101561041e57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506116bf565b005b34801561048857600080fd5b506104b76004803603602081101561049f57600080fd5b810190808035151590602001909291905050506117e6565b005b3480156104c557600080fd5b506104f2600480360360208110156104dc57600080fd5b810190808035906020019092919050505061185b565b005b34801561050057600080fd5b5061055f600480360360c081101561051757600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506118bd565b005b34801561056d57600080fd5b50610576611947565b6040518082815260200191505060405180910390f35b34801561059857600080fd5b506105a161194d565b60405180821515815260200191505060405180910390f35b3480156105c557600080fd5b506105ce611960565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060657600080fd5b506106696004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611984565b005b34801561067757600080fd5b50610680611ad6565b005b34801561068e57600080fd5b506106976120c6565b6040518082815260200191505060405180910390f35b3480156106b957600080fd5b506106c26120cc565b005b3480156106d057600080fd5b506106d96121b1565b6040518082815260200191505060405180910390f35b3480156106fb57600080fd5b506107046121b7565b6040518082815260200191505060405180910390f35b34801561072657600080fd5b506107536004803603602081101561073d57600080fd5b81019080803590602001909291905050506121bd565b005b34801561076157600080fd5b5061076a612265565b6040518082815260200191505060405180910390f35b34801561078c57600080fd5b5061079561226b565b60405180868152602001851515815260200184151581526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156107ef5780820151818401526020810190506107d4565b50505050905090810190601f16801561081c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561085557808201518184015260208101905061083a565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156108a157600080fd5b506108aa6123d9565b60405180821515815260200191505060405180910390f35b3480156108ce57600080fd5b506108d76123ec565b6040518082815260200191505060405180910390f35b3480156108f957600080fd5b5061093c6004803603602081101561091057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123f2565b6040518082815260200191505060405180910390f35b34801561095e57600080fd5b5061096761240a565b6040518082815260200191505060405180910390f35b34801561098957600080fd5b50610992612410565b6040518082815260200191505060405180910390f35b3480156109b457600080fd5b506109bd612416565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109f557600080fd5b506109fe61243c565b6040518082815260200191505060405180910390f35b348015610a2057600080fd5b50610a29612442565b005b348015610a3757600080fd5b50610a406129df565b6040518082815260200191505060405180910390f35b348015610a6257600080fd5b50610a6b6129e5565b6040518082815260200191505060405180910390f35b348015610a8d57600080fd5b50610a966129eb565b60405180821515815260200191505060405180910390f35b348015610aba57600080fd5b50610ac36129fe565b6040518082815260200191505060405180910390f35b348015610ae557600080fd5b50610aee612a04565b6040518082815260200191505060405180910390f35b348015610b1057600080fd5b50610b19612a0a565b6040518082815260200191505060405180910390f35b348015610b3b57600080fd5b50610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a10565b6040518082815260200191505060405180910390f35b348015610ba057600080fd5b50610c1860048036036020811015610bb757600080fd5b8101908080359060200190640100000000811115610bd457600080fd5b820183602082011115610be657600080fd5b80359060200191846020830284011164010000000083111715610c0857600080fd5b9091929391929390505050612a28565b005b348015610c2657600080fd5b50610c2f612b20565b60405180821515815260200191505060405180910390f35b348015610c5357600080fd5b50610ccb60048036036020811015610c6a57600080fd5b8101908080359060200190640100000000811115610c8757600080fd5b820183602082011115610c9957600080fd5b80359060200191846020830284011164010000000083111715610cbb57600080fd5b9091929391929390505050612b33565b005b348015610cd957600080fd5b50610ce2612c2b565b6040518082815260200191505060405180910390f35b348015610d0457600080fd5b50610d0d612c31565b6040518082815260200191505060405180910390f35b610d2b610e82565b005b348015610d3957600080fd5b50610e28600480360360a0811015610d5057600080fd5b810190808035906020019092919080351515906020019092919080351515906020019092919080359060200190640100000000811115610d8f57600080fd5b820183602082011115610da157600080fd5b80359060200191846001830284011164010000000083111715610dc357600080fd5b909192939192939080359060200190640100000000811115610de457600080fd5b820183602082011115610df657600080fd5b80359060200191846001830284011164010000000083111715610e1857600080fd5b9091929391929390505050612c37565b005b348015610e3657600080fd5b50610e3f612d6d565b005b348015610e4d57600080fd5b50610e5661302a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206e6f742077686974656c697374656400000000000000000081525060200191505060405180910390fd5b601360009054906101000a900460ff1615610fc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f43616e63656c6c6564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600f5442101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420796574206f70656e656400000000000000000000000000000000000081525060200191505060405180910390fd5b60105442106110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f436c6f736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600b546007541061112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f486172642063617020726561636865640000000000000000000000000000000081525060200191505060405180910390fd5b60006009541161113b57600080fd5b611152600a5460095461305090919063ffffffff16565b34111561115e57600080fd5b60006111b234600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d690919063ffffffff16565b9050600e54811015806111e357506111dd670de0b6b3a7640000600b5461315e90919063ffffffff16565b60075410155b611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d696e20696e766573746d656e74206e6f74207265616368656400000000000081525060200191505060405180910390fd5b6000600d5414806112685750600d548111155b6112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d617820696e766573746d656e7420726561636865640000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561133f5761133860016006546130d690919063ffffffff16565b6006819055505b611354346007546130d690919063ffffffff16565b60078190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113bb6113aa346131a8565b60095461315e90919063ffffffff16565b60098190555050565b60115481565b60046020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60165481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a657600080fd5b601360009054906101000a900460ff16156114c057600080fd5b6001601360006101000a81548160ff0219169083151502179055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561156657600080fd5b505afa15801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b81019080805190602001909291905050509050600081111561169c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561165f57600080fd5b505af1158015611673573d6000803e3d6000fd5b505050506040513d602081101561168957600080fd5b8101908080519060200190929190505050505b50565b601a6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171757600080fd5b6000881161172457600080fd5b6000871161173157600080fd5b6000821161173e57600080fd5b6000811161174b57600080fd5b6000861161175857600080fd5b61176b878961305090919063ffffffff16565b86111561177757600080fd5b8585111561178457600080fd5b8383111561179157600080fd5b80821061179d57600080fd5b876008819055508760098190555086600a8190555085600b8190555084600c8190555083600d8190555082600e8190555081600f81905550806010819055505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183e57600080fd5b80601360016101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b357600080fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191557600080fd5b856014819055508460158190555083601781905550826016819055508160188190555080601981905550505050505050565b600a5481565b601360019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119dc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a1657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a5057600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206e6f742077686974656c697374656400000000000000000081525060200191505060405180910390fd5b601360009054906101000a900460ff1615611c18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f43616e63656c6c6564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611ccd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420616e20696e766573746f72000000000000000000000000000000000081525060200191505060405180910390fd5b60006011544210158015611ce657506012546011540142105b15611cf057600190505b601254601154014210158015611d0e57506002601254026011540142105b15611d1857600290505b600260125402601154014210158015611d3957506003601254026011540142105b15611d4357600390505b600360125402601154014210611d5857600490505b60008111611dce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4c697374696e67206e6f7420737461727465640000000000000000000000000081525060200191505060405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f416c726561647920636c61696d6564206f7220726566756e646564000000000081525060200191505060405180910390fd5b601360029054906101000a900460ff16611f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436c61696d20697320646973616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b611f576001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d690919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361203461202f6004600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e090919063ffffffff16565b6131a8565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b505050506040513d60208110156120b157600080fd5b81019080805190602001909291905050505050565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212457600080fd5b601360009054906101000a900460ff161561213e57600080fd5b60004711156121af5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156121ad573d6000803e3d6000fd5b505b565b60065481565b60155481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461221557600080fd5b6000811161222257600080fd5b60006010541161223157600080fd5b60105481101561224057600080fd5b6001601360026101000a81548160ff0219169083151502179055508060118190555050565b60085481565b601b8060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff1690806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123315780601f1061230657610100808354040283529160200191612331565b820191906000526020600020905b81548152906001019060200180831161231457829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cf5780601f106123a4576101008083540402835291602001916123cf565b820191906000526020600020905b8154815290600101906020018083116123b257829003601f168201915b5050505050905085565b601360029054906101000a900460ff1681565b60185481565b60036020528060005260406000206000915090505481565b60175481565b600d5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206e6f742077686974656c697374656400000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116125b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420616e20696e766573746f72000000000000000000000000000000000081525060200191505060405180910390fd5b601360019054906101000a900460ff16612638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f526566756e6420697320646973616c6c6f77656400000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900460ff166128e357600f544210156126c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420796574206f70656e656400000000000000000000000000000000000081525060200191505060405180910390fd5b60105442101561273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f742079657420636c6f73656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c54116127b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f20736f66742063617000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600c546007541061282d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f536f66742063617020726561636865640000000000000000000000000000000081525060200191505060405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146128e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f416c726561647920636c61696d6564000000000000000000000000000000000081525060200191505060405180910390fd5b5b6004600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060004790506000811161297e57600080fd5b8082111561298a578091505b60008211156129db573373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156129d9573d6000803e3d6000fd5b505b5050565b60095481565b600f5481565b601360039054906101000a900460ff1681565b60145481565b60075481565b60195481565b60056020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a8057600080fd5b60005b82829050811015612b1b57600160046000858585818110612aa057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612a83565b505050565b601360009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b8b57600080fd5b60005b82829050811015612c26576001601a6000858585818110612bab57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612b8e565b505050565b600c5481565b600e5481565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f41756469746f722041646472657373206e6f742077686974656c69737465640081525060200191505060405180910390fd5b86601b6000018190555085601b60010160006101000a81548160ff02191690831515021790555084601b60010160016101000a81548160ff0219169083151502179055508383601b6002019190612d4e9291906133b0565b508181601b6003019190612d639291906133b0565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dc557600080fd5b601360009054906101000a900460ff1615612e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f43616e63656c6c6564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000612f2a612e586007546131a8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ee157600080fd5b505afa158015612ef5573d6000803e3d6000fd5b505050506040513d6020811015612f0b57600080fd5b810190808051906020019092919050505061315e90919063ffffffff16565b9050600081111561302757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d602081101561301457600080fd5b8101908080519060200190929190505050505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561306357600090506130d0565b600082840290508284828161307457fe5b04146130cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061344e6021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015613154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006131a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061322a565b905092915050565b60006131d9600a546131cb670de0b6b3a76400008561305090919063ffffffff16565b6131e090919063ffffffff16565b9050919050565b600061322283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ea565b905092915050565b60008383111582906132d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561329c578082015181840152602081019050613281565b50505050905090810190601f1680156132c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290613396576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561335b578082015181840152602081019050613340565b50505050905090810190601f1680156133885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816133a257fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106133f157803560ff191683800117855561341f565b8280016001018555821561341f579182015b8281111561341e578235825591602001919060010190613403565b5b50905061342c9190613430565b5090565b5b80821115613449576000816000905550600101613431565b509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f78b9719fdff947f8e7d59de59bd2ac4b3ed3deebf677232bf56b8732c0a109b64736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH3 0x278D00 PUSH1 0x12 SSTORE PUSH1 0x0 PUSH1 0x13 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x13 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x13 PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x13 PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP CALLVALUE DUP1 ISZERO PUSH2 0x83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x35E8 CODESIZE SUB DUP1 PUSH3 0x35E8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP PUSH2 0x34A4 DUP1 PUSH3 0x144 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x280 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x89771DD8 GT PUSH2 0x14F JUMPI DUP1 PUSH4 0xC51D16B6 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xD6C86B1B GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD6C86B1B EQ PUSH2 0xCCD JUMPI DUP1 PUSH4 0xE861E34D EQ PUSH2 0xCF8 JUMPI DUP1 PUSH4 0xE8B5E51F EQ PUSH2 0xD23 JUMPI DUP1 PUSH4 0xEBC9AFCC EQ PUSH2 0xD2D JUMPI DUP1 PUSH4 0xF59EB575 EQ PUSH2 0xE2A JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0xE41 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0xC51D16B6 EQ PUSH2 0xAD9 JUMPI DUP1 PUSH4 0xC6A42669 EQ PUSH2 0xB04 JUMPI DUP1 PUSH4 0xC884EF83 EQ PUSH2 0xB2F JUMPI DUP1 PUSH4 0xCA2CFC20 EQ PUSH2 0xB94 JUMPI DUP1 PUSH4 0xD5933C2C EQ PUSH2 0xC1A JUMPI DUP1 PUSH4 0xD64D3138 EQ PUSH2 0xC47 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0xB13AAEBD GT PUSH2 0x113 JUMPI DUP1 PUSH4 0xB13AAEBD EQ PUSH2 0x9E9 JUMPI DUP1 PUSH4 0xB2D5AE44 EQ PUSH2 0xA14 JUMPI DUP1 PUSH4 0xB31F8F93 EQ PUSH2 0xA2B JUMPI DUP1 PUSH4 0xB4256888 EQ PUSH2 0xA56 JUMPI DUP1 PUSH4 0xBC89FF2B EQ PUSH2 0xA81 JUMPI DUP1 PUSH4 0xC502B13B EQ PUSH2 0xAAE JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x89771DD8 EQ PUSH2 0x8C2 JUMPI DUP1 PUSH4 0x96B98862 EQ PUSH2 0x8ED JUMPI DUP1 PUSH4 0x9767B58C EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0x9FA1ECCC EQ PUSH2 0x97D JUMPI DUP1 PUSH4 0xA2460D2E EQ PUSH2 0x9A8 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x3FA911AE GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x7275AE14 GT PUSH2 0x1AC JUMPI DUP1 PUSH4 0x7275AE14 EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x74458306 EQ PUSH2 0x6EF JUMPI DUP1 PUSH4 0x762789A8 EQ PUSH2 0x71A JUMPI DUP1 PUSH4 0x7E1C0C09 EQ PUSH2 0x755 JUMPI DUP1 PUSH4 0x7F0FEACC EQ PUSH2 0x780 JUMPI DUP1 PUSH4 0x872F0B97 EQ PUSH2 0x895 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x3FA911AE EQ PUSH2 0x58C JUMPI DUP1 PUSH4 0x411DB1AD EQ PUSH2 0x5B9 JUMPI DUP1 PUSH4 0x45AF6115 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x48C54B9D EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x627749E6 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0x6CB96287 EQ PUSH2 0x6AD JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x16BC4F0E GT PUSH2 0x245 JUMPI DUP1 PUSH4 0x16BC4F0E EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x1C194BA9 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x1C3CB177 EQ PUSH2 0x47C JUMPI DUP1 PUSH4 0x245FC183 EQ PUSH2 0x4B9 JUMPI DUP1 PUSH4 0x2B24A878 EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0x2F8DE810 EQ PUSH2 0x561 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH3 0x994836 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x6C933D8 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xCA99CA8 EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0xCDC1FC5 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xCE40C8F EQ PUSH2 0x37C JUMPI PUSH2 0x28F JUMP JUMPDEST CALLDATASIZE PUSH2 0x28F JUMPI PUSH2 0x28D PUSH2 0xE82 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x13CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33B PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x366 PUSH2 0x13F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x391 PUSH2 0x13F6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x169F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x16BF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x17E6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x185B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x55F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x18BD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x576 PUSH2 0x1947 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A1 PUSH2 0x194D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CE PUSH2 0x1960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x669 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1984 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x680 PUSH2 0x1AD6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x697 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C2 PUSH2 0x20CC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D9 PUSH2 0x21B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x704 PUSH2 0x21B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x753 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x21BD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x76A PUSH2 0x2265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x795 PUSH2 0x226B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 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 0x7EF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7D4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x81C 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 DUP4 DUP2 SUB DUP3 MSTORE DUP5 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 0x855 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x83A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x882 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8AA PUSH2 0x23D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D7 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x967 PUSH2 0x240A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x992 PUSH2 0x2410 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9BD PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9FE PUSH2 0x243C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA29 PUSH2 0x2442 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA40 PUSH2 0x29DF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6B PUSH2 0x29E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA96 PUSH2 0x29EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAC3 PUSH2 0x29FE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAEE PUSH2 0x2A04 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB19 PUSH2 0x2A0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC18 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBE6 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 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2A28 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2F PUSH2 0x2B20 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCCB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 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 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2B33 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE2 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD0D PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD2B PUSH2 0xE82 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE28 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xD50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA1 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 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDF6 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 0xE18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2C37 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3F PUSH2 0x2D6D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE56 PUSH2 0x302A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xF41 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41646472657373206E6F742077686974656C6973746564000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xFC4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E63656C6C65640000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xF SLOAD TIMESTAMP LT ISZERO PUSH2 0x103C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420796574206F70656E6564000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x10 SLOAD TIMESTAMP LT PUSH2 0x10B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x436C6F7365640000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH1 0x7 SLOAD LT PUSH2 0x112C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4861726420636170207265616368656400000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD GT PUSH2 0x113B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1152 PUSH1 0xA SLOAD PUSH1 0x9 SLOAD PUSH2 0x3050 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST CALLVALUE GT ISZERO PUSH2 0x115E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11B2 CALLVALUE PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0xE SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x11E3 JUMPI POP PUSH2 0x11DD PUSH8 0xDE0B6B3A7640000 PUSH1 0xB SLOAD PUSH2 0x315E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 SLOAD LT ISZERO JUMPDEST PUSH2 0x1255 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D696E20696E766573746D656E74206E6F742072656163686564000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD EQ DUP1 PUSH2 0x1268 JUMPI POP PUSH1 0xD SLOAD DUP2 GT ISZERO JUMPDEST PUSH2 0x12DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D617820696E766573746D656E74207265616368656400000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO PUSH2 0x133F JUMPI PUSH2 0x1338 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH2 0x1354 CALLVALUE PUSH1 0x7 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x13BB PUSH2 0x13AA CALLVALUE PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x315E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x144E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x14A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x14C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x13 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x157A 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 0x1590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x169C JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x165F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1673 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 0x1689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 GT PUSH2 0x1724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP8 GT PUSH2 0x1731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x173E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x174B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP7 GT PUSH2 0x1758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x176B DUP8 DUP10 PUSH2 0x3050 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 GT ISZERO PUSH2 0x1784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 GT ISZERO PUSH2 0x1791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 LT PUSH2 0x179D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x8 DUP2 SWAP1 SSTORE POP DUP8 PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP7 PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0xB DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0xC DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0xD DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0xE DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xF DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x10 DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x183E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x13 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x12 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x14 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x15 DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x17 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x16 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x18 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x19 DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x19DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41646472657373206E6F742077686974656C6973746564000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1C18 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E63656C6C65640000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x1CCD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420616E20696E766573746F720000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x11 SLOAD TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0x1CE6 JUMPI POP PUSH1 0x12 SLOAD PUSH1 0x11 SLOAD ADD TIMESTAMP LT JUMPDEST ISZERO PUSH2 0x1CF0 JUMPI PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x11 SLOAD ADD TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0x1D0E JUMPI POP PUSH1 0x2 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT JUMPDEST ISZERO PUSH2 0x1D18 JUMPI PUSH1 0x2 SWAP1 POP JUMPDEST PUSH1 0x2 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0x1D39 JUMPI POP PUSH1 0x3 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT JUMPDEST ISZERO PUSH2 0x1D43 JUMPI PUSH1 0x3 SWAP1 POP JUMPDEST PUSH1 0x3 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT PUSH2 0x1D58 JUMPI PUSH1 0x4 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1DCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4C697374696E67206E6F74207374617274656400000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT PUSH2 0x1E82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920636C61696D6564206F7220726566756E6465640000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1F04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x436C61696D20697320646973616C6C6F77656400000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F57 PUSH1 0x1 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER PUSH2 0x2034 PUSH2 0x202F PUSH1 0x4 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x31E0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2087 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209B 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 0x20B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x213E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SELFBALANCE GT ISZERO PUSH2 0x21AF JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x21AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x2222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x10 SLOAD GT PUSH2 0x2231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 SLOAD DUP2 LT ISZERO PUSH2 0x2240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x13 PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x11 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1B DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2331 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2306 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2331 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 0x2314 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x23CF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x23A4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x23CF 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 0x23B2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP6 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2501 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41646472657373206E6F742077686974656C6973746564000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x25B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420616E20696E766573746F720000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2638 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x526566756E6420697320646973616C6C6F776564000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x28E3 JUMPI PUSH1 0xF SLOAD TIMESTAMP LT ISZERO PUSH2 0x26C4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420796574206F70656E6564000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x10 SLOAD TIMESTAMP LT ISZERO PUSH2 0x273C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F742079657420636C6F736564000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD GT PUSH2 0x27B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F20736F667420636170000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xC SLOAD PUSH1 0x7 SLOAD LT PUSH2 0x282D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536F667420636170207265616368656400000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ PUSH2 0x28E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920636C61696D65640000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x4 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 SELFBALANCE SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x297E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x298A JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP3 GT ISZERO PUSH2 0x29DB JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP4 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x29D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP3 SWAP1 POP DUP2 LT ISZERO PUSH2 0x2B1B JUMPI PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2AA0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2A83 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP3 SWAP1 POP DUP2 LT ISZERO PUSH2 0x2C26 JUMPI PUSH1 0x1 PUSH1 0x1A PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2BAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2B8E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2CF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41756469746F722041646472657373206E6F742077686974656C697374656400 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 PUSH1 0x1B PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1B PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x1B PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP4 DUP4 PUSH1 0x1B PUSH1 0x2 ADD SWAP2 SWAP1 PUSH2 0x2D4E SWAP3 SWAP2 SWAP1 PUSH2 0x33B0 JUMP JUMPDEST POP DUP2 DUP2 PUSH1 0x1B PUSH1 0x3 ADD SWAP2 SWAP1 PUSH2 0x2D63 SWAP3 SWAP2 SWAP1 PUSH2 0x33B0 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2DC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2E48 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E63656C6C65640000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F2A PUSH2 0x2E58 PUSH1 0x7 SLOAD PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EF5 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 0x2F0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x315E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3027 JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FFE 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 0x3014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x3063 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x30D0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x3074 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x30CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x344E PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3154 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x322A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31D9 PUSH1 0xA SLOAD PUSH2 0x31CB PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x3050 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x31E0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3222 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x32EA JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0x32D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 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 0x329C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3281 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x32C9 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP3 SWAP1 PUSH2 0x3396 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 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 0x335B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3340 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3388 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x33A2 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP 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 PUSH2 0x33F1 JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x341F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x341F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x341E JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3403 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x342C SWAP2 SWAP1 PUSH2 0x3430 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3449 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3431 JUMP JUMPDEST POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 0xF7 DUP12 SWAP8 NOT REVERT SELFDESTRUCT SWAP5 PUSH32 0x8E7D59DE59BD2AC4B3ED3DEEBF677232BF56B8732C0A109B64736F6C63430006 0xC STOP CALLER ",
"sourceMap": "106:12027:1:-:0;;;1780:7;1752:35;;1825:5;1794:36;;;;;;;;;;;;;;;;;;;;1973:5;1945:33;;;;;;;;;;;;;;;;;;;;2063:5;2036:32;;;;;;;;;;;;;;;;;;;;2139:5;2115:29;;;;;;;;;;;;;;;;;;;;2872:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2961:1;2934:29;;:15;:29;;;;2926:38;;;;;;3000:15;2975:14;;:41;;;;;;;;;;;;;;;;;;2872:151;106:12027;;;;;;"
},
"deployedBytecode": {
"immutableReferences": {},
"linkReferences": {},
"object": "6080604052600436106102805760003560e01c806389771dd81161014f578063c51d16b6116100c1578063d6c86b1b1161007a578063d6c86b1b14610ccd578063e861e34d14610cf8578063e8b5e51f14610d23578063ebc9afcc14610d2d578063f59eb57514610e2a578063fc0c546a14610e415761028f565b8063c51d16b614610ad9578063c6a4266914610b04578063c884ef8314610b2f578063ca2cfc2014610b94578063d5933c2c14610c1a578063d64d313814610c475761028f565b8063b13aaebd11610113578063b13aaebd146109e9578063b2d5ae4414610a14578063b31f8f9314610a2b578063b425688814610a56578063bc89ff2b14610a81578063c502b13b14610aae5761028f565b806389771dd8146108c257806396b98862146108ed5780639767b58c146109525780639fa1eccc1461097d578063a2460d2e146109a85761028f565b80633fa911ae116101f35780637275ae14116101ac5780637275ae14146106c457806374458306146106ef578063762789a81461071a5780637e1c0c09146107555780637f0feacc14610780578063872f0b97146108955761028f565b80633fa911ae1461058c578063411db1ad146105b957806345af6115146105fa57806348c54b9d1461066b578063627749e6146106825780636cb96287146106ad5761028f565b806316bc4f0e1161024557806316bc4f0e146103935780631c194ba9146103fa5780631c3cb1771461047c578063245fc183146104b95780632b24a878146104f45780632f8de810146105615761028f565b80629948361461029457806306c933d8146102bf5780630ca99ca8146103265780630cdc1fc5146103515780630ce40c8f1461037c5761028f565b3661028f5761028d610e82565b005b600080fd5b3480156102a057600080fd5b506102a96113c4565b6040518082815260200191505060405180910390f35b3480156102cb57600080fd5b5061030e600480360360208110156102e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113ca565b60405180821515815260200191505060405180910390f35b34801561033257600080fd5b5061033b6113ea565b6040518082815260200191505060405180910390f35b34801561035d57600080fd5b506103666113f0565b6040518082815260200191505060405180910390f35b34801561038857600080fd5b506103916113f6565b005b34801561039f57600080fd5b506103e2600480360360208110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061169f565b60405180821515815260200191505060405180910390f35b34801561040657600080fd5b5061047a600480360361010081101561041e57600080fd5b8101908080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506116bf565b005b34801561048857600080fd5b506104b76004803603602081101561049f57600080fd5b810190808035151590602001909291905050506117e6565b005b3480156104c557600080fd5b506104f2600480360360208110156104dc57600080fd5b810190808035906020019092919050505061185b565b005b34801561050057600080fd5b5061055f600480360360c081101561051757600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291905050506118bd565b005b34801561056d57600080fd5b50610576611947565b6040518082815260200191505060405180910390f35b34801561059857600080fd5b506105a161194d565b60405180821515815260200191505060405180910390f35b3480156105c557600080fd5b506105ce611960565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060657600080fd5b506106696004803603604081101561061d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611984565b005b34801561067757600080fd5b50610680611ad6565b005b34801561068e57600080fd5b506106976120c6565b6040518082815260200191505060405180910390f35b3480156106b957600080fd5b506106c26120cc565b005b3480156106d057600080fd5b506106d96121b1565b6040518082815260200191505060405180910390f35b3480156106fb57600080fd5b506107046121b7565b6040518082815260200191505060405180910390f35b34801561072657600080fd5b506107536004803603602081101561073d57600080fd5b81019080803590602001909291905050506121bd565b005b34801561076157600080fd5b5061076a612265565b6040518082815260200191505060405180910390f35b34801561078c57600080fd5b5061079561226b565b60405180868152602001851515815260200184151581526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156107ef5780820151818401526020810190506107d4565b50505050905090810190601f16801561081c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561085557808201518184015260208101905061083a565b50505050905090810190601f1680156108825780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b3480156108a157600080fd5b506108aa6123d9565b60405180821515815260200191505060405180910390f35b3480156108ce57600080fd5b506108d76123ec565b6040518082815260200191505060405180910390f35b3480156108f957600080fd5b5061093c6004803603602081101561091057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123f2565b6040518082815260200191505060405180910390f35b34801561095e57600080fd5b5061096761240a565b6040518082815260200191505060405180910390f35b34801561098957600080fd5b50610992612410565b6040518082815260200191505060405180910390f35b3480156109b457600080fd5b506109bd612416565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109f557600080fd5b506109fe61243c565b6040518082815260200191505060405180910390f35b348015610a2057600080fd5b50610a29612442565b005b348015610a3757600080fd5b50610a406129df565b6040518082815260200191505060405180910390f35b348015610a6257600080fd5b50610a6b6129e5565b6040518082815260200191505060405180910390f35b348015610a8d57600080fd5b50610a966129eb565b60405180821515815260200191505060405180910390f35b348015610aba57600080fd5b50610ac36129fe565b6040518082815260200191505060405180910390f35b348015610ae557600080fd5b50610aee612a04565b6040518082815260200191505060405180910390f35b348015610b1057600080fd5b50610b19612a0a565b6040518082815260200191505060405180910390f35b348015610b3b57600080fd5b50610b7e60048036036020811015610b5257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a10565b6040518082815260200191505060405180910390f35b348015610ba057600080fd5b50610c1860048036036020811015610bb757600080fd5b8101908080359060200190640100000000811115610bd457600080fd5b820183602082011115610be657600080fd5b80359060200191846020830284011164010000000083111715610c0857600080fd5b9091929391929390505050612a28565b005b348015610c2657600080fd5b50610c2f612b20565b60405180821515815260200191505060405180910390f35b348015610c5357600080fd5b50610ccb60048036036020811015610c6a57600080fd5b8101908080359060200190640100000000811115610c8757600080fd5b820183602082011115610c9957600080fd5b80359060200191846020830284011164010000000083111715610cbb57600080fd5b9091929391929390505050612b33565b005b348015610cd957600080fd5b50610ce2612c2b565b6040518082815260200191505060405180910390f35b348015610d0457600080fd5b50610d0d612c31565b6040518082815260200191505060405180910390f35b610d2b610e82565b005b348015610d3957600080fd5b50610e28600480360360a0811015610d5057600080fd5b810190808035906020019092919080351515906020019092919080351515906020019092919080359060200190640100000000811115610d8f57600080fd5b820183602082011115610da157600080fd5b80359060200191846001830284011164010000000083111715610dc357600080fd5b909192939192939080359060200190640100000000811115610de457600080fd5b820183602082011115610df657600080fd5b80359060200191846001830284011164010000000083111715610e1857600080fd5b9091929391929390505050612c37565b005b348015610e3657600080fd5b50610e3f612d6d565b005b348015610e4d57600080fd5b50610e5661302a565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610f41576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206e6f742077686974656c697374656400000000000000000081525060200191505060405180910390fd5b601360009054906101000a900460ff1615610fc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f43616e63656c6c6564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600f5442101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420796574206f70656e656400000000000000000000000000000000000081525060200191505060405180910390fd5b60105442106110b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f436c6f736564000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600b546007541061112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f486172642063617020726561636865640000000000000000000000000000000081525060200191505060405180910390fd5b60006009541161113b57600080fd5b611152600a5460095461305090919063ffffffff16565b34111561115e57600080fd5b60006111b234600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d690919063ffffffff16565b9050600e54811015806111e357506111dd670de0b6b3a7640000600b5461315e90919063ffffffff16565b60075410155b611255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4d696e20696e766573746d656e74206e6f74207265616368656400000000000081525060200191505060405180910390fd5b6000600d5414806112685750600d548111155b6112da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d617820696e766573746d656e7420726561636865640000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561133f5761133860016006546130d690919063ffffffff16565b6006819055505b611354346007546130d690919063ffffffff16565b60078190555080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113bb6113aa346131a8565b60095461315e90919063ffffffff16565b60098190555050565b60115481565b60046020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60165481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a657600080fd5b601360009054906101000a900460ff16156114c057600080fd5b6001601360006101000a81548160ff0219169083151502179055506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561156657600080fd5b505afa15801561157a573d6000803e3d6000fd5b505050506040513d602081101561159057600080fd5b81019080805190602001909291905050509050600081111561169c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561165f57600080fd5b505af1158015611673573d6000803e3d6000fd5b505050506040513d602081101561168957600080fd5b8101908080519060200190929190505050505b50565b601a6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171757600080fd5b6000881161172457600080fd5b6000871161173157600080fd5b6000821161173e57600080fd5b6000811161174b57600080fd5b6000861161175857600080fd5b61176b878961305090919063ffffffff16565b86111561177757600080fd5b8585111561178457600080fd5b8383111561179157600080fd5b80821061179d57600080fd5b876008819055508760098190555086600a8190555085600b8190555084600c8190555083600d8190555082600e8190555081600f81905550806010819055505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183e57600080fd5b80601360016101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b357600080fd5b8060128190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191557600080fd5b856014819055508460158190555083601781905550826016819055508160188190555080601981905550505050505050565b600a5481565b601360019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119dc57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a1657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a5057600080fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611b95576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206e6f742077686974656c697374656400000000000000000081525060200191505060405180910390fd5b601360009054906101000a900460ff1615611c18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f43616e63656c6c6564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611ccd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420616e20696e766573746f72000000000000000000000000000000000081525060200191505060405180910390fd5b60006011544210158015611ce657506012546011540142105b15611cf057600190505b601254601154014210158015611d0e57506002601254026011540142105b15611d1857600290505b600260125402601154014210158015611d3957506003601254026011540142105b15611d4357600390505b600360125402601154014210611d5857600490505b60008111611dce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4c697374696e67206e6f7420737461727465640000000000000000000000000081525060200191505060405180910390fd5b80600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f416c726561647920636c61696d6564206f7220726566756e646564000000000081525060200191505060405180910390fd5b601360029054906101000a900460ff16611f04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436c61696d20697320646973616c6c6f7765640000000000000000000000000081525060200191505060405180910390fd5b611f576001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130d690919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361203461202f6004600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131e090919063ffffffff16565b6131a8565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561208757600080fd5b505af115801561209b573d6000803e3d6000fd5b505050506040513d60208110156120b157600080fd5b81019080805190602001909291905050505050565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461212457600080fd5b601360009054906101000a900460ff161561213e57600080fd5b60004711156121af5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156121ad573d6000803e3d6000fd5b505b565b60065481565b60155481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461221557600080fd5b6000811161222257600080fd5b60006010541161223157600080fd5b60105481101561224057600080fd5b6001601360026101000a81548160ff0219169083151502179055508060118190555050565b60085481565b601b8060000154908060010160009054906101000a900460ff16908060010160019054906101000a900460ff1690806002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123315780601f1061230657610100808354040283529160200191612331565b820191906000526020600020905b81548152906001019060200180831161231457829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156123cf5780601f106123a4576101008083540402835291602001916123cf565b820191906000526020600020905b8154815290600101906020018083116123b257829003601f168201915b5050505050905085565b601360029054906101000a900460ff1681565b60185481565b60036020528060005260406000206000915090505481565b60175481565b600d5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612501576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f41646472657373206e6f742077686974656c697374656400000000000000000081525060200191505060405180910390fd5b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116125b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420616e20696e766573746f72000000000000000000000000000000000081525060200191505060405180910390fd5b601360019054906101000a900460ff16612638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f526566756e6420697320646973616c6c6f77656400000000000000000000000081525060200191505060405180910390fd5b601360009054906101000a900460ff166128e357600f544210156126c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420796574206f70656e656400000000000000000000000000000000000081525060200191505060405180910390fd5b60105442101561273c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f742079657420636c6f73656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600c54116127b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f4e6f20736f66742063617000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600c546007541061282d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f536f66742063617020726561636865640000000000000000000000000000000081525060200191505060405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146128e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f416c726561647920636c61696d6564000000000000000000000000000000000081525060200191505060405180910390fd5b5b6004600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060004790506000811161297e57600080fd5b8082111561298a578091505b60008211156129db573373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156129d9573d6000803e3d6000fd5b505b5050565b60095481565b600f5481565b601360039054906101000a900460ff1681565b60145481565b60075481565b60195481565b60056020528060005260406000206000915090505481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a8057600080fd5b60005b82829050811015612b1b57600160046000858585818110612aa057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612a83565b505050565b601360009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b8b57600080fd5b60005b82829050811015612c26576001601a6000858585818110612bab57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050612b8e565b505050565b600c5481565b600e5481565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f41756469746f722041646472657373206e6f742077686974656c69737465640081525060200191505060405180910390fd5b86601b6000018190555085601b60010160006101000a81548160ff02191690831515021790555084601b60010160016101000a81548160ff0219169083151502179055508383601b6002019190612d4e9291906133b0565b508181601b6003019190612d639291906133b0565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612dc557600080fd5b601360009054906101000a900460ff1615612e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f43616e63656c6c6564000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000612f2a612e586007546131a8565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612ee157600080fd5b505afa158015612ef5573d6000803e3d6000fd5b505050506040513d6020811015612f0b57600080fd5b810190808051906020019092919050505061315e90919063ffffffff16565b9050600081111561302757600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d602081101561301457600080fd5b8101908080519060200190929190505050505b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008083141561306357600090506130d0565b600082840290508284828161307457fe5b04146130cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061344e6021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015613154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60006131a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061322a565b905092915050565b60006131d9600a546131cb670de0b6b3a76400008561305090919063ffffffff16565b6131e090919063ffffffff16565b9050919050565b600061322283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506132ea565b905092915050565b60008383111582906132d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561329c578082015181840152602081019050613281565b50505050905090810190601f1680156132c95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290613396576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561335b578082015181840152602081019050613340565b50505050905090810190601f1680156133885780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816133a257fe5b049050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106133f157803560ff191683800117855561341f565b8280016001018555821561341f579182015b8281111561341e578235825591602001919060010190613403565b5b50905061342c9190613430565b5090565b5b80821115613449576000816000905550600101613431565b509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f78b9719fdff947f8e7d59de59bd2ac4b3ed3deebf677232bf56b8732c0a109b64736f6c634300060c0033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x280 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x89771DD8 GT PUSH2 0x14F JUMPI DUP1 PUSH4 0xC51D16B6 GT PUSH2 0xC1 JUMPI DUP1 PUSH4 0xD6C86B1B GT PUSH2 0x7A JUMPI DUP1 PUSH4 0xD6C86B1B EQ PUSH2 0xCCD JUMPI DUP1 PUSH4 0xE861E34D EQ PUSH2 0xCF8 JUMPI DUP1 PUSH4 0xE8B5E51F EQ PUSH2 0xD23 JUMPI DUP1 PUSH4 0xEBC9AFCC EQ PUSH2 0xD2D JUMPI DUP1 PUSH4 0xF59EB575 EQ PUSH2 0xE2A JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0xE41 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0xC51D16B6 EQ PUSH2 0xAD9 JUMPI DUP1 PUSH4 0xC6A42669 EQ PUSH2 0xB04 JUMPI DUP1 PUSH4 0xC884EF83 EQ PUSH2 0xB2F JUMPI DUP1 PUSH4 0xCA2CFC20 EQ PUSH2 0xB94 JUMPI DUP1 PUSH4 0xD5933C2C EQ PUSH2 0xC1A JUMPI DUP1 PUSH4 0xD64D3138 EQ PUSH2 0xC47 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0xB13AAEBD GT PUSH2 0x113 JUMPI DUP1 PUSH4 0xB13AAEBD EQ PUSH2 0x9E9 JUMPI DUP1 PUSH4 0xB2D5AE44 EQ PUSH2 0xA14 JUMPI DUP1 PUSH4 0xB31F8F93 EQ PUSH2 0xA2B JUMPI DUP1 PUSH4 0xB4256888 EQ PUSH2 0xA56 JUMPI DUP1 PUSH4 0xBC89FF2B EQ PUSH2 0xA81 JUMPI DUP1 PUSH4 0xC502B13B EQ PUSH2 0xAAE JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x89771DD8 EQ PUSH2 0x8C2 JUMPI DUP1 PUSH4 0x96B98862 EQ PUSH2 0x8ED JUMPI DUP1 PUSH4 0x9767B58C EQ PUSH2 0x952 JUMPI DUP1 PUSH4 0x9FA1ECCC EQ PUSH2 0x97D JUMPI DUP1 PUSH4 0xA2460D2E EQ PUSH2 0x9A8 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x3FA911AE GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x7275AE14 GT PUSH2 0x1AC JUMPI DUP1 PUSH4 0x7275AE14 EQ PUSH2 0x6C4 JUMPI DUP1 PUSH4 0x74458306 EQ PUSH2 0x6EF JUMPI DUP1 PUSH4 0x762789A8 EQ PUSH2 0x71A JUMPI DUP1 PUSH4 0x7E1C0C09 EQ PUSH2 0x755 JUMPI DUP1 PUSH4 0x7F0FEACC EQ PUSH2 0x780 JUMPI DUP1 PUSH4 0x872F0B97 EQ PUSH2 0x895 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x3FA911AE EQ PUSH2 0x58C JUMPI DUP1 PUSH4 0x411DB1AD EQ PUSH2 0x5B9 JUMPI DUP1 PUSH4 0x45AF6115 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x48C54B9D EQ PUSH2 0x66B JUMPI DUP1 PUSH4 0x627749E6 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0x6CB96287 EQ PUSH2 0x6AD JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH4 0x16BC4F0E GT PUSH2 0x245 JUMPI DUP1 PUSH4 0x16BC4F0E EQ PUSH2 0x393 JUMPI DUP1 PUSH4 0x1C194BA9 EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x1C3CB177 EQ PUSH2 0x47C JUMPI DUP1 PUSH4 0x245FC183 EQ PUSH2 0x4B9 JUMPI DUP1 PUSH4 0x2B24A878 EQ PUSH2 0x4F4 JUMPI DUP1 PUSH4 0x2F8DE810 EQ PUSH2 0x561 JUMPI PUSH2 0x28F JUMP JUMPDEST DUP1 PUSH3 0x994836 EQ PUSH2 0x294 JUMPI DUP1 PUSH4 0x6C933D8 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0xCA99CA8 EQ PUSH2 0x326 JUMPI DUP1 PUSH4 0xCDC1FC5 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xCE40C8F EQ PUSH2 0x37C JUMPI PUSH2 0x28F JUMP JUMPDEST CALLDATASIZE PUSH2 0x28F JUMPI PUSH2 0x28D PUSH2 0xE82 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x30E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x13CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x332 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33B PUSH2 0x13EA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x366 PUSH2 0x13F0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x391 PUSH2 0x13F6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x169F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x16BF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x49F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x17E6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x185B JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x55F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x18BD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x576 PUSH2 0x1947 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5A1 PUSH2 0x194D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5CE PUSH2 0x1960 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x669 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1984 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x680 PUSH2 0x1AD6 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x697 PUSH2 0x20C6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C2 PUSH2 0x20CC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6D9 PUSH2 0x21B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x704 PUSH2 0x21B7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x726 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x753 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x21BD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x76A PUSH2 0x2265 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x795 PUSH2 0x226B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 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 0x7EF JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x7D4 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x81C 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 DUP4 DUP2 SUB DUP3 MSTORE DUP5 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 0x855 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x83A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x882 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 SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8AA PUSH2 0x23D9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D7 PUSH2 0x23EC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x23F2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x95E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x967 PUSH2 0x240A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x989 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x992 PUSH2 0x2410 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9BD PUSH2 0x2416 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9FE PUSH2 0x243C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA29 PUSH2 0x2442 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA40 PUSH2 0x29DF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA62 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA6B PUSH2 0x29E5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA96 PUSH2 0x29EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xABA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAC3 PUSH2 0x29FE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAEE PUSH2 0x2A04 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB19 PUSH2 0x2A0A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xB52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2A10 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC18 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xBD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xBE6 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 0xC08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2A28 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC2F PUSH2 0x2B20 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCCB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xC87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC99 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 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2B33 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCE2 PUSH2 0x2C2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD0D PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD2B PUSH2 0xE82 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE28 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xD50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xD8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDA1 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 0xDC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xDF6 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 0xE18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP2 SWAP3 SWAP4 SWAP2 SWAP3 SWAP4 SWAP1 POP POP POP PUSH2 0x2C37 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE36 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3F PUSH2 0x2D6D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE4D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE56 PUSH2 0x302A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0xF41 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41646472657373206E6F742077686974656C6973746564000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xFC4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E63656C6C65640000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xF SLOAD TIMESTAMP LT ISZERO PUSH2 0x103C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420796574206F70656E6564000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x10 SLOAD TIMESTAMP LT PUSH2 0x10B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x436C6F7365640000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xB SLOAD PUSH1 0x7 SLOAD LT PUSH2 0x112C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4861726420636170207265616368656400000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD GT PUSH2 0x113B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1152 PUSH1 0xA SLOAD PUSH1 0x9 SLOAD PUSH2 0x3050 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST CALLVALUE GT ISZERO PUSH2 0x115E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11B2 CALLVALUE PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0xE SLOAD DUP2 LT ISZERO DUP1 PUSH2 0x11E3 JUMPI POP PUSH2 0x11DD PUSH8 0xDE0B6B3A7640000 PUSH1 0xB SLOAD PUSH2 0x315E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 SLOAD LT ISZERO JUMPDEST PUSH2 0x1255 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D696E20696E766573746D656E74206E6F742072656163686564000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xD SLOAD EQ DUP1 PUSH2 0x1268 JUMPI POP PUSH1 0xD SLOAD DUP2 GT ISZERO JUMPDEST PUSH2 0x12DA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x16 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4D617820696E766573746D656E74207265616368656400000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ ISZERO PUSH2 0x133F JUMPI PUSH2 0x1338 PUSH1 0x1 PUSH1 0x6 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP JUMPDEST PUSH2 0x1354 CALLVALUE PUSH1 0x7 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x7 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x13BB PUSH2 0x13AA CALLVALUE PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH2 0x315E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x9 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x16 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x144E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x14A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x14C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x13 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x157A 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 0x1590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x169C JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x165F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1673 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 0x1689 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1A PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP9 GT PUSH2 0x1724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP8 GT PUSH2 0x1731 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x173E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x174B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP7 GT PUSH2 0x1758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x176B DUP8 DUP10 PUSH2 0x3050 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 GT ISZERO PUSH2 0x1784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP4 GT ISZERO PUSH2 0x1791 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 LT PUSH2 0x179D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x8 DUP2 SWAP1 SSTORE POP DUP8 PUSH1 0x9 DUP2 SWAP1 SSTORE POP DUP7 PUSH1 0xA DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0xB DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0xC DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0xD DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0xE DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xF DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x10 DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x183E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x13 PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x12 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 PUSH1 0x14 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x15 DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x17 DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x16 DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0x18 DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x19 DUP2 SWAP1 SSTORE POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x19DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41646472657373206E6F742077686974656C6973746564000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1C18 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E63656C6C65640000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x1CCD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420616E20696E766573746F720000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x11 SLOAD TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0x1CE6 JUMPI POP PUSH1 0x12 SLOAD PUSH1 0x11 SLOAD ADD TIMESTAMP LT JUMPDEST ISZERO PUSH2 0x1CF0 JUMPI PUSH1 0x1 SWAP1 POP JUMPDEST PUSH1 0x12 SLOAD PUSH1 0x11 SLOAD ADD TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0x1D0E JUMPI POP PUSH1 0x2 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT JUMPDEST ISZERO PUSH2 0x1D18 JUMPI PUSH1 0x2 SWAP1 POP JUMPDEST PUSH1 0x2 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0x1D39 JUMPI POP PUSH1 0x3 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT JUMPDEST ISZERO PUSH2 0x1D43 JUMPI PUSH1 0x3 SWAP1 POP JUMPDEST PUSH1 0x3 PUSH1 0x12 SLOAD MUL PUSH1 0x11 SLOAD ADD TIMESTAMP LT PUSH2 0x1D58 JUMPI PUSH1 0x4 SWAP1 POP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x1DCE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4C697374696E67206E6F74207374617274656400000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD LT PUSH2 0x1E82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920636C61696D6564206F7220726566756E6465640000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1F04 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x13 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x436C61696D20697320646973616C6C6F77656400000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F57 PUSH1 0x1 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x30D6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB CALLER PUSH2 0x2034 PUSH2 0x202F PUSH1 0x4 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x31E0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2087 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x209B 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 0x20B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x10 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x213E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SELFBALANCE GT ISZERO PUSH2 0x21AF JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC SELFBALANCE SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x21AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST JUMP JUMPDEST PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x15 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x2222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x10 SLOAD GT PUSH2 0x2231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x10 SLOAD DUP2 LT ISZERO PUSH2 0x2240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x13 PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x11 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1B DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x1 ADD PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP1 DUP1 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2331 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2306 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2331 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 0x2314 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 DUP1 PUSH1 0x3 ADD DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV 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 PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x23CF JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x23A4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x23CF 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 0x23B2 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP6 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x2 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x18 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x17 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x12 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2501 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x17 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41646472657373206E6F742077686974656C6973746564000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD GT PUSH2 0x25B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420616E20696E766573746F720000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2638 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x526566756E6420697320646973616C6C6F776564000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x28E3 JUMPI PUSH1 0xF SLOAD TIMESTAMP LT ISZERO PUSH2 0x26C4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F7420796574206F70656E6564000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x10 SLOAD TIMESTAMP LT ISZERO PUSH2 0x273C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F742079657420636C6F736564000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD GT PUSH2 0x27B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xB DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x4E6F20736F667420636170000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xC SLOAD PUSH1 0x7 SLOAD LT PUSH2 0x282D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x10 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536F667420636170207265616368656400000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD EQ PUSH2 0x28E2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x416C726561647920636C61696D65640000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMPDEST PUSH1 0x4 PUSH1 0x5 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 SELFBALANCE SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x297E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x298A JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP3 GT ISZERO PUSH2 0x29DB JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP4 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x29D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xF SLOAD DUP2 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x14 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x19 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE DUP1 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2A80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP3 SWAP1 POP DUP2 LT ISZERO PUSH2 0x2B1B JUMPI PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2AA0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2A83 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2B8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP3 SWAP1 POP DUP2 LT ISZERO PUSH2 0x2C26 JUMPI PUSH1 0x1 PUSH1 0x1A PUSH1 0x0 DUP6 DUP6 DUP6 DUP2 DUP2 LT PUSH2 0x2BAB JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x2B8E JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1A PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2CF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x41756469746F722041646472657373206E6F742077686974656C697374656400 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 PUSH1 0x1B PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP6 PUSH1 0x1B PUSH1 0x1 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP5 PUSH1 0x1B PUSH1 0x1 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP4 DUP4 PUSH1 0x1B PUSH1 0x2 ADD SWAP2 SWAP1 PUSH2 0x2D4E SWAP3 SWAP2 SWAP1 PUSH2 0x33B0 JUMP JUMPDEST POP DUP2 DUP2 PUSH1 0x1B PUSH1 0x3 ADD SWAP2 SWAP1 PUSH2 0x2D63 SWAP3 SWAP2 SWAP1 PUSH2 0x33B0 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2DC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x13 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x2E48 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x43616E63656C6C65640000000000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2F2A PUSH2 0x2E58 PUSH1 0x7 SLOAD PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2EF5 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 0x2F0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x315E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0x3027 JUMPI PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FFE 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 0x3014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x3063 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x30D0 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x3074 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x30CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x344E PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x3154 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31A0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH2 0x322A JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31D9 PUSH1 0xA SLOAD PUSH2 0x31CB PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x3050 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x31E0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3222 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH2 0x32EA JUMP JUMPDEST SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 GT ISZERO DUP3 SWAP1 PUSH2 0x32D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 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 0x329C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3281 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x32C9 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP3 SWAP1 PUSH2 0x3396 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 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 0x335B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x3340 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3388 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 REVERT JUMPDEST POP PUSH1 0x0 DUP4 DUP6 DUP2 PUSH2 0x33A2 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP4 SWAP3 POP 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 PUSH2 0x33F1 JUMPI DUP1 CALLDATALOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x341F JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x341F JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x341E JUMPI DUP3 CALLDATALOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x3403 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x342C SWAP2 SWAP1 PUSH2 0x3430 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x3449 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x3431 JUMP JUMPDEST POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 0xF7 DUP12 SWAP8 NOT REVERT SELFDESTRUCT SWAP5 PUSH32 0x8E7D59DE59BD2AC4B3ED3DEEBF677232BF56B8732C0A109B64736F6C63430006 0xC STOP CALLER ",
"sourceMap": "106:12027:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9777:8;:6;:8::i;:::-;106:12027;;;;;1607:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;475:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1044:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2262:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11556:363;;;;;;;;;;;;;:::i;:::-;;2387:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5163:1206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7859:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8313:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6375:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;969:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1945:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;167:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4823:334;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10185:428;;;;;;;;;;;;;:::i;:::-;;1523:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11925:206;;;;;;;;;;;;;:::i;:::-;;722:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2229:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8000:307;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;848:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2830:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2036:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2325:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;389:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2294:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1250:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;290:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1752:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10619:931;;;;;;;;;;;;;:::i;:::-;;907:25;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1444:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2115:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2199:24;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;787:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2357:23;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;566:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7301:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1794:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7576:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1131:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1347:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8620:1114;;;:::i;:::-;;6819:476;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9798:381;;;;;;;;;;;;;:::i;:::-;;238:19;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8620:1114;3188:20;:32;3209:10;3188:32;;;;;;;;;;;;;;;;;;;;;;;;;3167:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:16:::1;;;;;;;;;;;3344:17;3336:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;8771:8:::2;;8752:15;:27;;8744:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;8834:9;;8816:15;:27;8808:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;8892:12;;8872:17;;:32;8864:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;8956:1;8943:10;;:14;8935:23;;;::::0;::::2;;8989:31;9004:15;;8989:10;;:14;;:31;;;;:::i;:::-;8976:9;:44;;8968:53;;;::::0;::::2;;9031:28;9062:38;9090:9;9062:11;:23;9074:10;9062:23;;;;;;;;;;;;;;;;:27;;:38;;;;:::i;:::-;9031:69;;9155:14;;9131:20;:38;;:104;;;;9210:25;9227:7;9210:12;;:16;;:25;;;;:::i;:::-;9189:17;;:46;;9131:104;9110:177;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;9336:1;9318:14;;:19;:61;;;;9365:14;;9341:20;:38;;9318:61;9297:130;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;9469:1;9442:11;:23;9454:10;9442:23;;;;;;;;;;;;;;;;:28;9438:107;;;9508:26;9532:1;9508:19;;:23;;:26;;;;:::i;:::-;9486:19;:48;;;;9438:107;9575:32;9597:9;9575:17;;:21;;:32;;;;:::i;:::-;9555:17;:52;;;;9643:20;9617:11;:23;9629:10;9617:23;;;;;;;;;;;;;;;:46;;;;9686:41;9701:25;9716:9;9701:14;:25::i;:::-;9686:10;;:14;;:41;;;;:::i;:::-;9673:10;:54;;;;3385:1;8620:1114::o:0;1607:38::-;;;;:::o;475:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;1044:27::-;;;;:::o;2262:26::-;;;;:::o;11556:363::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;11649:10:::1;11631:28;;:14;::::0;::::1;;;;;;;;:28;;;11627:67;;11675:8;::::0;::::1;11627:67;11713:16;;;;;;;;;;;11712:17;11704:26;;;::::0;::::1;;11759:4;11740:16;;:23;;;;;;;;;;;;;;;;;;11774:15;11792:5;;;;;;;;;;;:15;;;11816:4;11792:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;11774:48;;11846:1;11836:7;:11;11832:81;;;11863:5;;;;;;;;;;;:14;;;11878;::::0;::::1;;;;;;;;11894:7;11863:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;11832:81;3109:1;11556:363::o:0;2387:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;5163:1206::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;5494:1:::1;5479:12;:16;5471:25;;;::::0;::::1;;5533:1;5514:16;:20;5506:29;;;::::0;::::1;;5565:1;5553:9;:13;5545:22;;;::::0;::::1;;5598:1;5585:10;:14;5577:23;;;::::0;::::1;;5634:1;5618:13;:17;5610:26;;;::::0;::::1;;5723:34;5740:16;5723:12;:16;;:34;;;;:::i;:::-;5706:13;:51;;5698:60;;;::::0;::::1;;5827:13;5810;:30;;5802:39;;;::::0;::::1;;5932:15;5913;:34;;5905:43;;;::::0;::::1;;6013:10;6001:9;:22;5993:31;;;::::0;::::1;;6049:12;6035:11;:26;;;;6084:12;6071:10;:25;;;;6124:16;6106:15;:34;;;;6165:13;6150:12;:28;;;;6203:13;6188:12;:28;;;;6243:15;6226:14;:32;;;;6285:15;6268:14;:32;;;;6321:9;6310:8;:20;;;;6352:10;6340:9;:22;;;;5163:1206:::0;;;;;;;;:::o;7859:135::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;7973:14:::1;7957:13;;:30;;;;;;;;;;;;;;;;;;7859:135:::0;:::o;8313:126::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;8421:11:::1;8408:10;:24;;;;8313:126:::0;:::o;6375:438::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;6622:10:::1;6610:9;:22;;;;6657:13;6642:12;:28;;;;6693:11;6680:10;:24;;;;6728:12;6714:11;:26;;;;6764:12;6750:11;:26;;;;6797:9;6786:8;:20;;;;6375:438:::0;;;;;;:::o;969:30::-;;;;:::o;1945:33::-;;;;;;;;;;;;;:::o;167:37::-;;;;;;;;;;;;:::o;4823:334::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;4990:1:::1;4965:27;;:13;:27;;;;4957:36;;;::::0;::::1;;5047:1;5011:38;;:24;:38;;;;5003:47;;;::::0;::::1;;5076:13;5061:5;;:29;;;;;;;;;;;;;;;;;;5126:24;5100:23;;:50;;;;;;;;;;;;;;;;;;4823:334:::0;;:::o;10185:428::-;3188:20;:32;3209:10;3188:32;;;;;;;;;;;;;;;;;;;;;;;;;3167:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3345:16:::1;;;;;;;;;;;3344:17;3336:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;3467:1:::2;3441:11;:23;3453:10;3441:23;;;;;;;;;;;;;;;;:27;3433:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;3552:21:::3;3611:23;;3604:3;:30;;:88;;;;;3682:10;;3656:23;;:36;3650:3;:42;3604:88;3587:158;;;3733:1;3717:17;;3587:158;3804:10;;3778:23;;:36;3771:3;:43;;:105;;;;;3875:1;3862:10;;:14;3836:23;;:40;3830:3;:46;3771:105;3754:175;;;3917:1;3901:17;;3754:175;4001:1;3988:10;;:14;3962:23;;:40;3955:3;:47;;:109;;;;;4063:1;4050:10;;:14;4024:23;;:40;4018:3;:46;3955:109;3938:179;;;4105:1;4089:17;;3938:179;4176:1;4163:10;;:14;4137:23;;:40;4130:3;:47;4126:95;;4209:1;4193:17;;4126:95;4254:1;4238:13;:17;4230:49;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;4333:13;4311:7;:19;4319:10;4311:19;;;;;;;;;;;;;;;;:35;4290:109;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;4578:12:::4;;;;;;;;;;;4570:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::4;;;;;;;;;;;;;10395:26:::5;10419:1;10395:7;:19;10403:10;10395:19;;;;;;;;;;;;;;;;:23;;:26;;;;:::i;:::-;10373:7;:19;10381:10;10373:19;;;;;;;;;;;;;;;:48;;;;10498:5;;;;;;;;;;;:14;;;10526:10;10550:46;10565:30;10593:1;10565:11;:23;10577:10;10565:23;;;;;;;;;;;;;;;;:27;;:30;;;;:::i;:::-;10550:14;:46::i;:::-;10498:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::5;;;;;;;;;;;;::::0;::::5;;;;;;;;;;;;;;;;;;;::::0;::::5;;;;;;;;;;;;;;;;;;;3498:1:::3;10185:428::o:0;1523:24::-;;;;:::o;11925:206::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;11995:16:::1;;;;;;;;;;;11994:17;11986:26;;;::::0;::::1;;12051:1;12027:21;:25;12023:102;;;12068:14;::::0;::::1;;;;;;;;:23;;:46;12092:21;12068:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12023:102;11925:206::o:0;722:34::-;;;;:::o;2229:27::-;;;;:::o;8000:307::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;8120:1:::1;8093:24;:28;8085:37;;;::::0;::::1;;8152:1;8140:9;;:13;8132:22;;;::::0;::::1;;8200:9;;8172:24;:37;;8164:46;;;::::0;::::1;;8236:4;8221:12;;:19;;;;;;;;;;;;;;;;;;8276:24;8250:23;:50;;;;8000:307:::0;:::o;848:26::-;;;;:::o;2830:35::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2036:32::-;;;;;;;;;;;;;:::o;2325:26::-;;;;:::o;389:46::-;;;;;;;;;;;;;;;;;:::o;2294:25::-;;;;:::o;1250:29::-;;;;:::o;290:38::-;;;;;;;;;;;;;:::o;1752:35::-;;;;:::o;10619:931::-;3188:20;:32;3209:10;3188:32;;;;;;;;;;;;;;;;;;;;;;;;;3167:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3467:1:::1;3441:11;:23;3453:10;3441:23;;;;;;;;;;;;;;;;:27;3433:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;4470:13:::2;;;;;;;;;;;4462:46;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;10754:16:::3;;;;;;;;;;;10749:366;;10813:8;;10794:15;:27;;10786:54;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;10881:9;;10862:15;:28;;10854:55;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;10946:1;10931:12;;:16;10923:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;11005:12;;10985:17;;:32;10977:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;11083:1;11060:7;:19;11068:10;11060:19;;;;;;;;;;;;;;;;:24;11052:52;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;10749:366;11147:1;11125:7;:19;11133:10;11125:19;;;;;;;;;;;;;;;:23;;;;11225:18;11246:11;:23;11258:10;11246:23;;;;;;;;;;;;;;;;11225:44;;11279:22;11304:21;11279:46;;11360:1;11343:14;:18;11335:27;;;::::0;::::3;;11390:14;11377:10;:27;11373:85;;;11433:14;11420:27;;11373:85;11485:1;11472:10;:14;11468:76;;;11502:10;:19;;:31;11522:10;11502:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;11468:76;4518:1;;10619:931::o:0;907:25::-;;;;:::o;1444:23::-;;;;:::o;2115:29::-;;;;;;;;;;;;;:::o;2199:24::-;;;;:::o;787:32::-;;;;:::o;2357:23::-;;;;:::o;566:42::-;;;;;;;;;;;;;;;;;:::o;7301:269::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;7432:9:::1;7427:137;7451:21;;:28;;7447:1;:32;7427:137;;;7549:4;7500:20;:46;7521:21;;7543:1;7521:24;;;;;;;;;;;;;;;7500:46;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;7481:3;;;;;;;7427:137;;;;7301:269:::0;;:::o;1794:36::-;;;;;;;;;;;;;:::o;7576:277::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;7708:9:::1;7703:144;7727:21;;:28;;7723:1;:32;7703:144;;;7832:4;7776:27;:53;7804:21;;7826:1;7804:24;;;;;;;;;;;;;;;7776:53;;;;;;;;;;;;;;;;:60;;;;;;;;;;;;;;;;;;7757:3;;;;;;;7703:144;;;;7576:277:::0;;:::o;1131:27::-;;;;:::o;1347:29::-;;;;:::o;6819:476::-;4703:27;:39;4731:10;4703:39;;;;;;;;;;;;;;;;;;;;;;;;;4682:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7072:8:::1;7045:16;:24;;:35;;;;7120:11;7090:16;:27;;;:41;;;;;;;;;;;;;;;;;;7170:10;7141:16;:26;;;:39;;;;;;;;;;;;;;;;;;7222:13;;7190:16;:29;;:45;;;;;;;:::i;:::-;;7276:12;;7245:16;:28;;:43;;;;;;;:::i;:::-;;6819:476:::0;;;;;;;:::o;9798:381::-;3088:10;3070:28;;:14;;;;;;;;;;:28;;;3062:37;;;;;;3345:16:::1;;;;;;;;;;;3344:17;3336:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;9911:26:::2;9952:99;10004:33;10019:17;;10004:14;:33::i;:::-;9952:5;;;;;;;;;;;:15;;;9976:4;9952:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;:34;;:99;;;;:::i;:::-;9911:140;;10086:1;10065:18;:22;10061:112;;;10103:5;;;;;;;;;;;:14;;;10118:23;;;;;;;;;;;10143:18;10103:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;10061:112;3385:1;9798:381::o:0;238:19::-;;;;;;;;;;;;;:::o;2200:459:2:-;2258:7;2504:1;2499;:6;2495:45;;;2528:1;2521:8;;;;2495:45;2550:9;2566:1;2562;:5;2550:17;;2594:1;2589;2585;:5;;;;;;:10;2577:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2651:1;2644:8;;;2200:459;;;;;:::o;894:176::-;952:7;971:9;987:1;983;:5;971:17;;1011:1;1006;:6;;998:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1062:1;1055:8;;;894:176;;;;:::o;1341:134::-;1399:7;1425:43;1429:1;1432;1425:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1418:50;;1341:134;;;;:::o;8445:169:1:-;8536:7;8566:41;8591:15;;8566:20;8581:4;8566:10;:14;;:20;;;;:::i;:::-;:24;;:41;;;;:::i;:::-;8559:48;;8445:169;;;:::o;3121:130:2:-;3179:7;3205:39;3209:1;3212;3205:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3198:46;;3121:130;;;;:::o;1766:187::-;1852:7;1884:1;1879;:6;;1887:12;1871:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1910:9;1926:1;1922;:5;1910:17;;1945:1;1938:8;;;1766:187;;;;;:::o;3733:272::-;3819:7;3850:1;3846;:5;3853:12;3838:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3876:9;3892:1;3888;:5;;;;;;3876:17;;3997:1;3990:8;;;3733:272;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "2695200",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"addAuditorWhitelistedAddresses(address[])": "infinite",
"addWhitelistedAddresses(address[])": "infinite",
"allowClaim(uint256)": "43787",
"auditInformation()": "infinite",
"auditorWhitelistedAddresses(address)": "1246",
"bscsDevAddress()": "1112",
"cakeLiquidityAddingTime()": "1052",
"cancelAndTransferTokensToDev()": "infinite",
"claimAllowed()": "1252",
"claimCycle()": "1050",
"claimTokens()": "infinite",
"claimed(address)": "1258",
"closeTime()": "1139",
"collectFundsRaised()": "infinite",
"getRefund()": "infinite",
"hardCapInWei()": "1096",
"invest()": "infinite",
"investments(address)": "1237",
"isAudited()": "1230",
"linkGithub()": "1095",
"linkLogo()": "1072",
"linkTelegram()": "1072",
"linkTwitter()": "1118",
"linkWebsite()": "1051",
"maxInvestInWei()": "1117",
"minInvestInWei()": "1071",
"openTime()": "1116",
"presaleCancelled()": "1180",
"refundAllowed()": "1143",
"saleTitle()": "1160",
"setAddressInfo(address,address)": "43036",
"setAuditorInfo(bytes32,bool,bool,string,string)": "infinite",
"setClaimCycle(uint256)": "21221",
"setGeneralInfo(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "infinite",
"setRefundAllowed(bool)": "22108",
"setStringInfo(bytes32,bytes32,bytes32,bytes32,bytes32,bytes32)": "121458",
"softCapInWei()": "1049",
"token()": "1201",
"tokenPriceInWei()": "1161",
"tokensLeft()": "1094",
"totalCollectedWei()": "1050",
"totalInvestorsCount()": "1050",
"totalTokens()": "1116",
"transferUnsoldTokens()": "infinite",
"unsoldTokensDumpAddress()": "1181",
"whitelistedAddresses(address)": "1269"
},
"internal": {
"getTokenAmount(uint256)": "infinite"
}
},
"methodIdentifiers": {
"addAuditorWhitelistedAddresses(address[])": "d64d3138",
"addWhitelistedAddresses(address[])": "ca2cfc20",
"allowClaim(uint256)": "762789a8",
"auditInformation()": "7f0feacc",
"auditorWhitelistedAddresses(address)": "16bc4f0e",
"bscsDevAddress()": "411db1ad",
"cakeLiquidityAddingTime()": "00994836",
"cancelAndTransferTokensToDev()": "0ce40c8f",
"claimAllowed()": "872f0b97",
"claimCycle()": "b13aaebd",
"claimTokens()": "48c54b9d",
"claimed(address)": "c884ef83",
"closeTime()": "627749e6",
"collectFundsRaised()": "6cb96287",
"getRefund()": "b2d5ae44",
"hardCapInWei()": "0ca99ca8",
"invest()": "e8b5e51f",
"investments(address)": "96b98862",
"isAudited()": "bc89ff2b",
"linkGithub()": "9767b58c",
"linkLogo()": "c6a42669",
"linkTelegram()": "74458306",
"linkTwitter()": "0cdc1fc5",
"linkWebsite()": "89771dd8",
"maxInvestInWei()": "9fa1eccc",
"minInvestInWei()": "e861e34d",
"openTime()": "b4256888",
"presaleCancelled()": "d5933c2c",
"refundAllowed()": "3fa911ae",
"saleTitle()": "c502b13b",
"setAddressInfo(address,address)": "45af6115",
"setAuditorInfo(bytes32,bool,bool,string,string)": "ebc9afcc",
"setClaimCycle(uint256)": "245fc183",
"setGeneralInfo(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": "1c194ba9",
"setRefundAllowed(bool)": "1c3cb177",
"setStringInfo(bytes32,bytes32,bytes32,bytes32,bytes32,bytes32)": "2b24a878",
"softCapInWei()": "d6c86b1b",
"token()": "fc0c546a",
"tokenPriceInWei()": "2f8de810",
"tokensLeft()": "b31f8f93",
"totalCollectedWei()": "c51d16b6",
"totalInvestorsCount()": "7275ae14",
"totalTokens()": "7e1c0c09",
"transferUnsoldTokens()": "f59eb575",
"unsoldTokensDumpAddress()": "a2460d2e",
"whitelistedAddresses(address)": "06c933d8"
}
},
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_bscsDevAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_whitelistedAddresses",
"type": "address[]"
}
],
"name": "addAuditorWhitelistedAddresses",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_whitelistedAddresses",
"type": "address[]"
}
],
"name": "addWhitelistedAddresses",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_cakeLiquidityAddingTime",
"type": "uint256"
}
],
"name": "allowClaim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "auditInformation",
"outputs": [
{
"internalType": "bytes32",
"name": "auditor",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "isVerified",
"type": "bool"
},
{
"internalType": "bool",
"name": "isWarning",
"type": "bool"
},
{
"internalType": "string",
"name": "verifiedHash",
"type": "string"
},
{
"internalType": "string",
"name": "warningHash",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "auditorWhitelistedAddresses",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bscsDevAddress",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cakeLiquidityAddingTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cancelAndTransferTokensToDev",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimAllowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claimCycle",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claimTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "claimed",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "closeTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collectFundsRaised",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getRefund",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "hardCapInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "invest",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "investments",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isAudited",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkGithub",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkLogo",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkTelegram",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkTwitter",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkWebsite",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxInvestInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minInvestInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "openTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "presaleCancelled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "refundAllowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "saleTitle",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_unsoldTokensDumpAddress",
"type": "address"
}
],
"name": "setAddressInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_auditor",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "_isVerified",
"type": "bool"
},
{
"internalType": "bool",
"name": "_isWarning",
"type": "bool"
},
{
"internalType": "string",
"name": "_verifiedHash",
"type": "string"
},
{
"internalType": "string",
"name": "_warningHash",
"type": "string"
}
],
"name": "setAuditorInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_claimCycle",
"type": "uint256"
}
],
"name": "setClaimCycle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_totalTokens",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_tokenPriceInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_hardCapInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_softCapInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maxInvestInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_minInvestInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_openTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_closeTime",
"type": "uint256"
}
],
"name": "setGeneralInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_refundAllowed",
"type": "bool"
}
],
"name": "setRefundAllowed",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_saleTitle",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkTelegram",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkGithub",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkTwitter",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkWebsite",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkLogo",
"type": "bytes32"
}
],
"name": "setStringInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "softCapInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenPriceInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokensLeft",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalCollectedWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalInvestorsCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalTokens",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "transferUnsoldTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unsoldTokensDumpAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "whitelistedAddresses",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
]
}
{
"compiler": {
"version": "0.6.12+commit.27d51765"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "_bscsDevAddress",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_whitelistedAddresses",
"type": "address[]"
}
],
"name": "addAuditorWhitelistedAddresses",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "_whitelistedAddresses",
"type": "address[]"
}
],
"name": "addWhitelistedAddresses",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_cakeLiquidityAddingTime",
"type": "uint256"
}
],
"name": "allowClaim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "auditInformation",
"outputs": [
{
"internalType": "bytes32",
"name": "auditor",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "isVerified",
"type": "bool"
},
{
"internalType": "bool",
"name": "isWarning",
"type": "bool"
},
{
"internalType": "string",
"name": "verifiedHash",
"type": "string"
},
{
"internalType": "string",
"name": "warningHash",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "auditorWhitelistedAddresses",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "bscsDevAddress",
"outputs": [
{
"internalType": "address payable",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cakeLiquidityAddingTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cancelAndTransferTokensToDev",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimAllowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claimCycle",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "claimTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "claimed",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "closeTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "collectFundsRaised",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getRefund",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "hardCapInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "invest",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "investments",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isAudited",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkGithub",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkLogo",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkTelegram",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkTwitter",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "linkWebsite",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxInvestInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minInvestInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "openTime",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "presaleCancelled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "refundAllowed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "saleTitle",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_tokenAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_unsoldTokensDumpAddress",
"type": "address"
}
],
"name": "setAddressInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_auditor",
"type": "bytes32"
},
{
"internalType": "bool",
"name": "_isVerified",
"type": "bool"
},
{
"internalType": "bool",
"name": "_isWarning",
"type": "bool"
},
{
"internalType": "string",
"name": "_verifiedHash",
"type": "string"
},
{
"internalType": "string",
"name": "_warningHash",
"type": "string"
}
],
"name": "setAuditorInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_claimCycle",
"type": "uint256"
}
],
"name": "setClaimCycle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_totalTokens",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_tokenPriceInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_hardCapInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_softCapInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_maxInvestInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_minInvestInWei",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_openTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_closeTime",
"type": "uint256"
}
],
"name": "setGeneralInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_refundAllowed",
"type": "bool"
}
],
"name": "setRefundAllowed",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_saleTitle",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkTelegram",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkGithub",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkTwitter",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkWebsite",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_linkLogo",
"type": "bytes32"
}
],
"name": "setStringInfo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "softCapInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "token",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokenPriceInWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "tokensLeft",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalCollectedWei",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalInvestorsCount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalTokens",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "transferUnsoldTokens",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unsoldTokensDumpAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "whitelistedAddresses",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"contracts/STARTPresale.sol": "STARTPresale"
},
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/IERC20.sol": {
"keccak256": "0x5d0a86c0b0ad954100745085b94e760904929d6b33e3b743b9e55c22e26d7f6a",
"urls": [
"bzz-raw://b0f1f9c325f1dc3f5a3c88e31e77044ffbc69fd0c2aadfa0db714d356ceb123f",
"dweb:/ipfs/QmSt2Va55bFSYBsEw6NC5zmoyUP2r3zYafdKMM6weAypLK"
]
},
"contracts/STARTPresale.sol": {
"keccak256": "0x5d2593d231ae76d62446384c7285d59c9d84bb003c6e3a59eab2b300535971bf",
"license": "MIT",
"urls": [
"bzz-raw://4f081a0250c7da75615539a1fa6df1d792db93552f345297e875c8e2200abaed",
"dweb:/ipfs/QmQUCo7tgS1GpHKTciEfL6Ne42h9xxyhpqfWg1c5Y5GRUT"
]
},
"contracts/SafeMath.sol": {
"keccak256": "0xd4ef3a6c13732df33decc0f911a7d3fb2f034b1e195b9904618d2f46ef1437fe",
"urls": [
"bzz-raw://18af24af1865c85581efee0812870b5b3690fd995324051158b8d23346669ea0",
"dweb:/ipfs/QmbGvWQh4JhmZYiUUBayF4mmfrTQUWnnpmF7VbinyZDiMR"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import "./interfaces/IERC20.sol";
import "./BSCstarterPresale.sol";
import "./BSCstarterInfo.sol";
import "./BSCstarterLiquidityLock.sol";
import "./lib/ReentrancyGuard.sol";
import "./STARToken.sol";
import "./BSCstarterStaking.sol";
interface IPancakeSwapV2Factory {
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
}
contract BSCstarterFactory is ReentrancyGuard {
using SafeMath for uint256;
event PresaleCreated(bytes32 title, uint256 bscsId, address creator);
event Received(address indexed from, uint256 amount);
BSCstarterInfo public immutable BSCS;
STARToken public bscsToken;
BSCstarterStaking public bscsStakingPool;
mapping(address => uint256) public lastClaimedTimestamp;
constructor(
address _bscsInfoAddress,
address _bscsToken,
address _bscsStakingPool
) public {
BSCS = BSCstarterInfo(_bscsInfoAddress);
bscsToken = STARToken(_bscsToken);
bscsStakingPool = BSCstarterStaking(_bscsStakingPool);
}
receive() external payable {
emit Received(msg.sender, msg.value);
}
struct PresaleInfo {
address tokenAddress;
address unsoldTokensDumpAddress;
address[] whitelistedAddresses;
uint256 tokenPriceInWei;
uint256 hardCapInWei;
uint256 softCapInWei;
uint256 maxInvestInWei;
uint256 minInvestInWei;
uint256 openTime;
uint256 closeTime;
}
struct PresalePancakeSwapInfo {
uint256 listingPriceInWei;
uint256 liquidityAddingTime;
uint256 lpTokensLockDurationInDays;
uint256 liquidityPercentageAllocation;
}
struct PresaleStringInfo {
bytes32 saleTitle;
bytes32 linkTelegram;
bytes32 linkGithub;
bytes32 linkTwitter;
bytes32 linkWebsite;
bytes32 linkLogo;
}
// copied from https://github.com/pancakeswap/pancake-swap-periphery/blob/master/contracts/libraries/PancakeLibrary.sol
// calculates the CREATE2 address for a pair without making any external calls
function cakeV2LibPairFor(
address factory,
address tokenA,
address tokenB
) internal pure returns (address pair) {
(address token0, address token1) =
tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
pair = address(
uint256(
keccak256(
abi.encodePacked(
hex"ff",
factory,
keccak256(abi.encodePacked(token0, token1)),
hex"d0d4c4cd0848c93cb4fd1f498d7013ee6bfb25783ea21593d5834f5d250ece66" // init code hash
)
)
)
);
}
function initializePresale(
BSCstarterPresale _presale,
uint256 _totalTokens,
uint256 _finalTokenPriceInWei,
PresaleInfo calldata _info,
PresalePancakeSwapInfo calldata _cakeInfo,
PresaleStringInfo calldata _stringInfo
) internal {
_presale.setAddressInfo(
msg.sender,
_info.tokenAddress,
address(bscsToken),
_info.unsoldTokensDumpAddress
);
_presale.setGeneralInfo(
_totalTokens,
_finalTokenPriceInWei,
_info.hardCapInWei,
_info.softCapInWei,
_info.maxInvestInWei,
_info.minInvestInWei,
_info.openTime,
_info.closeTime
);
_presale.setPancakeSwapInfo(
_cakeInfo.listingPriceInWei,
_cakeInfo.liquidityAddingTime,
_cakeInfo.lpTokensLockDurationInDays,
_cakeInfo.liquidityPercentageAllocation
);
_presale.setStringInfo(
_stringInfo.saleTitle,
_stringInfo.linkTelegram,
_stringInfo.linkGithub,
_stringInfo.linkTwitter,
_stringInfo.linkWebsite,
_stringInfo.linkLogo
);
_presale.addWhitelistedAddresses(_info.whitelistedAddresses);
_presale.setMinInvestorBSCSBalance(BSCS.getMinInvestorBSCSBalance());
}
function createPresale(
PresaleInfo calldata _info,
PresalePancakeSwapInfo calldata _cakeInfo,
PresaleStringInfo calldata _stringInfo
) external {
IERC20 token = IERC20(_info.tokenAddress);
BSCstarterPresale presale =
new BSCstarterPresale(
address(this),
address(BSCS),
BSCS.owner(),
BSCS.getMinRewardQualifyBal(),
BSCS.getMinRewardQualifyPercentage()
);
IPancakeSwapV2Factory pancakeSwapFactory =
IPancakeSwapV2Factory(BSCS.getPancakeSwapFactory());
uint256 maxBnbPoolTokenAmount =
_info.hardCapInWei.mul(_cakeInfo.liquidityPercentageAllocation).div(
100
);
uint256 maxLiqPoolTokenAmount =
maxBnbPoolTokenAmount.mul(1e18).div(_cakeInfo.listingPriceInWei);
uint256 maxTokensToBeSold =
_info.hardCapInWei.mul(1e18).div(_info.tokenPriceInWei);
uint256 requiredTokenAmount =
maxLiqPoolTokenAmount.add(maxTokensToBeSold);
token.transferFrom(msg.sender, address(presale), requiredTokenAmount);
uint256 presaleGrantId;
if (
bscsToken.balanceOf(address(this)) >= BSCS.getPresaleGrantAmount()
) {
// locked incubator bonus BSCS tokens if presale succeeds
BSCstarterLiquidityLock incubatorLock =
new BSCstarterLiquidityLock(
bscsToken,
_cakeInfo.liquidityAddingTime + 30 days,
BSCS.getIncubatorMsigAddress(),
msg.sender
);
bscsToken.transfer(
address(incubatorLock),
BSCS.getPresaleGrantAmount()
);
presaleGrantId = BSCS.addPresaleGrantAddress(
address(incubatorLock)
);
}
initializePresale(
presale,
maxTokensToBeSold,
_info.tokenPriceInWei,
_info,
_cakeInfo,
_stringInfo
);
address pairAddress =
cakeV2LibPairFor(
address(pancakeSwapFactory),
address(token),
BSCS.getWBNB()
);
BSCstarterLiquidityLock liquidityLock =
new BSCstarterLiquidityLock(
IERC20(pairAddress),
_cakeInfo.liquidityAddingTime +
(_cakeInfo.lpTokensLockDurationInDays * 1 days),
msg.sender,
address(0)
);
uint256 bscsId = BSCS.addPresaleAddress(address(presale));
presale.setBscsInfo(
address(liquidityLock),
BSCS.getDevFeePercentage(),
BSCS.getMinDevFeeInWei(),
bscsId,
presaleGrantId,
address(bscsStakingPool)
);
emit PresaleCreated(_stringInfo.saleTitle, bscsId, msg.sender);
}
function claimHodlerFund() external nonReentrant {
require(address(this).balance > 0, "No rewards to claim");
require(
lastClaimedTimestamp[msg.sender] + BSCS.getMinClaimTime() <=
block.timestamp,
"Invalid Claim Time"
);
uint256 balance;
uint256 lastStakedTimestamp;
uint256 lastUnstakedTimestamp;
(balance, lastStakedTimestamp, lastUnstakedTimestamp) = bscsStakingPool
.accountInfos(msg.sender);
uint256 minStakeTime = BSCS.getMinStakeTime();
uint256 totalHodlerBalance = BSCS.getLockedBalance(msg.sender);
if (lastStakedTimestamp + minStakeTime <= block.timestamp) {
totalHodlerBalance = totalHodlerBalance.add(balance);
}
require(
totalHodlerBalance >= BSCS.getMinRewardQualifyBal() &&
totalHodlerBalance <= BSCS.getMaxRewardQualifyBal(),
"Do not qualify for rewards"
);
lastClaimedTimestamp[msg.sender] = block.timestamp;
msg.sender.transfer(
totalHodlerBalance.div(bscsToken.totalSupply()).mul(
address(this).balance
)
);
}
}
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import "./Ownable.sol";
import "./SafeMath.sol";
import "./STARTPresale.sol";
contract BSCstarterInfo is Ownable {
using SafeMath for uint256;
uint256 private devFeePercentage = 2; // fees going to dev AND BSCS hodlers (2% each)
uint256 private minDevFeeInWei = 5 ether; // min fee amount going to dev AND BSCS hodlers
uint256 private maxRewardQualifyBal = 20000 * 1e18; // max amount to HODL to qualify for BNB fee rewards
uint256 private minRewardQualifyBal = 1250 * 1e18; // min amount to HODL to qualify for BNB fee rewards
uint256 private minRewardQualifyPercentage = 10; // percentage of discount on tokens for qualifying holders
uint256 private presaleGrantAmount = 100 * 1e18; // grant given to 'good' projects 30 days after raise
address private incubatorMsigAddress; // community address used to release presale incubator grants
address[] private presaleAddresses; // track all presales created
address[] private presaleGrantAddresses; // track all presale grants assigned
uint256 private minInvestorBSCSBalance = 100 * 1e18; // min amount to investors HODL BSCS balance
uint256 private minStakeTime = 24 hours;
uint256 private minUnstakeTime = 24 hours;
uint256 private minClaimTime = 7 days;
address payable[] private bscsTokenPresales;
address private pancakeSwapRouter =
address(0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F);
address private pancakeSwapFactory =
address(0xBCfCcbde45cE874adCB698cC183deBcF17952812);
address private wbnb = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);
address private bscsFactoryAddress;
// constructor(address payable[] memory _bscsTokenPresales) public {
// bscsTokenPresales = _bscsTokenPresales;
// }
modifier onlyFactory() {
require(bscsFactoryAddress == msg.sender);
_;
}
function getBscsFactoryAddress() external view returns (address) {
return bscsFactoryAddress;
}
function setBscsFactoryAddress(address _newFactoryAddress)
external
onlyOwner
{
bscsFactoryAddress = _newFactoryAddress;
}
function addPresaleAddress(address _presale)
external
onlyFactory
returns (uint256)
{
presaleAddresses.push(_presale);
return presaleAddresses.length - 1;
}
function getPresalesCount() external view returns (uint256) {
return presaleAddresses.length;
}
function getPresaleAddress(uint256 bscsId) external view returns (address) {
return presaleAddresses[bscsId];
}
function addPresaleGrantAddress(address _presaleGrant)
external
onlyFactory
returns (uint256)
{
presaleGrantAddresses.push(_presaleGrant);
return presaleGrantAddresses.length - 1;
}
function getPresaleGrantsCount() external view returns (uint256) {
return presaleGrantAddresses.length;
}
function getPresaleGrantAddress(uint256 _id)
external
view
returns (address)
{
return presaleGrantAddresses[_id];
}
function getDevFeePercentage() external view returns (uint256) {
return devFeePercentage;
}
function setDevFeePercentage(uint256 _devFeePercentage) external onlyOwner {
devFeePercentage = _devFeePercentage;
}
function getMinDevFeeInWei() external view returns (uint256) {
return minDevFeeInWei;
}
function setMinDevFeeInWei(uint256 _minDevFeeInWei) external onlyOwner {
minDevFeeInWei = _minDevFeeInWei;
}
function getPresaleGrantAmount() external view returns (uint256) {
return presaleGrantAmount;
}
function setPresaleGrantAmount(uint256 _presaleGrantAmount)
external
onlyOwner
{
require(
_presaleGrantAmount <= 5000 * 1e18,
"Invalid presale grant amount"
);
presaleGrantAmount = _presaleGrantAmount;
}
function getIncubatorMsigAddress() external view returns (address) {
return incubatorMsigAddress;
}
function setIncubatorMsigAddress(address _incubatorMsigAddress)
external
onlyOwner
{
incubatorMsigAddress = _incubatorMsigAddress;
}
function getMinRewardQualifyPercentage() external view returns (uint256) {
return minRewardQualifyPercentage;
}
function setMinRewardQualifyPercentage(uint256 _minRewardQualifyPercentage)
external
onlyOwner
{
minRewardQualifyPercentage = _minRewardQualifyPercentage;
}
function getMinRewardQualifyBal() external view returns (uint256) {
return minRewardQualifyBal;
}
function setMinRewardQualifyBal(uint256 _minRewardQualifyBal)
external
onlyOwner
{
minRewardQualifyBal = _minRewardQualifyBal;
}
function getMaxRewardQualifyBal() external view returns (uint256) {
return maxRewardQualifyBal;
}
function setMaxRewardQualifyBal(uint256 _maxRewardQualifyBal)
external
onlyOwner
{
maxRewardQualifyBal = _maxRewardQualifyBal;
}
function getMinInvestorBSCSBalance() external view returns (uint256) {
return minInvestorBSCSBalance;
}
function setMinInvestorBSCSBalance(uint256 _minInvestorBSCSBalance)
external
onlyOwner
{
minInvestorBSCSBalance = _minInvestorBSCSBalance;
}
function getMinStakeTime() external view returns (uint256) {
return minStakeTime;
}
function setMinStakeTime(uint256 _minStakeTime) external onlyOwner {
minStakeTime = _minStakeTime;
}
function getMinUnstakeTime() external view returns (uint256) {
return minUnstakeTime;
}
function setMinUnstakeTime(uint256 _minUnstakeTime) external onlyOwner {
minUnstakeTime = _minUnstakeTime;
}
function getMinClaimTime() external view returns (uint256) {
return minClaimTime;
}
function setMinClaimTime(uint256 _minClaimTime) external onlyOwner {
minClaimTime = _minClaimTime;
}
function getBscsTokenPresales()
external
view
returns (address payable[] memory)
{
return bscsTokenPresales;
}
function setBscsTokenPresales(address payable[] memory _bscsTokenPresales)
external
onlyOwner
{
bscsTokenPresales = _bscsTokenPresales;
}
function getLockedBalance(address payable sender)
external
view
returns (uint256 totalLockedBalance)
{
totalLockedBalance = 0;
for (uint256 i = 0; i < bscsTokenPresales.length; i++) {
STARTPresale tokenPresale = STARTPresale(bscsTokenPresales[i]);
uint256 senderInvestment = tokenPresale.investments(sender);
uint256 senderClaimed = tokenPresale.claimed(sender);
if (senderInvestment > 0 && senderClaimed < 4) {
uint256 poolTokenPriceInWei = tokenPresale.tokenPriceInWei();
uint256 poolLockedBalance =
senderInvestment
.div(4)
.mul(4 - senderClaimed)
.mul(1e18)
.div(poolTokenPriceInWei);
totalLockedBalance = totalLockedBalance.add(poolLockedBalance);
}
}
}
function getPancakeSwapRouter() external view returns (address) {
return pancakeSwapRouter;
}
function setPancakeSwapRouter(address _pancakeSwapRouter)
external
onlyOwner
{
pancakeSwapRouter = _pancakeSwapRouter;
}
function getPancakeSwapFactory() external view returns (address) {
return pancakeSwapFactory;
}
function setPancakeSwapFactory(address _pancakeSwapFactory)
external
onlyOwner
{
pancakeSwapFactory = _pancakeSwapFactory;
}
function getWBNB() external view returns (address) {
return wbnb;
}
function setWBNB(address _wbnb) external onlyOwner {
wbnb = _wbnb;
}
}
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./TokenTimelock.sol";
contract BSCstarterLiquidityLock is TokenTimelock {
constructor(
IERC20 _token,
uint256 _releaseTime,
address primaryBeneficiary,
address secondaryBeneficiary
) public TokenTimelock(_token, _releaseTime, primaryBeneficiary, secondaryBeneficiary) {}
}
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./lib/SafeMath.sol";
import "./interfaces/IERC20.sol";
import "./STARTPresale.sol";
import "./BSCstarterStaking.sol";
import "./BSCstarterInfo.sol";
interface IPancakeSwapV2Router02 {
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
contract BSCstarterPresale {
using SafeMath for uint256;
address payable internal bscsFactoryAddress; // address that creates the presale contracts
address payable public bscsDevAddress; // address where dev fees will be transferred to
address public bscsLiqLockAddress; // address where LP tokens will be locked
BSCstarterStaking public bscsStakingPool;
BSCstarterInfo public bscStarterInfo;
IERC20 public token; // token that will be sold
IERC20 public bscsToken; // system token
address payable public presaleCreatorAddress; // address where percentage of invested wei will be transferred to
address public unsoldTokensDumpAddress; // address where unsold tokens will be transferred to
mapping(address => uint256) public investments; // total wei invested per address
mapping(address => bool) public whitelistedAddresses; // addresses eligible in presale
mapping(address => bool) public claimed; // if true, it means investor already claimed the tokens or got a refund
uint256 private bscsDevFeePercentage; // dev fee to support the development of BSCstarter
uint256 private bscsMinDevFeeInWei; // minimum fixed dev fee to support the development of BSCstarter
uint256 public bscsId; // used for fetching presale without referencing its address
uint256 public presaleGrantId; // tracks any incubator grants given
uint256 public totalInvestorsCount; // total investors count
uint256 public presaleCreatorClaimWei; // wei to transfer to presale creator per investor claim
uint256 public presaleCreatorClaimTime; // time when presale creator can collect funds raise
uint256 public totalCollectedWei; // total wei collected
uint256 public totalTokens; // total tokens to be sold
uint256 public tokensLeft; // available tokens to be sold
uint256 public tokenPriceInWei; // token presale wei price per 1 token
uint256 public hardCapInWei; // maximum wei amount that can be invested in presale
uint256 public softCapInWei; // minimum wei amount to invest in presale, if not met, invested wei will be returned
uint256 public maxInvestInWei; // maximum wei amount that can be invested per wallet address
uint256 public minInvestInWei; // minimum wei amount that can be invested per wallet address
uint256 public openTime; // time when presale starts, investing is allowed
uint256 public closeTime; // time when presale closes, investing is not allowed
uint256 public cakeListingPriceInWei; // token price when listed in PancakeSwap
uint256 public cakeLiquidityAddingTime; // time when adding of liquidity in PancakeSwap starts, investors can claim their tokens afterwards
uint256 public cakeLPTokensLockDurationInDays; // how many days after the liquity is added the presale creator can unlock the LP tokens
uint256 public cakeLiquidityPercentageAllocation; // how many percentage of the total invested wei that will be added as liquidity
mapping(address => uint256) public voters; // addresses voting on sale
uint256 public noVotes; // total number of no votes
uint256 public yesVotes; // total number of yes votes
uint256 public minYesVotesThreshold = 100000 * 1e18; // minimum number of yes votes needed to pass
uint256 public minVoterBSCSBalance = 1000 * 1e18; // minimum number of BSCS tokens to hold to vote
uint256 public minInvestorBSCSBalance; // minimum number of BSCS tokens to hold to invest
uint256 public minRewardQualifyBal; // min amount to HODL to qualify for token discounts
uint256 public minRewardQualifyPercentage; // percentage of discount on tokens for qualifying holders
bool public cakeLiquidityAdded = false; // if true, liquidity is added in PancakeSwap and lp tokens are locked
bool public onlyWhitelistedAddressesAllowed = false; // if true, only whitelisted addresses can invest
bool public bscsDevFeesExempted = false; // if true, presale will be exempted from dev fees
bool public presaleCancelled = false; // if true, investing will not be allowed, investors can withdraw, presale creator can withdraw their tokens
bytes32 public saleTitle;
bytes32 public linkTelegram;
bytes32 public linkTwitter;
bytes32 public linkGithub;
bytes32 public linkWebsite;
bytes32 public linkLogo;
mapping(address => bool) public auditorWhitelistedAddresses; // addresses eligible to perform audit
struct AuditorInfo {
bytes32 auditor; // auditor name
bool isVerified; // if true -> passed, false -> failed
bool isWarning; // if true -> warning, false -> no warning
string verifiedHash; // stores content of audit summary (actual text)
string warningHash; // stores content of warnings
}
AuditorInfo public auditInformation;
constructor(
address _bscsFactoryAddress,
address _bscStarterInfo,
address _bscsDevAddress,
uint256 _minRewardQualifyBal,
uint256 _minRewardQualifyPercentage
) public {
require(_bscsFactoryAddress != address(0));
require(_bscsDevAddress != address(0));
bscsFactoryAddress = payable(_bscsFactoryAddress);
bscsDevAddress = payable(_bscsDevAddress);
minRewardQualifyBal = _minRewardQualifyBal;
minRewardQualifyPercentage = _minRewardQualifyPercentage;
bscStarterInfo = BSCstarterInfo(_bscStarterInfo);
}
modifier onlyBscsDev() {
require(
bscsFactoryAddress == msg.sender || bscsDevAddress == msg.sender
);
_;
}
modifier onlyPresaleCreatorOrBscsFactory() {
require(
presaleCreatorAddress == msg.sender ||
bscsFactoryAddress == msg.sender,
"Not presale creator or factory"
);
_;
}
modifier onlyPresaleCreatorOrBscsDev() {
require(
presaleCreatorAddress == msg.sender || bscsDevAddress == msg.sender,
"Not presale creator or dev"
);
_;
}
modifier onlyPresaleCreator() {
require(presaleCreatorAddress == msg.sender, "Not presale creator");
_;
}
modifier whitelistedAddressOnly() {
require(
!onlyWhitelistedAddressesAllowed ||
whitelistedAddresses[msg.sender],
"Address not whitelisted"
);
_;
}
modifier presaleIsNotCancelled() {
require(!presaleCancelled, "Cancelled");
_;
}
modifier investorOnly() {
require(investments[msg.sender] > 0, "Not an investor");
_;
}
modifier notYetClaimedOrRefunded() {
require(!claimed[msg.sender], "Already claimed or refunded");
_;
}
modifier votesPassed() {
require(
yesVotes > noVotes && yesVotes >= minYesVotesThreshold,
"Votes not passed"
);
_;
}
modifier whitelistedAuditorOnly() {
require(
auditorWhitelistedAddresses[msg.sender],
"Auditor Address not whitelisted"
);
_;
}
function setAddressInfo(
address _presaleCreator,
address _tokenAddress,
address _bscsTokenAddress,
address _unsoldTokensDumpAddress
) external onlyPresaleCreatorOrBscsFactory {
require(_presaleCreator != address(0));
require(_tokenAddress != address(0));
require(_unsoldTokensDumpAddress != address(0));
presaleCreatorAddress = payable(_presaleCreator);
token = IERC20(_tokenAddress);
bscsToken = IERC20(_bscsTokenAddress);
unsoldTokensDumpAddress = _unsoldTokensDumpAddress;
}
function setGeneralInfo(
uint256 _totalTokens,
uint256 _tokenPriceInWei,
uint256 _hardCapInWei,
uint256 _softCapInWei,
uint256 _maxInvestInWei,
uint256 _minInvestInWei,
uint256 _openTime,
uint256 _closeTime
) external onlyPresaleCreatorOrBscsFactory {
require(_totalTokens > 0);
require(_tokenPriceInWei > 0);
require(_openTime > 0);
require(_closeTime > 0);
require(_hardCapInWei > 0);
// Hard cap > (token amount * token price)
require(_hardCapInWei <= _totalTokens.mul(_tokenPriceInWei));
// Soft cap > to hard cap
require(_softCapInWei <= _hardCapInWei);
// Min. wei investment > max. wei investment
require(_minInvestInWei <= _maxInvestInWei);
// Open time >= close time
require(_openTime < _closeTime);
totalTokens = _totalTokens;
tokensLeft = _totalTokens;
tokenPriceInWei = _tokenPriceInWei;
hardCapInWei = _hardCapInWei;
softCapInWei = _softCapInWei;
maxInvestInWei = _maxInvestInWei;
minInvestInWei = _minInvestInWei;
openTime = _openTime;
closeTime = _closeTime;
}
function setPancakeSwapInfo(
uint256 _cakeListingPriceInWei,
uint256 _cakeLiquidityAddingTime,
uint256 _cakeLPTokensLockDurationInDays,
uint256 _cakeLiquidityPercentageAllocation
) external onlyPresaleCreatorOrBscsFactory {
require(_cakeListingPriceInWei > 0);
require(_cakeLiquidityAddingTime > 0);
require(_cakeLPTokensLockDurationInDays > 0);
require(_cakeLiquidityPercentageAllocation > 0);
require(closeTime > 0);
// Listing time < close time
require(_cakeLiquidityAddingTime >= closeTime);
cakeListingPriceInWei = _cakeListingPriceInWei;
cakeLiquidityAddingTime = _cakeLiquidityAddingTime;
cakeLPTokensLockDurationInDays = _cakeLPTokensLockDurationInDays;
cakeLiquidityPercentageAllocation = _cakeLiquidityPercentageAllocation;
}
function setStringInfo(
bytes32 _saleTitle,
bytes32 _linkTelegram,
bytes32 _linkGithub,
bytes32 _linkTwitter,
bytes32 _linkWebsite,
bytes32 _linkLogo
) external onlyPresaleCreatorOrBscsFactory {
saleTitle = _saleTitle;
linkTelegram = _linkTelegram;
linkGithub = _linkGithub;
linkTwitter = _linkTwitter;
linkWebsite = _linkWebsite;
linkLogo = _linkLogo;
}
function setAuditorInfo(
bytes32 _auditor,
bool _isVerified,
bool _isWarning,
string calldata _verifiedHash,
string calldata _warningHash
) external whitelistedAuditorOnly {
auditInformation.auditor = _auditor;
auditInformation.isVerified = _isVerified;
auditInformation.isWarning = _isWarning;
auditInformation.verifiedHash = _verifiedHash;
auditInformation.warningHash = _warningHash;
}
function setBscsInfo(
address _bscsLiqLockAddress,
uint256 _bscsDevFeePercentage,
uint256 _bscsMinDevFeeInWei,
uint256 _bscsId,
uint256 _presaleGrantId,
address _bscsStakingPool
) external onlyBscsDev {
bscsLiqLockAddress = _bscsLiqLockAddress;
bscsDevFeePercentage = _bscsDevFeePercentage;
bscsMinDevFeeInWei = _bscsMinDevFeeInWei;
bscsId = _bscsId;
presaleGrantId = _presaleGrantId;
bscsStakingPool = BSCstarterStaking(_bscsStakingPool);
}
function setBscsDevFeesExempted(bool _bscsDevFeesExempted)
external
onlyBscsDev
{
bscsDevFeesExempted = _bscsDevFeesExempted;
}
function setOnlyWhitelistedAddressesAllowed(
bool _onlyWhitelistedAddressesAllowed
) external onlyPresaleCreatorOrBscsFactory {
onlyWhitelistedAddressesAllowed = _onlyWhitelistedAddressesAllowed;
}
function setMinVoterBSCSBalance(uint256 _minVoterBSCSBalance)
external
onlyBscsDev
{
require(_minVoterBSCSBalance >= 10 * 1e18);
minVoterBSCSBalance = _minVoterBSCSBalance * 1e18;
}
function setMinYesVotesThreshold(uint256 _minYesVotesThreshold)
external
onlyBscsDev
{
require(_minYesVotesThreshold >= 10000 * 1e18); // cannot be < 1% of supply
minYesVotesThreshold = _minYesVotesThreshold * 1e18;
}
function setMinInvestorBSCSBalance(uint256 _minInvestorBSCSBalance)
external
onlyBscsDev
{
minInvestorBSCSBalance = _minInvestorBSCSBalance;
}
function addWhitelistedAddresses(address[] calldata _whitelistedAddresses)
external
onlyPresaleCreatorOrBscsFactory
{
onlyWhitelistedAddressesAllowed = _whitelistedAddresses.length > 0;
for (uint256 i = 0; i < _whitelistedAddresses.length; i++) {
whitelistedAddresses[_whitelistedAddresses[i]] = true;
}
}
function addAuditorWhitelistedAddresses(
address[] calldata _whitelistedAddresses
) external onlyBscsDev {
for (uint256 i = 0; i < _whitelistedAddresses.length; i++) {
auditorWhitelistedAddresses[_whitelistedAddresses[i]] = true;
}
}
function getTokenAmount(uint256 _weiAmount)
internal
view
returns (uint256)
{
uint256 balance;
uint256 lastStakedTimestamp;
uint256 lastUnstakedTimestamp;
(balance, lastStakedTimestamp, lastUnstakedTimestamp) = bscsStakingPool
.accountInfos(msg.sender);
uint256 minStakeTime = bscStarterInfo.getMinStakeTime();
uint256 bscsBalance = bscStarterInfo.getLockedBalance(msg.sender);
if (lastStakedTimestamp + minStakeTime <= block.timestamp) {
bscsBalance = bscsBalance.add(balance);
}
if (bscsBalance >= minRewardQualifyBal) {
uint256 pctQualifyingDiscount =
tokenPriceInWei.mul(minRewardQualifyPercentage).div(100);
return
_weiAmount.mul(1e18).div(
tokenPriceInWei.sub(pctQualifyingDiscount)
);
} else {
return _weiAmount.mul(1e18).div(tokenPriceInWei);
}
}
function invest()
public
payable
whitelistedAddressOnly
presaleIsNotCancelled
votesPassed
{
require(block.timestamp >= openTime, "Not yet opened");
require(block.timestamp < closeTime, "Closed");
require(totalCollectedWei < hardCapInWei, "Hard cap reached");
require(tokensLeft > 0);
require(msg.value > 0);
uint256 balance;
uint256 lastStakedTimestamp;
uint256 lastUnstakedTimestamp;
(balance, lastStakedTimestamp, lastUnstakedTimestamp) = bscsStakingPool
.accountInfos(msg.sender);
uint256 minStakeTime = bscStarterInfo.getMinStakeTime();
uint256 bscsBalance = bscStarterInfo.getLockedBalance(msg.sender);
if (lastStakedTimestamp + minStakeTime <= block.timestamp) {
bscsBalance = bscsBalance.add(balance);
}
if (bscsBalance >= minRewardQualifyBal) {
// apply discount to qualifying hodlers
uint256 pctQualifyingDiscount =
tokenPriceInWei.mul(minRewardQualifyPercentage).div(100);
require(
msg.value <=
tokensLeft
.mul(tokenPriceInWei.sub(pctQualifyingDiscount))
.div(1e18),
"Not enough tokens left"
);
} else {
require(
msg.value <= tokensLeft.mul(tokenPriceInWei).div(1e18),
"Not enough tokens left"
);
}
uint256 totalInvestmentInWei = investments[msg.sender].add(msg.value);
require(
totalInvestmentInWei >= minInvestInWei ||
totalCollectedWei >= hardCapInWei.sub(1 ether),
"Min investment not reached"
);
require(
maxInvestInWei == 0 || totalInvestmentInWei <= maxInvestInWei,
"Max investment reached"
);
if (minInvestorBSCSBalance > 0) {
require(
bscsBalance >= minInvestorBSCSBalance,
"Not enough BSCS on account"
);
}
if (investments[msg.sender] == 0) {
totalInvestorsCount = totalInvestorsCount.add(1);
}
totalCollectedWei = totalCollectedWei.add(msg.value);
investments[msg.sender] = totalInvestmentInWei;
tokensLeft = tokensLeft.sub(getTokenAmount(msg.value));
}
receive() external payable {
invest();
}
function addLiquidityAndLockLPTokens() external presaleIsNotCancelled {
require(totalCollectedWei > 0);
require(!cakeLiquidityAdded, "Liquidity already added");
require(
!onlyWhitelistedAddressesAllowed ||
whitelistedAddresses[msg.sender] ||
msg.sender == presaleCreatorAddress,
"Not whitelisted or not presale creator"
);
if (
totalCollectedWei >= hardCapInWei.sub(1 ether) &&
block.timestamp < cakeLiquidityAddingTime
) {
require(msg.sender == presaleCreatorAddress, "Not presale creator");
} else if (block.timestamp >= cakeLiquidityAddingTime) {
require(
msg.sender == presaleCreatorAddress ||
investments[msg.sender] > 0,
"Not presale creator or investor"
);
require(totalCollectedWei >= softCapInWei, "Soft cap not reached");
} else {
revert("Liquidity cannot be added yet");
}
cakeLiquidityAdded = true;
uint256 finalTotalCollectedWei = totalCollectedWei;
uint256 bscsDevFeeInWei;
if (!bscsDevFeesExempted) {
uint256 pctDevFee =
finalTotalCollectedWei.mul(bscsDevFeePercentage).div(100);
bscsDevFeeInWei = pctDevFee > bscsMinDevFeeInWei ||
bscsMinDevFeeInWei >= finalTotalCollectedWei
? pctDevFee
: bscsMinDevFeeInWei;
}
if (bscsDevFeeInWei > 0) {
finalTotalCollectedWei = finalTotalCollectedWei.sub(
bscsDevFeeInWei
);
bscsDevAddress.transfer(bscsDevFeeInWei);
// factory manages BSCS hodlers fund where they can claim earned BNB rewards
finalTotalCollectedWei = finalTotalCollectedWei.sub(
bscsDevFeeInWei
);
bscsFactoryAddress.transfer(bscsDevFeeInWei);
}
uint256 liqPoolEthAmount =
finalTotalCollectedWei.mul(cakeLiquidityPercentageAllocation).div(
100
);
uint256 liqPoolTokenAmount =
liqPoolEthAmount.mul(1e18).div(cakeListingPriceInWei);
IPancakeSwapV2Router02 pancakeSwapRouter =
IPancakeSwapV2Router02(
address(bscStarterInfo.getPancakeSwapRouter())
);
token.approve(address(pancakeSwapRouter), liqPoolTokenAmount);
pancakeSwapRouter.addLiquidityETH{value: liqPoolEthAmount}(
address(token),
liqPoolTokenAmount,
0,
0,
bscsLiqLockAddress,
block.timestamp.add(15 minutes)
);
presaleCreatorClaimWei = address(this).balance.mul(1e18).div(
totalInvestorsCount.mul(1e18)
);
presaleCreatorClaimTime = block.timestamp + 1 days;
}
function vote(bool yes) external presaleIsNotCancelled {
uint256 balance;
uint256 lastStakedTimestamp;
uint256 lastUnstakedTimestamp;
(balance, lastStakedTimestamp, lastUnstakedTimestamp) = bscsStakingPool
.accountInfos(msg.sender);
uint256 minStakeTime = bscStarterInfo.getMinStakeTime();
uint256 voterBalance = bscStarterInfo.getLockedBalance(msg.sender);
if (lastStakedTimestamp + minStakeTime <= block.timestamp) {
voterBalance = voterBalance.add(balance);
}
require(voterBalance >= minVoterBSCSBalance, "Not enough BSCS to vote");
require(voters[msg.sender] == 0, "Vote already casted");
voters[msg.sender] = voterBalance;
if (yes) {
yesVotes = yesVotes.add(voterBalance);
} else {
noVotes = noVotes.add(voterBalance);
}
}
function claimTokens()
external
whitelistedAddressOnly
presaleIsNotCancelled
investorOnly
notYetClaimedOrRefunded
{
require(cakeLiquidityAdded, "Liquidity not yet added");
claimed[msg.sender] = true; // make sure this goes first before transfer to prevent reentrancy
token.transfer(msg.sender, getTokenAmount(investments[msg.sender]));
uint256 balance = address(this).balance;
if (balance > 0) {
uint256 funds =
presaleCreatorClaimWei > balance
? balance
: presaleCreatorClaimWei;
presaleCreatorAddress.transfer(funds);
}
}
function getRefund()
external
whitelistedAddressOnly
investorOnly
notYetClaimedOrRefunded
{
if (!presaleCancelled) {
require(block.timestamp >= openTime, "Not yet opened");
require(block.timestamp >= closeTime, "Not yet closed");
require(softCapInWei > 0, "No soft cap");
require(totalCollectedWei < softCapInWei, "Soft cap reached");
}
claimed[msg.sender] = true; // make sure this goes first before transfer to prevent reentrancy
uint256 investment = investments[msg.sender];
uint256 presaleBalance = address(this).balance;
require(presaleBalance > 0);
if (investment > presaleBalance) {
investment = presaleBalance;
}
if (investment > 0) {
msg.sender.transfer(investment);
}
}
function cancelAndTransferTokensToPresaleCreator() external {
if (
!cakeLiquidityAdded &&
presaleCreatorAddress != msg.sender &&
bscsDevAddress != msg.sender
) {
revert();
}
if (cakeLiquidityAdded && bscsDevAddress != msg.sender) {
revert();
}
require(!presaleCancelled);
presaleCancelled = true;
uint256 balance = token.balanceOf(address(this));
if (balance > 0) {
token.transfer(presaleCreatorAddress, balance);
}
}
function collectFundsRaised() external onlyPresaleCreator {
require(cakeLiquidityAdded);
require(!presaleCancelled);
require(block.timestamp >= presaleCreatorClaimTime);
if (address(this).balance > 0) {
presaleCreatorAddress.transfer(address(this).balance);
}
}
function burnUnsoldTokens() external onlyPresaleCreatorOrBscsDev {
require(cakeLiquidityAdded);
require(!presaleCancelled);
require(block.timestamp >= presaleCreatorClaimTime + 1 days); // wait 2 days before allowing burn
uint256 unsoldTokensAmount = token.balanceOf(address(this));
if (unsoldTokensAmount > 0) {
token.transfer(unsoldTokensDumpAddress, unsoldTokensAmount);
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;
import "./lib/SafeMath.sol";
import "./lib/Address.sol";
import "./lib/SafeERC20.sol";
import "./lib/ReentrancyGuard.sol";
import "./STARToken.sol";
import "./BSCstarterInfo.sol";
contract BSCstarterStaking is ReentrancyGuard {
using SafeMath for uint256;
using Address for address;
using SafeERC20 for IERC20;
STARToken public bscsToken;
BSCstarterInfo public bscStarterInfo;
event Staked(address indexed from, uint256 amount);
event Unstaked(address indexed from, uint256 amount);
struct AccountInfo {
uint256 balance;
uint256 lastStakedTimestamp;
uint256 lastUnstakedTimestamp;
}
mapping(address => AccountInfo) public accountInfos;
constructor(address _bscsToken, address _bscStarterInfo) public {
bscsToken = STARToken(_bscsToken);
bscStarterInfo = BSCstarterInfo(_bscStarterInfo);
}
function stake(uint256 _amount) public nonReentrant {
require(_amount > 0, "Invalid amount");
require(bscsToken.balanceOf(msg.sender) >= _amount, "Invalid balance");
AccountInfo storage account = accountInfos[msg.sender];
bscsToken.transferFrom(msg.sender, address(this), _amount);
account.balance = account.balance.add(_amount);
account.lastStakedTimestamp = block.timestamp;
if (account.lastUnstakedTimestamp == 0) {
account.lastUnstakedTimestamp = block.timestamp;
}
emit Staked(msg.sender, _amount);
}
function unstake(uint256 _amount, uint256 _burnFeePercent)
external
nonReentrant
{
AccountInfo storage account = accountInfos[msg.sender];
uint256 minUnstakeTime = bscStarterInfo.getMinUnstakeTime();
require(
account.lastUnstakedTimestamp + minUnstakeTime <= block.timestamp,
"Invalid unstake time"
);
require(account.balance > 0, "Nothing to unstake");
require(_amount > 0, "Invalid amount");
if (account.balance < _amount) {
_amount = account.balance;
}
account.balance = account.balance.sub(_amount);
account.lastUnstakedTimestamp = block.timestamp;
uint256 burnAmount = _amount.mul(_burnFeePercent);
if (burnAmount > 0) {
_amount = _amount.sub(burnAmount);
bscsToken.transfer(
address(0x000000000000000000000000000000000000dEaD),
burnAmount
);
}
bscsToken.transfer(msg.sender, _amount);
emit Unstaked(msg.sender, _amount);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
// File: @openzeppelin/contracts/GSN/Context.sol
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
import "./Address.sol";
import "./Context.sol";
import "./SafeMath.sol";
import "../interfaces/IERC20.sol";
// File: @openzeppelin/contracts/token/ERC20/ERC20.sol
/**
* @dev 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}.
*/
contract ERC20 is Context, IERC20 {
using SafeMath for uint256;
using Address for address;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _allowances;
uint256 _totalSupply;
string private _name;
string private _symbol;
uint8 private _decimals;
/**
* @dev 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.
*/
constructor (string memory name, string memory symbol) public {
_name = name;
_symbol = symbol;
_decimals = 18;
}
/**
* @dev Returns the name of the token.
*/
function name() public view returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view returns (string memory) {
return _symbol;
}
/**
* @dev 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}.
*/
function decimals() public view returns (uint8) {
return _decimals;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev 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`.
*/
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev 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.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
/**
* @dev 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`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements
*
* - `to` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Sets {decimals} to a value other than the default one of 18.
*
* WARNING: This function should only be called from the constructor. Most
* applications that interact with token contracts will not expect
* {decimals} to ever change, and may work incorrectly if it does.
*/
function _setupDecimals(uint8 decimals_) internal {
_decimals = decimals_;
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be to transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev 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.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev 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.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev 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.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
/**
* @title Owned
* @dev Basic contract for authorization control.
* @author dicether
*/
contract Ownable {
address public owner;
address public pendingOwner;
event LogOwnerShipTransferred(address indexed previousOwner, address indexed newOwner);
event LogOwnerShipTransferInitiated(address indexed previousOwner, address indexed newOwner);
/**
* @dev Modifier, which throws if called by other account than owner.
*/
modifier onlyOwner {
require(msg.sender == owner);
_;
}
/**
* @dev Modifier throws if called by any account other than the pendingOwner.
*/
modifier onlyPendingOwner() {
require(msg.sender == pendingOwner);
_;
}
/**
* @dev Set contract creator as initial owner
*/
constructor() public {
owner = msg.sender;
pendingOwner = address(0);
}
/**
* @dev Allows the current owner to set the pendingOwner address.
* @param _newOwner The address to transfer ownership to.
*/
function transferOwnership(address _newOwner) public onlyOwner {
pendingOwner = _newOwner;
emit LogOwnerShipTransferInitiated(owner, _newOwner);
}
/**
* @dev PendingOwner can accept ownership.
*/
function claimOwnership() public onlyPendingOwner {
owner = pendingOwner;
pendingOwner = address(0);
emit LogOwnerShipTransferred(owner, pendingOwner);
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
// File: @openzeppelin/contracts/utils/ReentrancyGuard.sol
/**
* @dev 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].
*/
contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor () internal {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
import "./Address.sol";
import "./SafeMath.sol";
import "../interfaces/IERC20.sol";
// File: @openzeppelin/contracts/token/ERC20/SafeERC20.sol
/**
* @title SafeERC20
* @dev 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.
*/
library SafeERC20 {
using SafeMath for uint256;
using Address for address;
function safeTransfer(IERC20 token, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
_callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
/**
* @dev Deprecated. This function has issues similar to the ones found in
* {IERC20-approve}, and its usage is discouraged.
*
* Whenever possible, use {safeIncreaseAllowance} and
* {safeDecreaseAllowance} instead.
*/
function safeApprove(IERC20 token, address spender, uint256 value) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).add(value);
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
_callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function _callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
// the target address contains contract code and also asserts for success in the low-level call.
bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
// File: @openzeppelin/contracts/math/SafeMath.sol
/**
* @dev 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.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.12;
import "./lib/ERC20.sol";
contract STARToken is ERC20 {
constructor() public ERC20("BSCstarter", "START") {
_mint(msg.sender, 1000000 * (10 ** uint256(decimals())));
}
}
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./SafeMath.sol";
import "./IERC20.sol";
contract STARTPresale {
using SafeMath for uint256;
address payable public bscsDevAddress; // address of contract dev
IERC20 public token; // token that will be sold
address public unsoldTokensDumpAddress; // address where unsold tokens will be transferred to
mapping(address => uint256) public investments; // total wei invested per address
mapping(address => bool) public whitelistedAddresses; // addresses eligible in presale
mapping(address => uint256) public claimed; // if claimed=1, first period is claimed, claimed=2, second period is claimed, claimed=0, nothing claimed.
uint256 public totalInvestorsCount; // total investors count
uint256 public totalCollectedWei; // total wei collected
uint256 public totalTokens; // total tokens to be sold
uint256 public tokensLeft; // available tokens to be sold
uint256 public tokenPriceInWei; // token presale wei price per 1 token
uint256 public hardCapInWei; // maximum wei amount that can be invested in presale
uint256 public softCapInWei; // minimum wei amount to invest in presale, if not met, invested wei will be returned
uint256 public maxInvestInWei; // maximum wei amount that can be invested per wallet address
uint256 public minInvestInWei; // minimum wei amount that can be invested per wallet address
uint256 public openTime; // time when presale starts, investing is allowed
uint256 public closeTime; // time when presale closes, investing is not allowed
uint256 public cakeLiquidityAddingTime; // time when adding of liquidity in PancakeSwap starts, investors can claim their tokens afterwards
uint256 public claimCycle = 30 days;
bool public presaleCancelled = false; // if true, investing will not be allowed, investors can withdraw, presale creator can withdraw their tokens
bool public refundAllowed = false; // if true, investor can get refund his investment.
bool public claimAllowed = false; // if true, investory can claim tokens.
bool public isAudited = false; // if true, it's passed, false, it's not failed.
bytes32 public saleTitle;
bytes32 public linkTelegram;
bytes32 public linkTwitter;
bytes32 public linkGithub;
bytes32 public linkWebsite;
bytes32 public linkLogo;
mapping(address => bool) public auditorWhitelistedAddresses; // addresses eligible to perform audit
struct AuditorInfo {
bytes32 auditor; // auditor name
bool isVerified; // if true -> passed, false -> failed
bool isWarning; // if true -> warning, false -> no warning
string verifiedHash; // stores content of audit summary (actual text)
string warningHash; // stores content of warnings
}
AuditorInfo public auditInformation;
constructor(address _bscsDevAddress) public {
require(_bscsDevAddress != address(0));
bscsDevAddress = payable(_bscsDevAddress);
}
modifier onlyBscsDev() {
require(bscsDevAddress == msg.sender);
_;
}
modifier whitelistedAddressOnly() {
require(
whitelistedAddresses[msg.sender],
"Address not whitelisted"
);
_;
}
modifier presaleIsNotCancelled() {
require(!presaleCancelled, "Cancelled");
_;
}
modifier investorOnly() {
require(investments[msg.sender] > 0, "Not an investor");
_;
}
modifier isValidClaimPeriod() {
uint256 currentPeriod = 0;
if (
now >= cakeLiquidityAddingTime &&
now < cakeLiquidityAddingTime + claimCycle
) {
currentPeriod = 1;
}
if (
now >= cakeLiquidityAddingTime + claimCycle &&
now < cakeLiquidityAddingTime + claimCycle * 2
) {
currentPeriod = 2;
}
if (
now >= cakeLiquidityAddingTime + claimCycle * 2 &&
now < cakeLiquidityAddingTime + claimCycle * 3
) {
currentPeriod = 3;
}
if (now >= cakeLiquidityAddingTime + claimCycle * 3) {
currentPeriod = 4;
}
require(currentPeriod > 0, "Listing not started");
require(
claimed[msg.sender] < currentPeriod,
"Already claimed or refunded"
);
_;
}
modifier onlyRefundAllowed() {
require(refundAllowed, "Refund is disallowed");
_;
}
modifier onlyClaimAllowed() {
require(claimAllowed, "Claim is disallowed");
_;
}
modifier whitelistedAuditorOnly() {
require(
auditorWhitelistedAddresses[msg.sender],
"Auditor Address not whitelisted"
);
_;
}
function setAddressInfo(
address _tokenAddress,
address _unsoldTokensDumpAddress
) external onlyBscsDev {
require(_tokenAddress != address(0));
require(_unsoldTokensDumpAddress != address(0));
token = IERC20(_tokenAddress);
unsoldTokensDumpAddress = _unsoldTokensDumpAddress;
}
function setGeneralInfo(
uint256 _totalTokens,
uint256 _tokenPriceInWei,
uint256 _hardCapInWei,
uint256 _softCapInWei,
uint256 _maxInvestInWei,
uint256 _minInvestInWei,
uint256 _openTime,
uint256 _closeTime
) external onlyBscsDev {
require(_totalTokens > 0);
require(_tokenPriceInWei > 0);
require(_openTime > 0);
require(_closeTime > 0);
require(_hardCapInWei > 0);
// Hard cap > (token amount * token price)
require(_hardCapInWei <= _totalTokens.mul(_tokenPriceInWei));
// Soft cap > to hard cap
require(_softCapInWei <= _hardCapInWei);
// Min. wei investment > max. wei investment
require(_minInvestInWei <= _maxInvestInWei);
// Open time >= close time
require(_openTime < _closeTime);
totalTokens = _totalTokens;
tokensLeft = _totalTokens;
tokenPriceInWei = _tokenPriceInWei;
hardCapInWei = _hardCapInWei;
softCapInWei = _softCapInWei;
maxInvestInWei = _maxInvestInWei;
minInvestInWei = _minInvestInWei;
openTime = _openTime;
closeTime = _closeTime;
}
function setStringInfo(
bytes32 _saleTitle,
bytes32 _linkTelegram,
bytes32 _linkGithub,
bytes32 _linkTwitter,
bytes32 _linkWebsite,
bytes32 _linkLogo
) external onlyBscsDev {
saleTitle = _saleTitle;
linkTelegram = _linkTelegram;
linkGithub = _linkGithub;
linkTwitter = _linkTwitter;
linkWebsite = _linkWebsite;
linkLogo = _linkLogo;
}
function setAuditorInfo(
bytes32 _auditor,
bool _isVerified,
bool _isWarning,
string calldata _verifiedHash,
string calldata _warningHash
) external whitelistedAuditorOnly {
auditInformation.auditor = _auditor;
auditInformation.isVerified = _isVerified;
auditInformation.isWarning = _isWarning;
auditInformation.verifiedHash = _verifiedHash;
auditInformation.warningHash = _warningHash;
}
function addWhitelistedAddresses(address[] calldata _whitelistedAddresses)
external
onlyBscsDev
{
for (uint256 i = 0; i < _whitelistedAddresses.length; i++) {
whitelistedAddresses[_whitelistedAddresses[i]] = true;
}
}
function addAuditorWhitelistedAddresses(
address[] calldata _whitelistedAddresses
) external onlyBscsDev {
for (uint256 i = 0; i < _whitelistedAddresses.length; i++) {
auditorWhitelistedAddresses[_whitelistedAddresses[i]] = true;
}
}
function setRefundAllowed(bool _refundAllowed)
external
onlyBscsDev
{
refundAllowed = _refundAllowed;
}
function allowClaim(uint256 _cakeLiquidityAddingTime) external onlyBscsDev {
require(_cakeLiquidityAddingTime > 0);
require(closeTime > 0);
require(_cakeLiquidityAddingTime >= closeTime);
claimAllowed = true;
cakeLiquidityAddingTime = _cakeLiquidityAddingTime;
}
function setClaimCycle(uint256 _claimCycle)
external
onlyBscsDev
{
claimCycle = _claimCycle;
}
function getTokenAmount(uint256 _weiAmount)
internal
view
returns (uint256)
{
return _weiAmount.mul(1e18).div(tokenPriceInWei);
}
function invest()
public
payable
whitelistedAddressOnly
presaleIsNotCancelled
{
require(block.timestamp >= openTime, "Not yet opened");
require(block.timestamp < closeTime, "Closed");
require(totalCollectedWei < hardCapInWei, "Hard cap reached");
require(tokensLeft > 0);
require(msg.value <= tokensLeft.mul(tokenPriceInWei));
uint256 totalInvestmentInWei = investments[msg.sender].add(msg.value);
require(
totalInvestmentInWei >= minInvestInWei ||
totalCollectedWei >= hardCapInWei.sub(1 ether),
"Min investment not reached"
);
require(
maxInvestInWei == 0 || totalInvestmentInWei <= maxInvestInWei,
"Max investment reached"
);
if (investments[msg.sender] == 0) {
totalInvestorsCount = totalInvestorsCount.add(1);
}
totalCollectedWei = totalCollectedWei.add(msg.value);
investments[msg.sender] = totalInvestmentInWei;
tokensLeft = tokensLeft.sub(getTokenAmount(msg.value));
}
receive() external payable {
invest();
}
function transferUnsoldTokens()
external
onlyBscsDev
presaleIsNotCancelled
{
uint256 unsoldTokensAmount =
token.balanceOf(address(this)).sub(
getTokenAmount(totalCollectedWei)
);
if (unsoldTokensAmount > 0) {
token.transfer(unsoldTokensDumpAddress, unsoldTokensAmount);
}
}
function claimTokens()
external
whitelistedAddressOnly
presaleIsNotCancelled
investorOnly
isValidClaimPeriod
onlyClaimAllowed
{
claimed[msg.sender] = claimed[msg.sender].add(1); // make sure this goes first before transfer to prevent reentrancy
token.transfer(
msg.sender,
getTokenAmount(investments[msg.sender].div(4))
);
}
function getRefund()
external
whitelistedAddressOnly
investorOnly
onlyRefundAllowed
{
if (!presaleCancelled) {
require(block.timestamp >= openTime, "Not yet opened");
require(block.timestamp >= closeTime, "Not yet closed");
require(softCapInWei > 0, "No soft cap");
require(totalCollectedWei < softCapInWei, "Soft cap reached");
require(claimed[msg.sender] == 0, "Already claimed");
}
claimed[msg.sender] = 4; // make sure this goes first before transfer to prevent reentrancy
uint256 investment = investments[msg.sender];
uint256 presaleBalance = address(this).balance;
require(presaleBalance > 0);
if (investment > presaleBalance) {
investment = presaleBalance;
}
if (investment > 0) {
msg.sender.transfer(investment);
}
}
function cancelAndTransferTokensToDev() external onlyBscsDev {
if (bscsDevAddress != msg.sender) {
revert();
}
require(!presaleCancelled);
presaleCancelled = true;
uint256 balance = token.balanceOf(address(this));
if (balance > 0) {
token.transfer(bscsDevAddress, balance);
}
}
function collectFundsRaised() external onlyBscsDev {
require(!presaleCancelled);
if (address(this).balance > 0) {
bscsDevAddress.transfer(address(this).balance);
}
}
}
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
import "./lib/SafeERC20.sol";
/**
* @dev A token holder contract that will allow a beneficiary to extract the
* tokens after a given release time.
*
* Useful for simple vesting schedules like "advisors get all of their tokens
* after 1 year".
*/
contract TokenTimelock {
using SafeERC20 for IERC20;
// ERC20 basic token contract being held
IERC20 private _token;
// beneficiary of tokens after they are released
address private _beneficiary;
// second beneficiary of tokens after they are released
// only primary beneficiary can send unlocked tokens to secondary
address private _secondaryBeneficiary;
// timestamp when token release is enabled
uint256 private _releaseTime;
constructor(
IERC20 token,
uint256 releaseTime,
address beneficiary,
address secondaryBeneficiary
) public {
// solhint-disable-next-line not-rely-on-time
require(
releaseTime > block.timestamp,
"TokenTimelock: release time is before current time"
);
_token = token;
_beneficiary = beneficiary;
_releaseTime = releaseTime;
_secondaryBeneficiary = secondaryBeneficiary;
}
/**
* @return the token being held.
*/
function token() public view returns (IERC20) {
return _token;
}
/**
* @return the beneficiary of the tokens.
*/
function beneficiary() public view returns (address) {
return _beneficiary;
}
/**
* @return the secondary beneficiary of the tokens.
*/
function secondaryBeneficiary() public view returns (address) {
return _secondaryBeneficiary;
}
/**
* @return the time when the tokens are released.
*/
function releaseTime() public view returns (uint256) {
return _releaseTime;
}
/**
* @notice Transfers tokens held by timelock to beneficiary.
*/
function release() public virtual {
// solhint-disable-next-line not-rely-on-time
require(
block.timestamp >= _releaseTime,
"TokenTimelock: current time is before release time"
);
require(msg.sender == _beneficiary, "Only beneficiary can approve");
uint256 amount = _token.balanceOf(address(this));
require(amount > 0, "TokenTimelock: no tokens to release");
_token.safeTransfer(_beneficiary, amount);
}
/**
* @notice Transfers tokens held by timelock to beneficiary.
*/
function releaseSecondary() public virtual {
// solhint-disable-next-line not-rely-on-time
require(
block.timestamp >= _releaseTime,
"TokenTimelock: current time is before release time"
);
require(msg.sender == _beneficiary, "Only beneficiary can approve");
uint256 amount = _token.balanceOf(address(this));
require(amount > 0, "TokenTimelock: no tokens to release");
_token.safeTransfer(_secondaryBeneficiary, amount);
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithWeb3 script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
const accounts = await web3.eth.getAccounts()
let contract = new web3.eth.Contract(metadata.abi)
contract = contract.deploy({
data: metadata.data.bytecode.object,
arguments: constructorArgs
})
const newContractInstance = await contract.send({
from: accounts[0],
gas: 1500000,
gasPrice: '30000000000'
})
console.log('Contract deployed at address: ', newContractInstance.options.address)
} catch (e) {
console.log(e.message)
}
})()
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment