@verified-network/verified-sdk 0.8.9 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -827,9 +827,9 @@
827
827
  "type": "function"
828
828
  }
829
829
  ],
830
- "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cashtokenName\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"token\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_name\",\"type\":\"bytes32\"}],\"name\":\"supportTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\"},{\"name\":\"_currency\",\"type\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"address\"},{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"requestIssue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"checkSupportForToken\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_signer\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"transferor\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"transferee\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"transferDeposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"transferor\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"deposited\",\"type\":\"uint256\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"transferIssuedBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"components\":[{\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"redeemer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"balance\",\"type\":\"uint256\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"redeemDeposits\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"balance\",\"type\":\"uint256\"},{\"name\":\"buyer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"addIssuedBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashIssueRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"transferor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"transferee\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashIssued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addedL2Balance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"transferor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"transferee\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferredL2Balance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"checkSupportForToken(address)\":{\"params\":{\"_token\":\"token that is supported for issuing cash tokens\\r\"}},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"initialize(address)\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"isPaused()\":{\"return\":\"True: contract is paused\\rFalse: contract is not paused\\r\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestIssue(address,uint256,address)\":{\"params\":{\"_amount\":\"amount of token that is transferred from investor to this cash token issuing contract\\r\",\"_token\":\"address of token used by investor to buy the cash token\\r\"}},\"supportTokens(address,bytes32)\":{\"params\":{\"_name\":\"name of token supported\\r\",\"_token\":\"address of token supported\\r\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"checkSupportForToken(address)\":{\"notice\":\"Checks if a specified token is supported for issuing Verified cash tokens\\r\"},\"getSupportedTokens()\":{\"notice\":\"Returns array of tokens supported\\r\"},\"isPaused()\":{\"notice\":\"returns whether or not the contract is paused\\r\"},\"requestIssue(address,uint256,address)\":{\"notice\":\"Used by external apps (eg, exchange, wallet) to buy Verified cash token \\r\"},\"supportTokens(address,bytes32)\":{\"notice\":\"Specifies list of supported tokens that can be deposited to issue Verified cash tokens\\r\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Cash.sol\":\"Cash\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzzr://5cddbf3b74b775a8670757a6b8e108dac17dac20253f35f4c729e9cb6bea4ed3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xd7e8ab76fa35c4d8d35a06a6ed538cadab8b75a1aa00594ced1568b2c0cadde3\",\"urls\":[\"bzzr://b4c855b32d75f2a4969bfbd530b6934b69f12f28584b3746967e1ca64e024bd9\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x2a474399663812668bb8e9c9e7d011d54fd09de386bd6e9fcb2407a677ebd1aa\",\"urls\":[\"bzzr://3d70561b32ba1494d2b2df362e92dff5ab869d27e2fe35cf9bf3a8ae137cffd3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzzr://f75d88b16fe25a9e19b3512691c496e2bb6d8451bc9a636196c4e17ca9b40201\"]},\"abdk-libraries-solidity/ABDKMathQuad.sol\":{\"keccak256\":\"0x0ae8a1dd1dce31cc6b46fa58d6a4b72353ece1c96a8497aa0d494797dc94bc36\",\"urls\":[\"bzzr://d29078c35091aee1858898e0e6f1572ab214634d82bee162efbb90b32a9a66cb\"]},\"project:/contracts/Cash.sol\":{\"keccak256\":\"0xc3f25067d7f8ab73b1f56fcd75b0e81e29a410332a96ff429492a3b2ce0dac3c\",\"urls\":[\"bzzr://410a854456ba1dc4d779584014564f2005e0dd62f13802a6f5433e758ba7b751\"]},\"project:/contracts/interfaces/IBond.sol\":{\"keccak256\":\"0x865b390946b6faa66ff8f3434fe714b2f081926b1e826ce1494c2b2df949d669\",\"urls\":[\"bzzr://6fd782eda38cbf7c968a841a9a4af9a6cbbf01fe19a8f04053fd7c3b9d8214f1\"]},\"project:/contracts/interfaces/ICash.sol\":{\"keccak256\":\"0x4c8c69f2cc22854e02ffb710d74a3e461e02c1862040d6d2cfe545e79d265330\",\"urls\":[\"bzzr://66a9e619781b6f2725348ccfb821899825b0d4099f35f7ec3b6887e0f92b1631\"]},\"project:/contracts/interfaces/IFactory.sol\":{\"keccak256\":\"0x457dd97882020483b09c23512138113ea9313acfa694e6648fc715392876d4f4\",\"urls\":[\"bzzr://bab93e78ef9150df7a871fcfaa4ef12075128c921bdc0d88b9b23a87bba87d59\"]},\"project:/contracts/interfaces/IRates.sol\":{\"keccak256\":\"0xc32e70549fdb4e147901361b00ddc891db5d811cdea0db365695ab52106ff6fb\",\"urls\":[\"bzzr://3dd800321631ec5f22fbe955f807762ee0537e2ec8f37f27ecede1e9a333d39f\"]},\"project:/contracts/utilities/Pausable.sol\":{\"keccak256\":\"0x96eceae12582eec38cc9706095b6f7d038b00dc36d98a02d234e7051b42a2a6a\",\"urls\":[\"bzzr://e5e1adfa3d22d6769d754f3f7f74eb1b12f5327b56b49584d34490b9d747d9b3\"]},\"project:/contracts/utilities/StringUtils.sol\":{\"keccak256\":\"0x18f1be0daaca27eba3c56a0da1613331cd1a37eab4970307909d8be77d6fc34e\",\"urls\":[\"bzzr://e3b548071313cf6f3cdaf33069f4648feadeb37fb33c75fe6fd40e8310f8ff7c\"]}},\"version\":1}",
831
- "bytecode": "0x6080604052614c2c806100136000396000f3fe6080604052600436106101c25760003560e01c806380726e14116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610554578063eace6d3b14610574578063ee8edd5614610594578063f2fde38b146105b4576101c2565b8063a9059cbb146104dd578063b187bd26146104fd578063c4d66de814610512578063d3c7c2c714610532576101c2565b80638f32d59b116100d15780638f32d59b1461047357806395d89b4114610488578063a0213ff11461049d578063a457c2d7146104bd576101c2565b806380726e141461041c5780638456cb591461043c5780638da5cb5b14610451576101c2565b80633f4ba83a116101645780635d4f5b1c1161013e5780635d4f5b1c146103a75780636c19e783146103c757806370a08231146103e7578063715018a614610407576101c2565b80633f4ba83a1461035257806346499770146103675780634ba3f98814610387576101c2565b806318160ddd116101a057806318160ddd146102db57806323b872dd146102f05780632ceafc27146103105780633950935114610332576101c2565b806306fdde0314610261578063095ea7b31461028c5780630bc4b81a146102b9575b346101cc57600080fd5b36156101d757600080fd5b609b5460ff16156101e757600080fd5b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546102229060801b61021d346105d4565b61063a565b33600090815260a160209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561026d57600080fd5b50610276610a40565b60405161028391906149b5565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004614096565b610ace565b6040516102839190614906565b3480156102c557600080fd5b506102ce610aeb565b6040516102839190614914565b3480156102e757600080fd5b506102ce610af1565b3480156102fc57600080fd5b506102ac61030b366004614049565b610af8565b34801561031c57600080fd5b5061033061032b366004614096565b610cef565b005b34801561033e57600080fd5b506102ac61034d366004614096565b610def565b34801561035e57600080fd5b50610330610e48565b34801561037357600080fd5b50610330610382366004614240565b610e79565b34801561039357600080fd5b506103306103a2366004614176565b61104c565b3480156103b357600080fd5b506102ac6103c2366004613fd3565b611383565b3480156103d357600080fd5b506103306103e2366004613fd3565b6113b1565b3480156103f357600080fd5b506102ce610402366004613fd3565b611400565b34801561041357600080fd5b5061033061141b565b34801561042857600080fd5b506103306104373660046141b9565b61148c565b34801561044857600080fd5b50610330611666565b34801561045d57600080fd5b50610466611695565b6040516102839190614889565b34801561047f57600080fd5b506102ac6116a4565b34801561049457600080fd5b506102766116ca565b3480156104a957600080fd5b506103306104b83660046140c6565b611725565b3480156104c957600080fd5b506102ac6104d8366004614096565b6119f1565b3480156104e957600080fd5b506102ac6104f8366004614096565b611a5f565b34801561050957600080fd5b506102ac611a73565b34801561051e57600080fd5b5061033061052d366004613fd3565b611a7c565b34801561053e57600080fd5b50610547611b51565b60405161028391906148f5565b34801561056057600080fd5b506102ce61056f36600461400f565b611bc6565b34801561058057600080fd5b5061033061058f366004614386565b611bf1565b3480156105a057600080fd5b506103306105af3660046142ea565b611f5f565b3480156105c057600080fd5b506103306105cf366004613fd3565b61219b565b6000816105e357506000610635565b8160006105ef826121ce565b90506070811015610608578060700382901b915061061b565b607081111561061b576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106b05780617fff14156106a6576001600160801b03198581169085161415610693578492505050610a3a565b50600160ef1b61ffff029150610a3a9050565b8492505050610a3a565b80617fff14156106c4578392505050610a3a565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b0316836106f557600193506106fc565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b03168461072d5760019450610734565b600160701b175b82610764576001600160801b03198816600160ff1b146107545787610757565b60005b9650505050505050610a3a565b80610784576001600160801b03198916600160ff1b146107545788610757565b84860384151583151514156108925760708113156107ab5789975050505050505050610a3a565b60008113156107bd5790811c906107ec565b606f198112156107d65788975050505050505050610a3a565b60008112156107ec578060000384901c93508596505b92810192600160711b8410610807576001968701969390931c925b86617fff141561083c578461082457600160f01b617fff0261082e565b6001600160f01b03195b975050505050505050610a3a565b600160701b841015610851576000965061085e565b6001600160701b03841693505b83607088901b86610870576000610876565b6001607f1b5b6001600160801b0316171760801b975050505050505050610a3a565b60008113156108ad57600184901b93506001870396506108c4565b60008112156108c457600182901b91506001860396505b60708113156108d65760019150610923565b60018113156108f3576001810360018303901c6001019150610923565b606f198112156109065760019350610923565b600019811215610923576001816000030360018503901c60010193505b81841061093457818403935061093d565b83820393508294505b83610953575060009650610a3a95505050505050565b600061095e856121ce565b9050806071141561098457600185901c6001600160701b031694506001880197506109d3565b60708110156109c6576070819003808911156109b3578086901b6001600160701b0316955080890398506109c0565b600098600019019590951b945b506109d3565b6001600160701b03851694505b87617fff1415610a0957856109f057600160f01b617fff026109fa565b6001600160f01b03195b98505050505050505050610a3a565b84607089901b87610a1b576000610a21565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b820191906000526020600020905b815481529060010190602001808311610aa957829003601f168201915b505050505081565b6000610ae2610adb612271565b8484612275565b50600192915050565b609e5481565b6035545b90565b609b5460009060ff1615610b0b57600080fd5b6000610b2f610b21610b1c87611400565b6105d4565b610b2a856105d4565b61232f565b60000b1215610b3d57600080fd5b6001600160a01b038316301415610b8357610b6e610b5a836105d4565b85600160d01b6572656465656d0230612478565b15610b7b57506001610ce8565b506000610ce8565b609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610bb6908690600401614889565b60206040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c069190810190614222565b600160cb1b660acd2c286c2e6d021480610cae5750609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610c4e908690600401614889565b60206040518083038186803b158015610c6657600080fd5b505afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9e9190810190614222565b600160ca1b66159a58509bdb9902145b15610cc657610cbe84848461327e565b506001610ce8565b610b6e610cd2836105d4565b85600160c11b673a3930b739b332b90286612478565b9392505050565b610cf76116a4565b610d1f57604051600160e51b62461bcd028152600401610d1690614a4a565b60405180910390fd5b6001600160a01b038216600090815260a46020526040902054610deb57610d44613e88565b506040805180820182528281526001600160a01b03848116602080840182815260a38054600181018255600082815296517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1760029092029182015591517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1890920180546001600160a01b0319169290951691909117909355915490835260a4909152919020555b5050565b6000610ae2610dfc612271565b84610e438560346000610e0d612271565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61339a16565b612275565b610e506116a4565b610e6f57604051600160e51b62461bcd028152600401610d1690614a4a565b610e776133c2565b565b600054610100900460ff1680610e925750610e926133f7565b80610ea0575060005460ff16155b610ebf57604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015610eea576000805460ff1961ff0019909116610100171660011790555b610ef384611a7c565b609f80546001600160a01b03191633179055604051610f1690879060200161485d565b604051602081830303815290604052609c9080519060200190610f3a929190613e9f565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e64790610f7b908990600090600590600401614922565b60006040518083038186803b158015610f9357600080fd5b505af4158015610fa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fcf91908101906142b5565b8051610fe391609d91602090910190613e9f565b50609e85905560a080546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b0319166101009285169290920291909117600160a81b60ff02191690558015611044576000805461ff00191690555b505050505050565b609b5460ff161561107257604051600160e51b62461bcd028152600401610d1690614a3a565b6001600160a01b038316600090815260a4602052604081205415611094575060015b801561121e576110a5333085612275565b6001600160a01b038416600090815260a4602052604081205460a380549091600019019081106110d157fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b815260040161111593929190614897565b602060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111679190810190614204565b15611218576001600160a01b038316600090815260a2602090815260408083208484529091529020546111a09060801b61021d866105d4565b6001600160a01b038416600081815260a2602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf039061120f9084908890614969565b60405180910390a25b5061137d565b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091528120546112549060801b610b2a866105d4565b60000b1261137d5733600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546112979060801b611292856105d4565b6133fd565b33600090815260a160209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a283528184209084529091529020546112fc911b61021d856105d4565b6001600160a01b038316600081815260a260209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf03906113749086906149d6565b60405180910390a25b50505050565b6001600160a01b038116600090815260a46020526040812054156113a957506001610635565b506000610635565b6113b96116a4565b6113d857604051600160e51b62461bcd028152600401610d1690614a4a565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b6114236116a4565b61144257604051600160e51b62461bcd028152600401610d1690614a4a565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b60008460405160200161149f919061494a565b6040516020818303038152906040528051906020012090506000816040516020016114ca9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516115249493929190614977565b6020604051602081039080840390855afa158015611546573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461156357600080fd5b6001600160a01b038a16600090815260a2602090815260408083208a84529091528120546115a29061159b9060801b6112928d6105d4565b600061232f565b60000b1261165a576001600160a01b038a16600090815260a2602090815260408083208a84529091529020546115de9060801b6112928b6105d4565b506001600160a01b038816600090815260a2602090815260408083208a84529091529020546116139060801b61021d8b6105d4565b50896001600160a01b03167fff1247709775171c6ced2a84a8776135fbf147b71843e06d083855dce5250dd689898c604051611651939291906148bf565b60405180910390a25b50505050505050505050565b61166e6116a4565b61168d57604051600160e51b62461bcd028152600401610d1690614a4a565b610e7761340f565b6068546001600160a01b031690565b6068546000906001600160a01b03166116bb612271565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b600084604051602001611738919061494a565b6040516020818303038152906040528051906020012090506000816040516020016117639190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516117bd9493929190614977565b6020604051602081039080840390855afa1580156117df573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146117fc57600080fd5b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020546118309060801b611292896105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b031916608096871c17905592825260a181528282208d835290522054611886911b61021d896105d4565b6001600160a01b038b16600090815260a1602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790556118cb3089613447565b6118d6308b8a61327e565b6001600160a01b038a16600090815260a2602090815260408083208c845290915290205461191190600160801b900460801b6112928a6105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b0316600160801b608097881c81029190911790915593835260a182528083208e845290915290205461197792919004901b61021d8a6105d4565b6001600160a01b038b16600081815260a1602090815260408083208e845290915290819020805460809490941c600160801b026001600160801b0390941693909317909255609e54915190917fc49566a7c5334ea8858c89b2e78ca7b7bcba63008800b945859eded70040a8329161165191908c90614969565b6000610ae26119fe612271565b84610e4385604051806060016040528060258152602001614bce6025913960346000611a28612271565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61350a16565b6000610ae2611a6c612271565b848461327e565b609b5460ff1690565b600054610100900460ff1680611a955750611a956133f7565b80611aa3575060005460ff16155b611ac257604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015611aed576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610deb576000805461ff00191690555050565b606060a3805480602002602001604051908101604052809291908181526020016000905b82821015611bbd5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611b75565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b600084604051602001611c04919061494a565b604051602081830303815290604052805190602001209050600081604051602001611c2f9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611c899493929190614977565b6020604051602081039080840390855afa158015611cab573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611cc857600080fd5b611cd1876105d4565b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020805460809290921c600160801b026001600160801b03909216919091179055600160d91b6432ba3432b902881415611dd1576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611d5c573d6000803e3d6000fd5b506001600160a01b038916600090815260a2602090815260408083208b8452909152902054611d919060801b6112928c6105d4565b6001600160a01b038a16600090815260a2602090815260408083208c8452909152902080546001600160801b03191660809290921c919091179055611f24565b60005b60a354811015611f22578860a38281548110611dec57fe5b9060005260206000209060020201600001541415611f1a5760a38181548110611e1157fe5b6000918252602090912060016002909202010154604051600160e01b63a9059cbb0281526001600160a01b039091169063a9059cbb90611e57908d908f906004016148da565b602060405180830381600087803b158015611e7157600080fd5b505af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea99190810190614204565b506001600160a01b038a16600090815260a2602090815260408083208c8452909152902054611ede9060801b6112928d6105d4565b6001600160a01b038b16600090815260a2602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790555b600101611dd4565b505b886001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b1898c604051611651929190614969565b600084604051602001611f72919061494a565b604051602081830303815290604052805190602001209050600081604051602001611f9d9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611ff79493929190614977565b6020604051602081039080840390855afa158015612019573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461203657600080fd5b609f54604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790612069908b90600401614a20565b60206040518083038186803b15801561208157600080fd5b505afa158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120b99190810190613ff1565b6001600160a01b03161415612190576001600160a01b038816600081815260a2602090815260408083208b84529091529020547f210f33c455d7281801a9d50a1a61a0cd090cda687918f934a3d95784440ca2c290899061212e908d9061212990600160801b900460801b613539565b6135d1565b60405161213c929190614969565b60405180910390a261214d896105d4565b6001600160a01b038916600090815260a2602090815260408083208b84529091529020805460809290921c600160801b026001600160801b039092169190911790555b505050505050505050565b6121a36116a4565b6121c257604051600160e51b62461bcd028152600401610d1690614a4a565b6121cb81613613565b50565b60008082116121dc57600080fd5b6000600160801b83106121f157608092831c92015b68010000000000000000831061220957604092831c92015b640100000000831061221d57602092831c92015b62010000831061222f57601092831c92015b610100831061224057600892831c92015b6010831061225057600492831c92015b6004831061226057600292831c92015b60028310610a3a5760010192915050565b3390565b6001600160a01b03831661229e57604051600160e51b62461bcd028152600401610d1690614a8a565b6001600160a01b0382166122c757604051600160e51b62461bcd028152600401610d1690614a00565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612322908590614914565b60405180910390a3505050565b600060016001607f1b03608084901c16600160701b617fff0281111561235457600080fd5b60016001607f1b03608084901c16600160701b617fff0281111561237757600080fd5b6001600160801b03198581169085161415806123a35750600160701b617fff02826001600160801b0316105b6123ac57600080fd5b6001600160801b031985811690851614156123cc57600092505050610a3a565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561243757801561242857826001600160801b0316846001600160801b03161161242857600161242c565b6000195b945050505050610a3a565b801561244a576001945050505050610a3a565b826001600160801b0316846001600160801b03161161246b5760001961242c565b6001945050505050610a3a565b600080805b60a354811080156124965750600061249488613539565b115b15613272576001600160a01b038616600090815260a16020526040812060a380546124f992918491869081106124c857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961232f565b60000b12612bbd5760006125c061256e8960a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a3878154811061253e57fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613698565b6001600160a01b038916600090815260a16020526040812060a380549192918790811061259757fe5b60009182526020808320600290920290910154835282019290925260400190205460801b61395e565b905061262360a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106125f957fe5b60009182526020808320600290920290910154835282019290925260400190205460801b826133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061264c57fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506126f560a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106126c457fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b896133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061271e57fe5b6000918252602080832060029092029091015483528201929092526040019020805460809290921c600160801b026001600160801b03909216919091179055609b5460ff600160a81b909104161561277557600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d0286141561293e576127b1876127ac8a613539565b613bc5565b60a382815481106127be57fe5b906000526020600020906002020160000154600160d91b6432ba3432b902141561282657866001600160a01b03166108fc6127f883613539565b6040518115909202916000818181858888f19350505050158015612820573d6000803e3d6000fd5b506128d0565b60a3828154811061283357fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb8861285f84613539565b6040518363ffffffff1660e01b815260040161287c9291906148da565b602060405180830381600087803b15801561289657600080fd5b505af11580156128aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128ce9190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a3848154811061290857fe5b90600052602060002090600202016000015461292384613539565b604051612931929190614969565b60405180910390a2612b9f565b85600160c11b673a3930b739b332b9021415612b9f5761297d888260a3858154811061296657fe5b906000526020600020906002020160000154613c9e565b909850905061298f876127ac8a613539565b6129a18561299c8a613539565b613447565b6001600160a01b038516600090815260a16020526040812060a380546129f7939190869081106129cd57fe5b60009182526020808320600290920290910154835282019290925260400190205460801b8261063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612a2057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c0217905550612ac960a16000876001600160a01b03166001600160a01b03168152602001908152602001600020600060a38581548110612a9857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612af257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550866001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858660a38581548110612b6c57fe5b906000526020600020906002020160000154612b878c613539565b604051612b96939291906148bf565b60405180910390a25b50609b8054600160a81b60ff0219169055600096506001915061326a565b6001600160a01b038616600090815260a16020526040812060a38054612c1b9291849186908110612bea57fe5b600091825260208083206002909202909101548352820192909252604001812054600160801b900460801b9061232f565b60000b131561326a57609b54600160a81b900460ff1615612c3b57600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d02851415612eba57612cd0866127ac60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612ca057fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613539565b6001600160a01b038616600090815260a16020526040812060a3805483919085908110612cf957fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b905060a38281548110612d3957fe5b906000526020600020906002020160000154600160d91b6432ba3432b9021415612da157866001600160a01b03166108fc612d7383613539565b6040518115909202916000818181858888f19350505050158015612d9b573d6000803e3d6000fd5b50612e4b565b60a38281548110612dae57fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb88612dda84613539565b6040518363ffffffff1660e01b8152600401612df79291906148da565b602060405180830381600087803b158015612e1157600080fd5b505af1158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e499190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a38481548110612e8357fe5b906000526020600020906002020160000154612e9e84613539565b604051612eac929190614969565b60405180910390a2506131a1565b84600160c11b673a3930b739b332b90214156131a157600080612fad60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612f0a57fe5b906000526020600020906002020160000154815260200190815260200160002060000160109054906101000a900460801b60a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38781548110612f6f57fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b60a3868154811061296657fe5b91509150612fbe886127ac84613539565b612fcb8661299c84613539565b6001600160a01b038616600090815260a16020526040812060a38054612ff7939190879081106129cd57fe5b6001600160a01b038716600090815260a16020526040812060a380549192918790811061302057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506130c960a16000886001600160a01b03166001600160a01b03168152602001908152602001600020600060a3868154811061309857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8361063a565b6001600160a01b038716600090815260a16020526040812060a38054919291879081106130f257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550876001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858760a3868154811061316c57fe5b90600052602060002090600202016000015461318786613539565b604051613196939291906148bf565b60405180910390a250505b6132098760a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106131d957fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b6133fd565b6001600160a01b038716600090815260a16020526040812060a38054939a5090928490811061323457fe5b600091825260208083206002909202909101548352820192909252604001812055609b8054600160a81b60ff0219169055600191505b60010161247d565b5090505b949350505050565b6001600160a01b0383166132a757604051600160e51b62461bcd028152600401610d1690614a7a565b6001600160a01b0382166132d057604051600160e51b62461bcd028152600401610d16906149c6565b61331381604051806060016040528060268152602001614ba8602691396001600160a01b038616600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054613348908263ffffffff61339a16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612322908590614914565b600082820183811015610ce857604051600160e51b62461bcd028152600401610d1690614a10565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b6000610ce883600160ff1b841861063a565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03821661347057604051600160e51b62461bcd028152600401610d1690614a9a565b603554613483908263ffffffff61339a16565b6035556001600160a01b0382166000908152603360205260409020546134af908263ffffffff61339a16565b6001600160a01b0383166000818152603360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60405180910390a35050565b6000818484111561353157604051600160e51b62461bcd028152600401610d1691906149b5565b505050900390565b6000617fff6001600160801b03608084901c1660701c16613fff811015613564576000915050610635565b6001607f1b8360801c6001600160801b03161061358057600080fd5b6140fe81111561358f57600080fd5b600160701b6001600160701b03608085901c161761406f8210156135b95761406f8290031c610ce8565b61406f821115610ce85761406e1982011b9392505050565b6000610ce883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061350a565b6001600160a01b03811661363c57604051600160e51b62461bcd028152600401610d16906149f0565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156136f65780617fff14156136e55750600160ef1b61ffff029150610a3a9050565b505050600160ff1b81168218610a3a565b80617fff141561373657600160801b600160f01b038416156137255750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16610a3a565b600160801b600160ff1b03841661378657600160801b600160ff1b03851661376b5750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16600160f01b617fff0217610a3a565b6001600160701b03608085901c16816137a257600191506137a9565b600160701b175b6001600160701b03608087901c16836137e85780156137e35760006137cd826121ce565b6001955060e20393840160711901939190911b90505b6137f2565b600160701b1760721b5b8181816137fb57fe5b0490508061382757600160ff1b8787181661381757600061242c565b600160ff1b945050505050610a3a565b6001606c1b81101561383557fe5b6000600160731b82101561387557600160721b82101561386a57600160711b821015613862576070613865565b60715b61386d565b60725b60ff1661387e565b61387e826121ce565b90508361407101818601111561389c57617fff94506000915061392f565b83818601613ffc0110156138b757600094506000915061392f565b83818601613f8c011015613904578385613ffc0111156138e2578385613ffc010382901b91506138fb565b8385613ffc0110156138fb57613ffc8585030382901c91505b6000945061392f565b6070811115613917576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c811690821415613a055780617fff14156139e1576001600160801b031985811690851614156139be57505050600160ff1b81168218610a3a565b600160ff1b6001600160801b031986861816141561069357505050818117610a3a565b600160801b600160ff1b0384166136e55750600160ef1b61ffff029150610a3a9050565b80617fff1415613a4457600160801b600160ff1b038516613a335750600160ef1b61ffff029150610a3a9050565b505050600160ff1b82168118610a3a565b6001600160701b03608086901c1682613a605760019250613a67565b600160701b175b6001600160701b03608086901c1682613a835760019250613a8a565b600160701b175b9081029081613aa757600160ff1b8787181661381757600061242c565b928201926000600160e11b831015613adb57600160e01b831015613ad357613ace836121ce565b613ad6565b60e05b613ade565b60e15b90506140708186011015613af9576000945060009250613b96565b6140e08186011015613b3c57614070851015613b1e57846140700383901c9250613b33565b614070851115613b3357614070850383901b92505b60009450613b96565b61c0dd8186011115613b5657617fff945060009250613b96565b6070811115613b6d576070810383901c9250613b80565b6070811015613b80578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6001600160a01b038216613bee57604051600160e51b62461bcd028152600401610d1690614a6a565b613c3181604051806060016040528060228152602001614b86602291396001600160a01b038516600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038316600090815260336020526040902055603554613c5d908263ffffffff6135d116565b6035556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60a054604051600160e01b63e5f3d3a502815260009182918291613d2a916001600160a01b039091169063e5f3d3a590613cda90600401614a2d565b60206040518083038186803b158015613cf257600080fd5b505afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1c9190810190614222565b9050613d3781600061232f565b60000b60011415613e7e5760a05460408051600160e11b637a55098102815290516000926001600160a01b03169163f4aa1302916004808301926020929190829003018186803b158015613d8a57600080fd5b505afa158015613d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dc29190810190613ff1565b90506001600160a01b03811615613e7c57613de9816104f8613de4858b61395e565b613539565b50613df887611292848a61395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902054909750613e309060801b61021d848961395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902080546001600160801b03191660809290921c919091179055613e7986611292848261395e565b95505b505b5093949293505050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ee057805160ff1916838001178555613f0d565b82800160010185558215613f0d579182015b82811115613f0d578251825591602001919060010190613ef2565b50613f19929150613f1d565b5090565b610af591905b80821115613f195760008155600101613f23565b6000610ce88235614b0c565b6000610ce88251614b0c565b6000610ce88251614b17565b6000610ce88235610af5565b6000610ce88251610af5565b600082601f830112613f8457600080fd5b8151613f97613f9282614ad1565b614aaa565b91508082526020830160208301858383011115613fb357600080fd5b613fbe838284614b4f565b50505092915050565b6000610ce88235614b28565b600060208284031215613fe557600080fd5b60006132768484613f37565b60006020828403121561400357600080fd5b60006132768484613f43565b6000806040838503121561402257600080fd5b600061402e8585613f37565b925050602061403f85828601613f37565b9150509250929050565b60008060006060848603121561405e57600080fd5b600061406a8686613f37565b935050602061407b86828701613f37565b925050604061408c86828701613f5b565b9150509250925092565b600080604083850312156140a957600080fd5b60006140b58585613f37565b925050602061403f85828601613f5b565b600080600080600080600080610100898b0312156140e357600080fd5b60006140ef8b8b613f37565b98505060206141008b828c01613f5b565b97505060406141118b828c01613f5b565b96505060606141228b828c01613f5b565b95505060806141338b828c01613f5b565b94505060a06141448b828c01613fc7565b93505060c06141558b828c01613f5b565b92505060e06141668b828c01613f5b565b9150509295985092959890939650565b60008060006060848603121561418b57600080fd5b60006141978686613f37565b93505060206141a886828701613f5b565b925050604061408c86828701613f37565b600080600080600080600080610100898b0312156141d657600080fd5b60006141e28b8b613f37565b98505060206141f38b828c01613f5b565b97505060406141118b828c01613f37565b60006020828403121561421657600080fd5b60006132768484613f4f565b60006020828403121561423457600080fd5b60006132768484613f67565b600080600080600060a0868803121561425857600080fd5b60006142648888613f5b565b955050602061427588828901613f5b565b945050604061428688828901613f37565b935050606061429788828901613f37565b92505060806142a888828901613f37565b9150509295509295909350565b6000602082840312156142c757600080fd5b815167ffffffffffffffff8111156142de57600080fd5b61327684828501613f73565b600080600080600080600060e0888a03121561430557600080fd5b60006143118a8a613f5b565b97505060206143228a828b01613f37565b96505060406143338a828b01613f5b565b95505060606143448a828b01613f5b565b94505060806143558a828b01613fc7565b93505060a06143668a828b01613f5b565b92505060c06143778a828b01613f5b565b91505092959891949750929550565b600080600080600080600080610100898b0312156143a357600080fd5b60006143af8b8b613f5b565b98505060206141008b828c01613f37565b60006143cc8383614830565b505060400190565b6143dd81614b2e565b82525050565b6143dd81614b0c565b60006143f782614aff565b6144018185614b03565b935061440c83614af9565b60005b82811015614437576144228683516143c0565b955061442d82614af9565b915060010161440f565b5093949350505050565b6143dd81614b17565b6143dd81610af5565b6143dd61445f82610af5565b610af5565b6143dd81614b39565b600061447882614aff565b6144828185614b03565b9350614492818560208601614b4f565b61449b81614b7b565b9093019392505050565b60006144b2602383614b03565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b600061450a601c83610635565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000614543602683614b03565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b600061458e602283614b03565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b60006145d5601b83614b03565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160cb1b660acd2c286c2e6d029052565b600160b01b6972656d697474616e6365029052565b6000614635601883614b03565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b600061466e602083614b03565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006146a7602e83614b03565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000614706600683614b03565b600160d01b654c32746f4c3102815260200192915050565b600061472b602183614b03565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265738152600160f81b607302602082015260400192915050565b6000614771602583614b03565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b60006147bb602483614b03565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b6000614804601f83614b03565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300815260200192915050565b80516040830190614841848261444a565b50602082015161137d60208501826143e3565b6143dd81614b28565b60006148698284614453565b50602001919050565b600061487d826144fd565b91506148698284614453565b60208101610a3a82846143e3565b606081016148a582866143d4565b6148b260208301856143d4565b613276604083018461444a565b606081016148cd82866143e3565b6148b2602083018561444a565b604081016148e882856143e3565b610ce8602083018461444a565b60208082528101610ce881846143ec565b60208101610a3a8284614441565b60208101610a3a828461444a565b60608101614930828661444a565b61493d6020830185614464565b6132766040830184614464565b60408101614958828461444a565b8181036020830152610ce8816146f9565b604081016148e8828561444a565b60808101614985828761444a565b6149926020830186614854565b61499f604083018561444a565b6149ac606083018461444a565b95945050505050565b60208082528101610ce8818461446d565b60208082528101610a3a816144a5565b604081016149e3826144ed565b610a3a602083018461444a565b60208082528101610a3a81614536565b60208082528101610a3a81614581565b60208082528101610a3a816145c8565b604081016149e382614601565b6020810161063582614613565b60208082528101610a3a81614628565b60208082528101610a3a81614661565b60208082528101610a3a8161469a565b60208082528101610a3a8161471e565b60208082528101610a3a81614764565b60208082528101610a3a816147ae565b60208082528101610a3a816147f7565b60405181810167ffffffffffffffff81118282101715614ac957600080fd5b604052919050565b600067ffffffffffffffff821115614ae857600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610a3a82614b1c565b151590565b6001600160a01b031690565b60ff1690565b6000610a3a82614b44565b6000610a3a82610af5565b6000610a3a82614b0c565b60005b83811015614b6a578181015183820152602001614b52565b8381111561137d5750506000910152565b601f01601f19169056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723058206018d660f3afea03f8ac63faa00349b4799d5bbd5b04e54acf6256b8ba99c4f66c6578706572696d656e74616cf50037",
832
- "deployedBytecode": "0x6080604052600436106101c25760003560e01c806380726e14116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610554578063eace6d3b14610574578063ee8edd5614610594578063f2fde38b146105b4576101c2565b8063a9059cbb146104dd578063b187bd26146104fd578063c4d66de814610512578063d3c7c2c714610532576101c2565b80638f32d59b116100d15780638f32d59b1461047357806395d89b4114610488578063a0213ff11461049d578063a457c2d7146104bd576101c2565b806380726e141461041c5780638456cb591461043c5780638da5cb5b14610451576101c2565b80633f4ba83a116101645780635d4f5b1c1161013e5780635d4f5b1c146103a75780636c19e783146103c757806370a08231146103e7578063715018a614610407576101c2565b80633f4ba83a1461035257806346499770146103675780634ba3f98814610387576101c2565b806318160ddd116101a057806318160ddd146102db57806323b872dd146102f05780632ceafc27146103105780633950935114610332576101c2565b806306fdde0314610261578063095ea7b31461028c5780630bc4b81a146102b9575b346101cc57600080fd5b36156101d757600080fd5b609b5460ff16156101e757600080fd5b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546102229060801b61021d346105d4565b61063a565b33600090815260a160209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561026d57600080fd5b50610276610a40565b60405161028391906149b5565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004614096565b610ace565b6040516102839190614906565b3480156102c557600080fd5b506102ce610aeb565b6040516102839190614914565b3480156102e757600080fd5b506102ce610af1565b3480156102fc57600080fd5b506102ac61030b366004614049565b610af8565b34801561031c57600080fd5b5061033061032b366004614096565b610cef565b005b34801561033e57600080fd5b506102ac61034d366004614096565b610def565b34801561035e57600080fd5b50610330610e48565b34801561037357600080fd5b50610330610382366004614240565b610e79565b34801561039357600080fd5b506103306103a2366004614176565b61104c565b3480156103b357600080fd5b506102ac6103c2366004613fd3565b611383565b3480156103d357600080fd5b506103306103e2366004613fd3565b6113b1565b3480156103f357600080fd5b506102ce610402366004613fd3565b611400565b34801561041357600080fd5b5061033061141b565b34801561042857600080fd5b506103306104373660046141b9565b61148c565b34801561044857600080fd5b50610330611666565b34801561045d57600080fd5b50610466611695565b6040516102839190614889565b34801561047f57600080fd5b506102ac6116a4565b34801561049457600080fd5b506102766116ca565b3480156104a957600080fd5b506103306104b83660046140c6565b611725565b3480156104c957600080fd5b506102ac6104d8366004614096565b6119f1565b3480156104e957600080fd5b506102ac6104f8366004614096565b611a5f565b34801561050957600080fd5b506102ac611a73565b34801561051e57600080fd5b5061033061052d366004613fd3565b611a7c565b34801561053e57600080fd5b50610547611b51565b60405161028391906148f5565b34801561056057600080fd5b506102ce61056f36600461400f565b611bc6565b34801561058057600080fd5b5061033061058f366004614386565b611bf1565b3480156105a057600080fd5b506103306105af3660046142ea565b611f5f565b3480156105c057600080fd5b506103306105cf366004613fd3565b61219b565b6000816105e357506000610635565b8160006105ef826121ce565b90506070811015610608578060700382901b915061061b565b607081111561061b576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106b05780617fff14156106a6576001600160801b03198581169085161415610693578492505050610a3a565b50600160ef1b61ffff029150610a3a9050565b8492505050610a3a565b80617fff14156106c4578392505050610a3a565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b0316836106f557600193506106fc565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b03168461072d5760019450610734565b600160701b175b82610764576001600160801b03198816600160ff1b146107545787610757565b60005b9650505050505050610a3a565b80610784576001600160801b03198916600160ff1b146107545788610757565b84860384151583151514156108925760708113156107ab5789975050505050505050610a3a565b60008113156107bd5790811c906107ec565b606f198112156107d65788975050505050505050610a3a565b60008112156107ec578060000384901c93508596505b92810192600160711b8410610807576001968701969390931c925b86617fff141561083c578461082457600160f01b617fff0261082e565b6001600160f01b03195b975050505050505050610a3a565b600160701b841015610851576000965061085e565b6001600160701b03841693505b83607088901b86610870576000610876565b6001607f1b5b6001600160801b0316171760801b975050505050505050610a3a565b60008113156108ad57600184901b93506001870396506108c4565b60008112156108c457600182901b91506001860396505b60708113156108d65760019150610923565b60018113156108f3576001810360018303901c6001019150610923565b606f198112156109065760019350610923565b600019811215610923576001816000030360018503901c60010193505b81841061093457818403935061093d565b83820393508294505b83610953575060009650610a3a95505050505050565b600061095e856121ce565b9050806071141561098457600185901c6001600160701b031694506001880197506109d3565b60708110156109c6576070819003808911156109b3578086901b6001600160701b0316955080890398506109c0565b600098600019019590951b945b506109d3565b6001600160701b03851694505b87617fff1415610a0957856109f057600160f01b617fff026109fa565b6001600160f01b03195b98505050505050505050610a3a565b84607089901b87610a1b576000610a21565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b820191906000526020600020905b815481529060010190602001808311610aa957829003601f168201915b505050505081565b6000610ae2610adb612271565b8484612275565b50600192915050565b609e5481565b6035545b90565b609b5460009060ff1615610b0b57600080fd5b6000610b2f610b21610b1c87611400565b6105d4565b610b2a856105d4565b61232f565b60000b1215610b3d57600080fd5b6001600160a01b038316301415610b8357610b6e610b5a836105d4565b85600160d01b6572656465656d0230612478565b15610b7b57506001610ce8565b506000610ce8565b609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610bb6908690600401614889565b60206040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c069190810190614222565b600160cb1b660acd2c286c2e6d021480610cae5750609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610c4e908690600401614889565b60206040518083038186803b158015610c6657600080fd5b505afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9e9190810190614222565b600160ca1b66159a58509bdb9902145b15610cc657610cbe84848461327e565b506001610ce8565b610b6e610cd2836105d4565b85600160c11b673a3930b739b332b90286612478565b9392505050565b610cf76116a4565b610d1f57604051600160e51b62461bcd028152600401610d1690614a4a565b60405180910390fd5b6001600160a01b038216600090815260a46020526040902054610deb57610d44613e88565b506040805180820182528281526001600160a01b03848116602080840182815260a38054600181018255600082815296517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1760029092029182015591517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1890920180546001600160a01b0319169290951691909117909355915490835260a4909152919020555b5050565b6000610ae2610dfc612271565b84610e438560346000610e0d612271565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61339a16565b612275565b610e506116a4565b610e6f57604051600160e51b62461bcd028152600401610d1690614a4a565b610e776133c2565b565b600054610100900460ff1680610e925750610e926133f7565b80610ea0575060005460ff16155b610ebf57604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015610eea576000805460ff1961ff0019909116610100171660011790555b610ef384611a7c565b609f80546001600160a01b03191633179055604051610f1690879060200161485d565b604051602081830303815290604052609c9080519060200190610f3a929190613e9f565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e64790610f7b908990600090600590600401614922565b60006040518083038186803b158015610f9357600080fd5b505af4158015610fa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fcf91908101906142b5565b8051610fe391609d91602090910190613e9f565b50609e85905560a080546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b0319166101009285169290920291909117600160a81b60ff02191690558015611044576000805461ff00191690555b505050505050565b609b5460ff161561107257604051600160e51b62461bcd028152600401610d1690614a3a565b6001600160a01b038316600090815260a4602052604081205415611094575060015b801561121e576110a5333085612275565b6001600160a01b038416600090815260a4602052604081205460a380549091600019019081106110d157fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b815260040161111593929190614897565b602060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111679190810190614204565b15611218576001600160a01b038316600090815260a2602090815260408083208484529091529020546111a09060801b61021d866105d4565b6001600160a01b038416600081815260a2602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf039061120f9084908890614969565b60405180910390a25b5061137d565b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091528120546112549060801b610b2a866105d4565b60000b1261137d5733600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546112979060801b611292856105d4565b6133fd565b33600090815260a160209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a283528184209084529091529020546112fc911b61021d856105d4565b6001600160a01b038316600081815260a260209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf03906113749086906149d6565b60405180910390a25b50505050565b6001600160a01b038116600090815260a46020526040812054156113a957506001610635565b506000610635565b6113b96116a4565b6113d857604051600160e51b62461bcd028152600401610d1690614a4a565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b6114236116a4565b61144257604051600160e51b62461bcd028152600401610d1690614a4a565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b60008460405160200161149f919061494a565b6040516020818303038152906040528051906020012090506000816040516020016114ca9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516115249493929190614977565b6020604051602081039080840390855afa158015611546573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461156357600080fd5b6001600160a01b038a16600090815260a2602090815260408083208a84529091528120546115a29061159b9060801b6112928d6105d4565b600061232f565b60000b1261165a576001600160a01b038a16600090815260a2602090815260408083208a84529091529020546115de9060801b6112928b6105d4565b506001600160a01b038816600090815260a2602090815260408083208a84529091529020546116139060801b61021d8b6105d4565b50896001600160a01b03167fff1247709775171c6ced2a84a8776135fbf147b71843e06d083855dce5250dd689898c604051611651939291906148bf565b60405180910390a25b50505050505050505050565b61166e6116a4565b61168d57604051600160e51b62461bcd028152600401610d1690614a4a565b610e7761340f565b6068546001600160a01b031690565b6068546000906001600160a01b03166116bb612271565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b600084604051602001611738919061494a565b6040516020818303038152906040528051906020012090506000816040516020016117639190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516117bd9493929190614977565b6020604051602081039080840390855afa1580156117df573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146117fc57600080fd5b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020546118309060801b611292896105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b031916608096871c17905592825260a181528282208d835290522054611886911b61021d896105d4565b6001600160a01b038b16600090815260a1602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790556118cb3089613447565b6118d6308b8a61327e565b6001600160a01b038a16600090815260a2602090815260408083208c845290915290205461191190600160801b900460801b6112928a6105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b0316600160801b608097881c81029190911790915593835260a182528083208e845290915290205461197792919004901b61021d8a6105d4565b6001600160a01b038b16600081815260a1602090815260408083208e845290915290819020805460809490941c600160801b026001600160801b0390941693909317909255609e54915190917fc49566a7c5334ea8858c89b2e78ca7b7bcba63008800b945859eded70040a8329161165191908c90614969565b6000610ae26119fe612271565b84610e4385604051806060016040528060258152602001614bce6025913960346000611a28612271565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61350a16565b6000610ae2611a6c612271565b848461327e565b609b5460ff1690565b600054610100900460ff1680611a955750611a956133f7565b80611aa3575060005460ff16155b611ac257604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015611aed576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610deb576000805461ff00191690555050565b606060a3805480602002602001604051908101604052809291908181526020016000905b82821015611bbd5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611b75565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b600084604051602001611c04919061494a565b604051602081830303815290604052805190602001209050600081604051602001611c2f9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611c899493929190614977565b6020604051602081039080840390855afa158015611cab573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611cc857600080fd5b611cd1876105d4565b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020805460809290921c600160801b026001600160801b03909216919091179055600160d91b6432ba3432b902881415611dd1576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611d5c573d6000803e3d6000fd5b506001600160a01b038916600090815260a2602090815260408083208b8452909152902054611d919060801b6112928c6105d4565b6001600160a01b038a16600090815260a2602090815260408083208c8452909152902080546001600160801b03191660809290921c919091179055611f24565b60005b60a354811015611f22578860a38281548110611dec57fe5b9060005260206000209060020201600001541415611f1a5760a38181548110611e1157fe5b6000918252602090912060016002909202010154604051600160e01b63a9059cbb0281526001600160a01b039091169063a9059cbb90611e57908d908f906004016148da565b602060405180830381600087803b158015611e7157600080fd5b505af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea99190810190614204565b506001600160a01b038a16600090815260a2602090815260408083208c8452909152902054611ede9060801b6112928d6105d4565b6001600160a01b038b16600090815260a2602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790555b600101611dd4565b505b886001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b1898c604051611651929190614969565b600084604051602001611f72919061494a565b604051602081830303815290604052805190602001209050600081604051602001611f9d9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611ff79493929190614977565b6020604051602081039080840390855afa158015612019573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461203657600080fd5b609f54604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790612069908b90600401614a20565b60206040518083038186803b15801561208157600080fd5b505afa158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120b99190810190613ff1565b6001600160a01b03161415612190576001600160a01b038816600081815260a2602090815260408083208b84529091529020547f210f33c455d7281801a9d50a1a61a0cd090cda687918f934a3d95784440ca2c290899061212e908d9061212990600160801b900460801b613539565b6135d1565b60405161213c929190614969565b60405180910390a261214d896105d4565b6001600160a01b038916600090815260a2602090815260408083208b84529091529020805460809290921c600160801b026001600160801b039092169190911790555b505050505050505050565b6121a36116a4565b6121c257604051600160e51b62461bcd028152600401610d1690614a4a565b6121cb81613613565b50565b60008082116121dc57600080fd5b6000600160801b83106121f157608092831c92015b68010000000000000000831061220957604092831c92015b640100000000831061221d57602092831c92015b62010000831061222f57601092831c92015b610100831061224057600892831c92015b6010831061225057600492831c92015b6004831061226057600292831c92015b60028310610a3a5760010192915050565b3390565b6001600160a01b03831661229e57604051600160e51b62461bcd028152600401610d1690614a8a565b6001600160a01b0382166122c757604051600160e51b62461bcd028152600401610d1690614a00565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612322908590614914565b60405180910390a3505050565b600060016001607f1b03608084901c16600160701b617fff0281111561235457600080fd5b60016001607f1b03608084901c16600160701b617fff0281111561237757600080fd5b6001600160801b03198581169085161415806123a35750600160701b617fff02826001600160801b0316105b6123ac57600080fd5b6001600160801b031985811690851614156123cc57600092505050610a3a565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561243757801561242857826001600160801b0316846001600160801b03161161242857600161242c565b6000195b945050505050610a3a565b801561244a576001945050505050610a3a565b826001600160801b0316846001600160801b03161161246b5760001961242c565b6001945050505050610a3a565b600080805b60a354811080156124965750600061249488613539565b115b15613272576001600160a01b038616600090815260a16020526040812060a380546124f992918491869081106124c857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961232f565b60000b12612bbd5760006125c061256e8960a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a3878154811061253e57fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613698565b6001600160a01b038916600090815260a16020526040812060a380549192918790811061259757fe5b60009182526020808320600290920290910154835282019290925260400190205460801b61395e565b905061262360a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106125f957fe5b60009182526020808320600290920290910154835282019290925260400190205460801b826133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061264c57fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506126f560a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106126c457fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b896133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061271e57fe5b6000918252602080832060029092029091015483528201929092526040019020805460809290921c600160801b026001600160801b03909216919091179055609b5460ff600160a81b909104161561277557600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d0286141561293e576127b1876127ac8a613539565b613bc5565b60a382815481106127be57fe5b906000526020600020906002020160000154600160d91b6432ba3432b902141561282657866001600160a01b03166108fc6127f883613539565b6040518115909202916000818181858888f19350505050158015612820573d6000803e3d6000fd5b506128d0565b60a3828154811061283357fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb8861285f84613539565b6040518363ffffffff1660e01b815260040161287c9291906148da565b602060405180830381600087803b15801561289657600080fd5b505af11580156128aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128ce9190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a3848154811061290857fe5b90600052602060002090600202016000015461292384613539565b604051612931929190614969565b60405180910390a2612b9f565b85600160c11b673a3930b739b332b9021415612b9f5761297d888260a3858154811061296657fe5b906000526020600020906002020160000154613c9e565b909850905061298f876127ac8a613539565b6129a18561299c8a613539565b613447565b6001600160a01b038516600090815260a16020526040812060a380546129f7939190869081106129cd57fe5b60009182526020808320600290920290910154835282019290925260400190205460801b8261063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612a2057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c0217905550612ac960a16000876001600160a01b03166001600160a01b03168152602001908152602001600020600060a38581548110612a9857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612af257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550866001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858660a38581548110612b6c57fe5b906000526020600020906002020160000154612b878c613539565b604051612b96939291906148bf565b60405180910390a25b50609b8054600160a81b60ff0219169055600096506001915061326a565b6001600160a01b038616600090815260a16020526040812060a38054612c1b9291849186908110612bea57fe5b600091825260208083206002909202909101548352820192909252604001812054600160801b900460801b9061232f565b60000b131561326a57609b54600160a81b900460ff1615612c3b57600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d02851415612eba57612cd0866127ac60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612ca057fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613539565b6001600160a01b038616600090815260a16020526040812060a3805483919085908110612cf957fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b905060a38281548110612d3957fe5b906000526020600020906002020160000154600160d91b6432ba3432b9021415612da157866001600160a01b03166108fc612d7383613539565b6040518115909202916000818181858888f19350505050158015612d9b573d6000803e3d6000fd5b50612e4b565b60a38281548110612dae57fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb88612dda84613539565b6040518363ffffffff1660e01b8152600401612df79291906148da565b602060405180830381600087803b158015612e1157600080fd5b505af1158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e499190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a38481548110612e8357fe5b906000526020600020906002020160000154612e9e84613539565b604051612eac929190614969565b60405180910390a2506131a1565b84600160c11b673a3930b739b332b90214156131a157600080612fad60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612f0a57fe5b906000526020600020906002020160000154815260200190815260200160002060000160109054906101000a900460801b60a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38781548110612f6f57fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b60a3868154811061296657fe5b91509150612fbe886127ac84613539565b612fcb8661299c84613539565b6001600160a01b038616600090815260a16020526040812060a38054612ff7939190879081106129cd57fe5b6001600160a01b038716600090815260a16020526040812060a380549192918790811061302057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506130c960a16000886001600160a01b03166001600160a01b03168152602001908152602001600020600060a3868154811061309857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8361063a565b6001600160a01b038716600090815260a16020526040812060a38054919291879081106130f257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550876001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858760a3868154811061316c57fe5b90600052602060002090600202016000015461318786613539565b604051613196939291906148bf565b60405180910390a250505b6132098760a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106131d957fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b6133fd565b6001600160a01b038716600090815260a16020526040812060a38054939a5090928490811061323457fe5b600091825260208083206002909202909101548352820192909252604001812055609b8054600160a81b60ff0219169055600191505b60010161247d565b5090505b949350505050565b6001600160a01b0383166132a757604051600160e51b62461bcd028152600401610d1690614a7a565b6001600160a01b0382166132d057604051600160e51b62461bcd028152600401610d16906149c6565b61331381604051806060016040528060268152602001614ba8602691396001600160a01b038616600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054613348908263ffffffff61339a16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612322908590614914565b600082820183811015610ce857604051600160e51b62461bcd028152600401610d1690614a10565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b6000610ce883600160ff1b841861063a565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03821661347057604051600160e51b62461bcd028152600401610d1690614a9a565b603554613483908263ffffffff61339a16565b6035556001600160a01b0382166000908152603360205260409020546134af908263ffffffff61339a16565b6001600160a01b0383166000818152603360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60405180910390a35050565b6000818484111561353157604051600160e51b62461bcd028152600401610d1691906149b5565b505050900390565b6000617fff6001600160801b03608084901c1660701c16613fff811015613564576000915050610635565b6001607f1b8360801c6001600160801b03161061358057600080fd5b6140fe81111561358f57600080fd5b600160701b6001600160701b03608085901c161761406f8210156135b95761406f8290031c610ce8565b61406f821115610ce85761406e1982011b9392505050565b6000610ce883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061350a565b6001600160a01b03811661363c57604051600160e51b62461bcd028152600401610d16906149f0565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156136f65780617fff14156136e55750600160ef1b61ffff029150610a3a9050565b505050600160ff1b81168218610a3a565b80617fff141561373657600160801b600160f01b038416156137255750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16610a3a565b600160801b600160ff1b03841661378657600160801b600160ff1b03851661376b5750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16600160f01b617fff0217610a3a565b6001600160701b03608085901c16816137a257600191506137a9565b600160701b175b6001600160701b03608087901c16836137e85780156137e35760006137cd826121ce565b6001955060e20393840160711901939190911b90505b6137f2565b600160701b1760721b5b8181816137fb57fe5b0490508061382757600160ff1b8787181661381757600061242c565b600160ff1b945050505050610a3a565b6001606c1b81101561383557fe5b6000600160731b82101561387557600160721b82101561386a57600160711b821015613862576070613865565b60715b61386d565b60725b60ff1661387e565b61387e826121ce565b90508361407101818601111561389c57617fff94506000915061392f565b83818601613ffc0110156138b757600094506000915061392f565b83818601613f8c011015613904578385613ffc0111156138e2578385613ffc010382901b91506138fb565b8385613ffc0110156138fb57613ffc8585030382901c91505b6000945061392f565b6070811115613917576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c811690821415613a055780617fff14156139e1576001600160801b031985811690851614156139be57505050600160ff1b81168218610a3a565b600160ff1b6001600160801b031986861816141561069357505050818117610a3a565b600160801b600160ff1b0384166136e55750600160ef1b61ffff029150610a3a9050565b80617fff1415613a4457600160801b600160ff1b038516613a335750600160ef1b61ffff029150610a3a9050565b505050600160ff1b82168118610a3a565b6001600160701b03608086901c1682613a605760019250613a67565b600160701b175b6001600160701b03608086901c1682613a835760019250613a8a565b600160701b175b9081029081613aa757600160ff1b8787181661381757600061242c565b928201926000600160e11b831015613adb57600160e01b831015613ad357613ace836121ce565b613ad6565b60e05b613ade565b60e15b90506140708186011015613af9576000945060009250613b96565b6140e08186011015613b3c57614070851015613b1e57846140700383901c9250613b33565b614070851115613b3357614070850383901b92505b60009450613b96565b61c0dd8186011115613b5657617fff945060009250613b96565b6070811115613b6d576070810383901c9250613b80565b6070811015613b80578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6001600160a01b038216613bee57604051600160e51b62461bcd028152600401610d1690614a6a565b613c3181604051806060016040528060228152602001614b86602291396001600160a01b038516600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038316600090815260336020526040902055603554613c5d908263ffffffff6135d116565b6035556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60a054604051600160e01b63e5f3d3a502815260009182918291613d2a916001600160a01b039091169063e5f3d3a590613cda90600401614a2d565b60206040518083038186803b158015613cf257600080fd5b505afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1c9190810190614222565b9050613d3781600061232f565b60000b60011415613e7e5760a05460408051600160e11b637a55098102815290516000926001600160a01b03169163f4aa1302916004808301926020929190829003018186803b158015613d8a57600080fd5b505afa158015613d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dc29190810190613ff1565b90506001600160a01b03811615613e7c57613de9816104f8613de4858b61395e565b613539565b50613df887611292848a61395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902054909750613e309060801b61021d848961395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902080546001600160801b03191660809290921c919091179055613e7986611292848261395e565b95505b505b5093949293505050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ee057805160ff1916838001178555613f0d565b82800160010185558215613f0d579182015b82811115613f0d578251825591602001919060010190613ef2565b50613f19929150613f1d565b5090565b610af591905b80821115613f195760008155600101613f23565b6000610ce88235614b0c565b6000610ce88251614b0c565b6000610ce88251614b17565b6000610ce88235610af5565b6000610ce88251610af5565b600082601f830112613f8457600080fd5b8151613f97613f9282614ad1565b614aaa565b91508082526020830160208301858383011115613fb357600080fd5b613fbe838284614b4f565b50505092915050565b6000610ce88235614b28565b600060208284031215613fe557600080fd5b60006132768484613f37565b60006020828403121561400357600080fd5b60006132768484613f43565b6000806040838503121561402257600080fd5b600061402e8585613f37565b925050602061403f85828601613f37565b9150509250929050565b60008060006060848603121561405e57600080fd5b600061406a8686613f37565b935050602061407b86828701613f37565b925050604061408c86828701613f5b565b9150509250925092565b600080604083850312156140a957600080fd5b60006140b58585613f37565b925050602061403f85828601613f5b565b600080600080600080600080610100898b0312156140e357600080fd5b60006140ef8b8b613f37565b98505060206141008b828c01613f5b565b97505060406141118b828c01613f5b565b96505060606141228b828c01613f5b565b95505060806141338b828c01613f5b565b94505060a06141448b828c01613fc7565b93505060c06141558b828c01613f5b565b92505060e06141668b828c01613f5b565b9150509295985092959890939650565b60008060006060848603121561418b57600080fd5b60006141978686613f37565b93505060206141a886828701613f5b565b925050604061408c86828701613f37565b600080600080600080600080610100898b0312156141d657600080fd5b60006141e28b8b613f37565b98505060206141f38b828c01613f5b565b97505060406141118b828c01613f37565b60006020828403121561421657600080fd5b60006132768484613f4f565b60006020828403121561423457600080fd5b60006132768484613f67565b600080600080600060a0868803121561425857600080fd5b60006142648888613f5b565b955050602061427588828901613f5b565b945050604061428688828901613f37565b935050606061429788828901613f37565b92505060806142a888828901613f37565b9150509295509295909350565b6000602082840312156142c757600080fd5b815167ffffffffffffffff8111156142de57600080fd5b61327684828501613f73565b600080600080600080600060e0888a03121561430557600080fd5b60006143118a8a613f5b565b97505060206143228a828b01613f37565b96505060406143338a828b01613f5b565b95505060606143448a828b01613f5b565b94505060806143558a828b01613fc7565b93505060a06143668a828b01613f5b565b92505060c06143778a828b01613f5b565b91505092959891949750929550565b600080600080600080600080610100898b0312156143a357600080fd5b60006143af8b8b613f5b565b98505060206141008b828c01613f37565b60006143cc8383614830565b505060400190565b6143dd81614b2e565b82525050565b6143dd81614b0c565b60006143f782614aff565b6144018185614b03565b935061440c83614af9565b60005b82811015614437576144228683516143c0565b955061442d82614af9565b915060010161440f565b5093949350505050565b6143dd81614b17565b6143dd81610af5565b6143dd61445f82610af5565b610af5565b6143dd81614b39565b600061447882614aff565b6144828185614b03565b9350614492818560208601614b4f565b61449b81614b7b565b9093019392505050565b60006144b2602383614b03565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b600061450a601c83610635565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000614543602683614b03565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b600061458e602283614b03565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b60006145d5601b83614b03565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160cb1b660acd2c286c2e6d029052565b600160b01b6972656d697474616e6365029052565b6000614635601883614b03565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b600061466e602083614b03565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006146a7602e83614b03565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000614706600683614b03565b600160d01b654c32746f4c3102815260200192915050565b600061472b602183614b03565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265738152600160f81b607302602082015260400192915050565b6000614771602583614b03565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b60006147bb602483614b03565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b6000614804601f83614b03565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300815260200192915050565b80516040830190614841848261444a565b50602082015161137d60208501826143e3565b6143dd81614b28565b60006148698284614453565b50602001919050565b600061487d826144fd565b91506148698284614453565b60208101610a3a82846143e3565b606081016148a582866143d4565b6148b260208301856143d4565b613276604083018461444a565b606081016148cd82866143e3565b6148b2602083018561444a565b604081016148e882856143e3565b610ce8602083018461444a565b60208082528101610ce881846143ec565b60208101610a3a8284614441565b60208101610a3a828461444a565b60608101614930828661444a565b61493d6020830185614464565b6132766040830184614464565b60408101614958828461444a565b8181036020830152610ce8816146f9565b604081016148e8828561444a565b60808101614985828761444a565b6149926020830186614854565b61499f604083018561444a565b6149ac606083018461444a565b95945050505050565b60208082528101610ce8818461446d565b60208082528101610a3a816144a5565b604081016149e3826144ed565b610a3a602083018461444a565b60208082528101610a3a81614536565b60208082528101610a3a81614581565b60208082528101610a3a816145c8565b604081016149e382614601565b6020810161063582614613565b60208082528101610a3a81614628565b60208082528101610a3a81614661565b60208082528101610a3a8161469a565b60208082528101610a3a8161471e565b60208082528101610a3a81614764565b60208082528101610a3a816147ae565b60208082528101610a3a816147f7565b60405181810167ffffffffffffffff81118282101715614ac957600080fd5b604052919050565b600067ffffffffffffffff821115614ae857600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610a3a82614b1c565b151590565b6001600160a01b031690565b60ff1690565b6000610a3a82614b44565b6000610a3a82610af5565b6000610a3a82614b0c565b60005b83811015614b6a578181015183820152602001614b52565b8381111561137d5750506000910152565b601f01601f19169056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723058206018d660f3afea03f8ac63faa00349b4799d5bbd5b04e54acf6256b8ba99c4f66c6578706572696d656e74616cf50037",
830
+ "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cashtokenName\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"receiver\",\"type\":\"address\"},{\"name\":\"token\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_name\",\"type\":\"bytes32\"}],\"name\":\"supportTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_name\",\"type\":\"bytes32\"},{\"name\":\"_currency\",\"type\":\"bytes32\"},{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"address\"},{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_buyer\",\"type\":\"address\"}],\"name\":\"requestIssue\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"checkSupportForToken\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_signer\",\"type\":\"address\"}],\"name\":\"setSigner\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"transferor\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"transferee\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"transferDeposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"transferor\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"deposited\",\"type\":\"uint256\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"transferIssuedBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isPaused\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"components\":[{\"name\":\"tokenName\",\"type\":\"bytes32\"},{\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"\",\"type\":\"tuple[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"redeemer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"balance\",\"type\":\"uint256\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"redeemDeposits\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"balance\",\"type\":\"uint256\"},{\"name\":\"buyer\",\"type\":\"address\"},{\"name\":\"currency\",\"type\":\"bytes32\"},{\"name\":\"_hashedMessage\",\"type\":\"bytes32\"},{\"name\":\"_v\",\"type\":\"uint8\"},{\"name\":\"_r\",\"type\":\"bytes32\"},{\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"addIssuedBalance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashIssueRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"redeemer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"transferor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"transferee\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"CashIssued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"addedL2Balance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"transferor\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"transferee\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"currency\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferredL2Balance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"checkSupportForToken(address)\":{\"params\":{\"_token\":\"token that is supported for issuing cash tokens\\r\"}},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"initialize(address)\":{\"details\":\"Initializes the contract setting the deployer as the initial owner.\"},\"isOwner()\":{\"details\":\"Returns true if the caller is the current owner.\"},\"isPaused()\":{\"return\":\"True: contract is paused\\rFalse: contract is not paused\\r\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. * > Note: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"requestIssue(address,uint256,address)\":{\"params\":{\"_amount\":\"amount of token that is transferred from investor to this cash token issuing contract\\r\",\"_token\":\"address of token used by investor to buy the cash token\\r\"}},\"supportTokens(address,bytes32)\":{\"params\":{\"_name\":\"name of token supported\\r\",\"_token\":\"address of token supported\\r\"}},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}}},\"userdoc\":{\"methods\":{\"checkSupportForToken(address)\":{\"notice\":\"Checks if a specified token is supported for issuing Verified cash tokens\\r\"},\"getSupportedTokens()\":{\"notice\":\"Returns array of tokens supported\\r\"},\"isPaused()\":{\"notice\":\"returns whether or not the contract is paused\\r\"},\"requestIssue(address,uint256,address)\":{\"notice\":\"Used by external apps (eg, exchange, wallet) to buy Verified cash token \\r\"},\"supportTokens(address,bytes32)\":{\"notice\":\"Specifies list of supported tokens that can be deposited to issue Verified cash tokens\\r\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Cash.sol\":\"Cash\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-ethereum-package/contracts/GSN/Context.sol\":{\"keccak256\":\"0x3491510fa4862af1a43f6c860d9cf7392240196540cd3c0eea79d374d419c5a1\",\"urls\":[\"bzzr://5cddbf3b74b775a8670757a6b8e108dac17dac20253f35f4c729e9cb6bea4ed3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xd7e8ab76fa35c4d8d35a06a6ed538cadab8b75a1aa00594ced1568b2c0cadde3\",\"urls\":[\"bzzr://b4c855b32d75f2a4969bfbd530b6934b69f12f28584b3746967e1ca64e024bd9\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x2a474399663812668bb8e9c9e7d011d54fd09de386bd6e9fcb2407a677ebd1aa\",\"urls\":[\"bzzr://3d70561b32ba1494d2b2df362e92dff5ab869d27e2fe35cf9bf3a8ae137cffd3\"]},\"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]},\"@openzeppelin/upgrades/contracts/Initializable.sol\":{\"keccak256\":\"0x9bfec92e36234ecc99b5d37230acb6cd1f99560233753162204104a4897e8721\",\"urls\":[\"bzzr://f75d88b16fe25a9e19b3512691c496e2bb6d8451bc9a636196c4e17ca9b40201\"]},\"abdk-libraries-solidity/ABDKMathQuad.sol\":{\"keccak256\":\"0x0ae8a1dd1dce31cc6b46fa58d6a4b72353ece1c96a8497aa0d494797dc94bc36\",\"urls\":[\"bzzr://d29078c35091aee1858898e0e6f1572ab214634d82bee162efbb90b32a9a66cb\"]},\"project:/contracts/Cash.sol\":{\"keccak256\":\"0xc3f25067d7f8ab73b1f56fcd75b0e81e29a410332a96ff429492a3b2ce0dac3c\",\"urls\":[\"bzzr://410a854456ba1dc4d779584014564f2005e0dd62f13802a6f5433e758ba7b751\"]},\"project:/contracts/interfaces/IBond.sol\":{\"keccak256\":\"0x865b390946b6faa66ff8f3434fe714b2f081926b1e826ce1494c2b2df949d669\",\"urls\":[\"bzzr://6fd782eda38cbf7c968a841a9a4af9a6cbbf01fe19a8f04053fd7c3b9d8214f1\"]},\"project:/contracts/interfaces/ICash.sol\":{\"keccak256\":\"0x4c8c69f2cc22854e02ffb710d74a3e461e02c1862040d6d2cfe545e79d265330\",\"urls\":[\"bzzr://66a9e619781b6f2725348ccfb821899825b0d4099f35f7ec3b6887e0f92b1631\"]},\"project:/contracts/interfaces/IFactory.sol\":{\"keccak256\":\"0xe0dcf7b8cc48d3833fac3aae6bc8b865bd9448e1d98626b161ba57cc415262dd\",\"urls\":[\"bzzr://303315693a59ba004feeefe5bc0008857d452f6786b30c2642ba5e047f08b343\"]},\"project:/contracts/interfaces/IRates.sol\":{\"keccak256\":\"0xc32e70549fdb4e147901361b00ddc891db5d811cdea0db365695ab52106ff6fb\",\"urls\":[\"bzzr://3dd800321631ec5f22fbe955f807762ee0537e2ec8f37f27ecede1e9a333d39f\"]},\"project:/contracts/utilities/Pausable.sol\":{\"keccak256\":\"0x96eceae12582eec38cc9706095b6f7d038b00dc36d98a02d234e7051b42a2a6a\",\"urls\":[\"bzzr://e5e1adfa3d22d6769d754f3f7f74eb1b12f5327b56b49584d34490b9d747d9b3\"]},\"project:/contracts/utilities/StringUtils.sol\":{\"keccak256\":\"0x18f1be0daaca27eba3c56a0da1613331cd1a37eab4970307909d8be77d6fc34e\",\"urls\":[\"bzzr://e3b548071313cf6f3cdaf33069f4648feadeb37fb33c75fe6fd40e8310f8ff7c\"]}},\"version\":1}",
831
+ "bytecode": "0x6080604052614c2c806100136000396000f3fe6080604052600436106101c25760003560e01c806380726e14116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610554578063eace6d3b14610574578063ee8edd5614610594578063f2fde38b146105b4576101c2565b8063a9059cbb146104dd578063b187bd26146104fd578063c4d66de814610512578063d3c7c2c714610532576101c2565b80638f32d59b116100d15780638f32d59b1461047357806395d89b4114610488578063a0213ff11461049d578063a457c2d7146104bd576101c2565b806380726e141461041c5780638456cb591461043c5780638da5cb5b14610451576101c2565b80633f4ba83a116101645780635d4f5b1c1161013e5780635d4f5b1c146103a75780636c19e783146103c757806370a08231146103e7578063715018a614610407576101c2565b80633f4ba83a1461035257806346499770146103675780634ba3f98814610387576101c2565b806318160ddd116101a057806318160ddd146102db57806323b872dd146102f05780632ceafc27146103105780633950935114610332576101c2565b806306fdde0314610261578063095ea7b31461028c5780630bc4b81a146102b9575b346101cc57600080fd5b36156101d757600080fd5b609b5460ff16156101e757600080fd5b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546102229060801b61021d346105d4565b61063a565b33600090815260a160209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561026d57600080fd5b50610276610a40565b60405161028391906149b5565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004614096565b610ace565b6040516102839190614906565b3480156102c557600080fd5b506102ce610aeb565b6040516102839190614914565b3480156102e757600080fd5b506102ce610af1565b3480156102fc57600080fd5b506102ac61030b366004614049565b610af8565b34801561031c57600080fd5b5061033061032b366004614096565b610cef565b005b34801561033e57600080fd5b506102ac61034d366004614096565b610def565b34801561035e57600080fd5b50610330610e48565b34801561037357600080fd5b50610330610382366004614240565b610e79565b34801561039357600080fd5b506103306103a2366004614176565b61104c565b3480156103b357600080fd5b506102ac6103c2366004613fd3565b611383565b3480156103d357600080fd5b506103306103e2366004613fd3565b6113b1565b3480156103f357600080fd5b506102ce610402366004613fd3565b611400565b34801561041357600080fd5b5061033061141b565b34801561042857600080fd5b506103306104373660046141b9565b61148c565b34801561044857600080fd5b50610330611666565b34801561045d57600080fd5b50610466611695565b6040516102839190614889565b34801561047f57600080fd5b506102ac6116a4565b34801561049457600080fd5b506102766116ca565b3480156104a957600080fd5b506103306104b83660046140c6565b611725565b3480156104c957600080fd5b506102ac6104d8366004614096565b6119f1565b3480156104e957600080fd5b506102ac6104f8366004614096565b611a5f565b34801561050957600080fd5b506102ac611a73565b34801561051e57600080fd5b5061033061052d366004613fd3565b611a7c565b34801561053e57600080fd5b50610547611b51565b60405161028391906148f5565b34801561056057600080fd5b506102ce61056f36600461400f565b611bc6565b34801561058057600080fd5b5061033061058f366004614386565b611bf1565b3480156105a057600080fd5b506103306105af3660046142ea565b611f5f565b3480156105c057600080fd5b506103306105cf366004613fd3565b61219b565b6000816105e357506000610635565b8160006105ef826121ce565b90506070811015610608578060700382901b915061061b565b607081111561061b576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106b05780617fff14156106a6576001600160801b03198581169085161415610693578492505050610a3a565b50600160ef1b61ffff029150610a3a9050565b8492505050610a3a565b80617fff14156106c4578392505050610a3a565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b0316836106f557600193506106fc565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b03168461072d5760019450610734565b600160701b175b82610764576001600160801b03198816600160ff1b146107545787610757565b60005b9650505050505050610a3a565b80610784576001600160801b03198916600160ff1b146107545788610757565b84860384151583151514156108925760708113156107ab5789975050505050505050610a3a565b60008113156107bd5790811c906107ec565b606f198112156107d65788975050505050505050610a3a565b60008112156107ec578060000384901c93508596505b92810192600160711b8410610807576001968701969390931c925b86617fff141561083c578461082457600160f01b617fff0261082e565b6001600160f01b03195b975050505050505050610a3a565b600160701b841015610851576000965061085e565b6001600160701b03841693505b83607088901b86610870576000610876565b6001607f1b5b6001600160801b0316171760801b975050505050505050610a3a565b60008113156108ad57600184901b93506001870396506108c4565b60008112156108c457600182901b91506001860396505b60708113156108d65760019150610923565b60018113156108f3576001810360018303901c6001019150610923565b606f198112156109065760019350610923565b600019811215610923576001816000030360018503901c60010193505b81841061093457818403935061093d565b83820393508294505b83610953575060009650610a3a95505050505050565b600061095e856121ce565b9050806071141561098457600185901c6001600160701b031694506001880197506109d3565b60708110156109c6576070819003808911156109b3578086901b6001600160701b0316955080890398506109c0565b600098600019019590951b945b506109d3565b6001600160701b03851694505b87617fff1415610a0957856109f057600160f01b617fff026109fa565b6001600160f01b03195b98505050505050505050610a3a565b84607089901b87610a1b576000610a21565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b820191906000526020600020905b815481529060010190602001808311610aa957829003601f168201915b505050505081565b6000610ae2610adb612271565b8484612275565b50600192915050565b609e5481565b6035545b90565b609b5460009060ff1615610b0b57600080fd5b6000610b2f610b21610b1c87611400565b6105d4565b610b2a856105d4565b61232f565b60000b1215610b3d57600080fd5b6001600160a01b038316301415610b8357610b6e610b5a836105d4565b85600160d01b6572656465656d0230612478565b15610b7b57506001610ce8565b506000610ce8565b609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610bb6908690600401614889565b60206040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c069190810190614222565b600160cb1b660acd2c286c2e6d021480610cae5750609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610c4e908690600401614889565b60206040518083038186803b158015610c6657600080fd5b505afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9e9190810190614222565b600160ca1b66159a58509bdb9902145b15610cc657610cbe84848461327e565b506001610ce8565b610b6e610cd2836105d4565b85600160c11b673a3930b739b332b90286612478565b9392505050565b610cf76116a4565b610d1f57604051600160e51b62461bcd028152600401610d1690614a4a565b60405180910390fd5b6001600160a01b038216600090815260a46020526040902054610deb57610d44613e88565b506040805180820182528281526001600160a01b03848116602080840182815260a38054600181018255600082815296517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1760029092029182015591517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1890920180546001600160a01b0319169290951691909117909355915490835260a4909152919020555b5050565b6000610ae2610dfc612271565b84610e438560346000610e0d612271565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61339a16565b612275565b610e506116a4565b610e6f57604051600160e51b62461bcd028152600401610d1690614a4a565b610e776133c2565b565b600054610100900460ff1680610e925750610e926133f7565b80610ea0575060005460ff16155b610ebf57604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015610eea576000805460ff1961ff0019909116610100171660011790555b610ef384611a7c565b609f80546001600160a01b03191633179055604051610f1690879060200161485d565b604051602081830303815290604052609c9080519060200190610f3a929190613e9f565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e64790610f7b908990600090600590600401614922565b60006040518083038186803b158015610f9357600080fd5b505af4158015610fa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fcf91908101906142b5565b8051610fe391609d91602090910190613e9f565b50609e85905560a080546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b0319166101009285169290920291909117600160a81b60ff02191690558015611044576000805461ff00191690555b505050505050565b609b5460ff161561107257604051600160e51b62461bcd028152600401610d1690614a3a565b6001600160a01b038316600090815260a4602052604081205415611094575060015b801561121e576110a5333085612275565b6001600160a01b038416600090815260a4602052604081205460a380549091600019019081106110d157fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b815260040161111593929190614897565b602060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111679190810190614204565b15611218576001600160a01b038316600090815260a2602090815260408083208484529091529020546111a09060801b61021d866105d4565b6001600160a01b038416600081815260a2602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf039061120f9084908890614969565b60405180910390a25b5061137d565b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091528120546112549060801b610b2a866105d4565b60000b1261137d5733600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546112979060801b611292856105d4565b6133fd565b33600090815260a160209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a283528184209084529091529020546112fc911b61021d856105d4565b6001600160a01b038316600081815260a260209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf03906113749086906149d6565b60405180910390a25b50505050565b6001600160a01b038116600090815260a46020526040812054156113a957506001610635565b506000610635565b6113b96116a4565b6113d857604051600160e51b62461bcd028152600401610d1690614a4a565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b6114236116a4565b61144257604051600160e51b62461bcd028152600401610d1690614a4a565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b60008460405160200161149f919061494a565b6040516020818303038152906040528051906020012090506000816040516020016114ca9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516115249493929190614977565b6020604051602081039080840390855afa158015611546573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461156357600080fd5b6001600160a01b038a16600090815260a2602090815260408083208a84529091528120546115a29061159b9060801b6112928d6105d4565b600061232f565b60000b1261165a576001600160a01b038a16600090815260a2602090815260408083208a84529091529020546115de9060801b6112928b6105d4565b506001600160a01b038816600090815260a2602090815260408083208a84529091529020546116139060801b61021d8b6105d4565b50896001600160a01b03167fff1247709775171c6ced2a84a8776135fbf147b71843e06d083855dce5250dd689898c604051611651939291906148bf565b60405180910390a25b50505050505050505050565b61166e6116a4565b61168d57604051600160e51b62461bcd028152600401610d1690614a4a565b610e7761340f565b6068546001600160a01b031690565b6068546000906001600160a01b03166116bb612271565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b600084604051602001611738919061494a565b6040516020818303038152906040528051906020012090506000816040516020016117639190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516117bd9493929190614977565b6020604051602081039080840390855afa1580156117df573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146117fc57600080fd5b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020546118309060801b611292896105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b031916608096871c17905592825260a181528282208d835290522054611886911b61021d896105d4565b6001600160a01b038b16600090815260a1602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790556118cb3089613447565b6118d6308b8a61327e565b6001600160a01b038a16600090815260a2602090815260408083208c845290915290205461191190600160801b900460801b6112928a6105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b0316600160801b608097881c81029190911790915593835260a182528083208e845290915290205461197792919004901b61021d8a6105d4565b6001600160a01b038b16600081815260a1602090815260408083208e845290915290819020805460809490941c600160801b026001600160801b0390941693909317909255609e54915190917fc49566a7c5334ea8858c89b2e78ca7b7bcba63008800b945859eded70040a8329161165191908c90614969565b6000610ae26119fe612271565b84610e4385604051806060016040528060258152602001614bce6025913960346000611a28612271565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61350a16565b6000610ae2611a6c612271565b848461327e565b609b5460ff1690565b600054610100900460ff1680611a955750611a956133f7565b80611aa3575060005460ff16155b611ac257604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015611aed576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610deb576000805461ff00191690555050565b606060a3805480602002602001604051908101604052809291908181526020016000905b82821015611bbd5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611b75565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b600084604051602001611c04919061494a565b604051602081830303815290604052805190602001209050600081604051602001611c2f9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611c899493929190614977565b6020604051602081039080840390855afa158015611cab573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611cc857600080fd5b611cd1876105d4565b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020805460809290921c600160801b026001600160801b03909216919091179055600160d91b6432ba3432b902881415611dd1576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611d5c573d6000803e3d6000fd5b506001600160a01b038916600090815260a2602090815260408083208b8452909152902054611d919060801b6112928c6105d4565b6001600160a01b038a16600090815260a2602090815260408083208c8452909152902080546001600160801b03191660809290921c919091179055611f24565b60005b60a354811015611f22578860a38281548110611dec57fe5b9060005260206000209060020201600001541415611f1a5760a38181548110611e1157fe5b6000918252602090912060016002909202010154604051600160e01b63a9059cbb0281526001600160a01b039091169063a9059cbb90611e57908d908f906004016148da565b602060405180830381600087803b158015611e7157600080fd5b505af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea99190810190614204565b506001600160a01b038a16600090815260a2602090815260408083208c8452909152902054611ede9060801b6112928d6105d4565b6001600160a01b038b16600090815260a2602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790555b600101611dd4565b505b886001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b1898c604051611651929190614969565b600084604051602001611f72919061494a565b604051602081830303815290604052805190602001209050600081604051602001611f9d9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611ff79493929190614977565b6020604051602081039080840390855afa158015612019573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461203657600080fd5b609f54604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790612069908b90600401614a20565b60206040518083038186803b15801561208157600080fd5b505afa158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120b99190810190613ff1565b6001600160a01b03161415612190576001600160a01b038816600081815260a2602090815260408083208b84529091529020547f210f33c455d7281801a9d50a1a61a0cd090cda687918f934a3d95784440ca2c290899061212e908d9061212990600160801b900460801b613539565b6135d1565b60405161213c929190614969565b60405180910390a261214d896105d4565b6001600160a01b038916600090815260a2602090815260408083208b84529091529020805460809290921c600160801b026001600160801b039092169190911790555b505050505050505050565b6121a36116a4565b6121c257604051600160e51b62461bcd028152600401610d1690614a4a565b6121cb81613613565b50565b60008082116121dc57600080fd5b6000600160801b83106121f157608092831c92015b68010000000000000000831061220957604092831c92015b640100000000831061221d57602092831c92015b62010000831061222f57601092831c92015b610100831061224057600892831c92015b6010831061225057600492831c92015b6004831061226057600292831c92015b60028310610a3a5760010192915050565b3390565b6001600160a01b03831661229e57604051600160e51b62461bcd028152600401610d1690614a8a565b6001600160a01b0382166122c757604051600160e51b62461bcd028152600401610d1690614a00565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612322908590614914565b60405180910390a3505050565b600060016001607f1b03608084901c16600160701b617fff0281111561235457600080fd5b60016001607f1b03608084901c16600160701b617fff0281111561237757600080fd5b6001600160801b03198581169085161415806123a35750600160701b617fff02826001600160801b0316105b6123ac57600080fd5b6001600160801b031985811690851614156123cc57600092505050610a3a565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561243757801561242857826001600160801b0316846001600160801b03161161242857600161242c565b6000195b945050505050610a3a565b801561244a576001945050505050610a3a565b826001600160801b0316846001600160801b03161161246b5760001961242c565b6001945050505050610a3a565b600080805b60a354811080156124965750600061249488613539565b115b15613272576001600160a01b038616600090815260a16020526040812060a380546124f992918491869081106124c857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961232f565b60000b12612bbd5760006125c061256e8960a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a3878154811061253e57fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613698565b6001600160a01b038916600090815260a16020526040812060a380549192918790811061259757fe5b60009182526020808320600290920290910154835282019290925260400190205460801b61395e565b905061262360a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106125f957fe5b60009182526020808320600290920290910154835282019290925260400190205460801b826133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061264c57fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506126f560a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106126c457fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b896133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061271e57fe5b6000918252602080832060029092029091015483528201929092526040019020805460809290921c600160801b026001600160801b03909216919091179055609b5460ff600160a81b909104161561277557600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d0286141561293e576127b1876127ac8a613539565b613bc5565b60a382815481106127be57fe5b906000526020600020906002020160000154600160d91b6432ba3432b902141561282657866001600160a01b03166108fc6127f883613539565b6040518115909202916000818181858888f19350505050158015612820573d6000803e3d6000fd5b506128d0565b60a3828154811061283357fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb8861285f84613539565b6040518363ffffffff1660e01b815260040161287c9291906148da565b602060405180830381600087803b15801561289657600080fd5b505af11580156128aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128ce9190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a3848154811061290857fe5b90600052602060002090600202016000015461292384613539565b604051612931929190614969565b60405180910390a2612b9f565b85600160c11b673a3930b739b332b9021415612b9f5761297d888260a3858154811061296657fe5b906000526020600020906002020160000154613c9e565b909850905061298f876127ac8a613539565b6129a18561299c8a613539565b613447565b6001600160a01b038516600090815260a16020526040812060a380546129f7939190869081106129cd57fe5b60009182526020808320600290920290910154835282019290925260400190205460801b8261063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612a2057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c0217905550612ac960a16000876001600160a01b03166001600160a01b03168152602001908152602001600020600060a38581548110612a9857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612af257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550866001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858660a38581548110612b6c57fe5b906000526020600020906002020160000154612b878c613539565b604051612b96939291906148bf565b60405180910390a25b50609b8054600160a81b60ff0219169055600096506001915061326a565b6001600160a01b038616600090815260a16020526040812060a38054612c1b9291849186908110612bea57fe5b600091825260208083206002909202909101548352820192909252604001812054600160801b900460801b9061232f565b60000b131561326a57609b54600160a81b900460ff1615612c3b57600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d02851415612eba57612cd0866127ac60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612ca057fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613539565b6001600160a01b038616600090815260a16020526040812060a3805483919085908110612cf957fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b905060a38281548110612d3957fe5b906000526020600020906002020160000154600160d91b6432ba3432b9021415612da157866001600160a01b03166108fc612d7383613539565b6040518115909202916000818181858888f19350505050158015612d9b573d6000803e3d6000fd5b50612e4b565b60a38281548110612dae57fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb88612dda84613539565b6040518363ffffffff1660e01b8152600401612df79291906148da565b602060405180830381600087803b158015612e1157600080fd5b505af1158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e499190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a38481548110612e8357fe5b906000526020600020906002020160000154612e9e84613539565b604051612eac929190614969565b60405180910390a2506131a1565b84600160c11b673a3930b739b332b90214156131a157600080612fad60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612f0a57fe5b906000526020600020906002020160000154815260200190815260200160002060000160109054906101000a900460801b60a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38781548110612f6f57fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b60a3868154811061296657fe5b91509150612fbe886127ac84613539565b612fcb8661299c84613539565b6001600160a01b038616600090815260a16020526040812060a38054612ff7939190879081106129cd57fe5b6001600160a01b038716600090815260a16020526040812060a380549192918790811061302057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506130c960a16000886001600160a01b03166001600160a01b03168152602001908152602001600020600060a3868154811061309857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8361063a565b6001600160a01b038716600090815260a16020526040812060a38054919291879081106130f257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550876001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858760a3868154811061316c57fe5b90600052602060002090600202016000015461318786613539565b604051613196939291906148bf565b60405180910390a250505b6132098760a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106131d957fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b6133fd565b6001600160a01b038716600090815260a16020526040812060a38054939a5090928490811061323457fe5b600091825260208083206002909202909101548352820192909252604001812055609b8054600160a81b60ff0219169055600191505b60010161247d565b5090505b949350505050565b6001600160a01b0383166132a757604051600160e51b62461bcd028152600401610d1690614a7a565b6001600160a01b0382166132d057604051600160e51b62461bcd028152600401610d16906149c6565b61331381604051806060016040528060268152602001614ba8602691396001600160a01b038616600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054613348908263ffffffff61339a16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612322908590614914565b600082820183811015610ce857604051600160e51b62461bcd028152600401610d1690614a10565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b6000610ce883600160ff1b841861063a565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03821661347057604051600160e51b62461bcd028152600401610d1690614a9a565b603554613483908263ffffffff61339a16565b6035556001600160a01b0382166000908152603360205260409020546134af908263ffffffff61339a16565b6001600160a01b0383166000818152603360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60405180910390a35050565b6000818484111561353157604051600160e51b62461bcd028152600401610d1691906149b5565b505050900390565b6000617fff6001600160801b03608084901c1660701c16613fff811015613564576000915050610635565b6001607f1b8360801c6001600160801b03161061358057600080fd5b6140fe81111561358f57600080fd5b600160701b6001600160701b03608085901c161761406f8210156135b95761406f8290031c610ce8565b61406f821115610ce85761406e1982011b9392505050565b6000610ce883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061350a565b6001600160a01b03811661363c57604051600160e51b62461bcd028152600401610d16906149f0565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156136f65780617fff14156136e55750600160ef1b61ffff029150610a3a9050565b505050600160ff1b81168218610a3a565b80617fff141561373657600160801b600160f01b038416156137255750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16610a3a565b600160801b600160ff1b03841661378657600160801b600160ff1b03851661376b5750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16600160f01b617fff0217610a3a565b6001600160701b03608085901c16816137a257600191506137a9565b600160701b175b6001600160701b03608087901c16836137e85780156137e35760006137cd826121ce565b6001955060e20393840160711901939190911b90505b6137f2565b600160701b1760721b5b8181816137fb57fe5b0490508061382757600160ff1b8787181661381757600061242c565b600160ff1b945050505050610a3a565b6001606c1b81101561383557fe5b6000600160731b82101561387557600160721b82101561386a57600160711b821015613862576070613865565b60715b61386d565b60725b60ff1661387e565b61387e826121ce565b90508361407101818601111561389c57617fff94506000915061392f565b83818601613ffc0110156138b757600094506000915061392f565b83818601613f8c011015613904578385613ffc0111156138e2578385613ffc010382901b91506138fb565b8385613ffc0110156138fb57613ffc8585030382901c91505b6000945061392f565b6070811115613917576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c811690821415613a055780617fff14156139e1576001600160801b031985811690851614156139be57505050600160ff1b81168218610a3a565b600160ff1b6001600160801b031986861816141561069357505050818117610a3a565b600160801b600160ff1b0384166136e55750600160ef1b61ffff029150610a3a9050565b80617fff1415613a4457600160801b600160ff1b038516613a335750600160ef1b61ffff029150610a3a9050565b505050600160ff1b82168118610a3a565b6001600160701b03608086901c1682613a605760019250613a67565b600160701b175b6001600160701b03608086901c1682613a835760019250613a8a565b600160701b175b9081029081613aa757600160ff1b8787181661381757600061242c565b928201926000600160e11b831015613adb57600160e01b831015613ad357613ace836121ce565b613ad6565b60e05b613ade565b60e15b90506140708186011015613af9576000945060009250613b96565b6140e08186011015613b3c57614070851015613b1e57846140700383901c9250613b33565b614070851115613b3357614070850383901b92505b60009450613b96565b61c0dd8186011115613b5657617fff945060009250613b96565b6070811115613b6d576070810383901c9250613b80565b6070811015613b80578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6001600160a01b038216613bee57604051600160e51b62461bcd028152600401610d1690614a6a565b613c3181604051806060016040528060228152602001614b86602291396001600160a01b038516600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038316600090815260336020526040902055603554613c5d908263ffffffff6135d116565b6035556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60a054604051600160e01b63e5f3d3a502815260009182918291613d2a916001600160a01b039091169063e5f3d3a590613cda90600401614a2d565b60206040518083038186803b158015613cf257600080fd5b505afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1c9190810190614222565b9050613d3781600061232f565b60000b60011415613e7e5760a05460408051600160e11b637a55098102815290516000926001600160a01b03169163f4aa1302916004808301926020929190829003018186803b158015613d8a57600080fd5b505afa158015613d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dc29190810190613ff1565b90506001600160a01b03811615613e7c57613de9816104f8613de4858b61395e565b613539565b50613df887611292848a61395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902054909750613e309060801b61021d848961395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902080546001600160801b03191660809290921c919091179055613e7986611292848261395e565b95505b505b5093949293505050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ee057805160ff1916838001178555613f0d565b82800160010185558215613f0d579182015b82811115613f0d578251825591602001919060010190613ef2565b50613f19929150613f1d565b5090565b610af591905b80821115613f195760008155600101613f23565b6000610ce88235614b0c565b6000610ce88251614b0c565b6000610ce88251614b17565b6000610ce88235610af5565b6000610ce88251610af5565b600082601f830112613f8457600080fd5b8151613f97613f9282614ad1565b614aaa565b91508082526020830160208301858383011115613fb357600080fd5b613fbe838284614b4f565b50505092915050565b6000610ce88235614b28565b600060208284031215613fe557600080fd5b60006132768484613f37565b60006020828403121561400357600080fd5b60006132768484613f43565b6000806040838503121561402257600080fd5b600061402e8585613f37565b925050602061403f85828601613f37565b9150509250929050565b60008060006060848603121561405e57600080fd5b600061406a8686613f37565b935050602061407b86828701613f37565b925050604061408c86828701613f5b565b9150509250925092565b600080604083850312156140a957600080fd5b60006140b58585613f37565b925050602061403f85828601613f5b565b600080600080600080600080610100898b0312156140e357600080fd5b60006140ef8b8b613f37565b98505060206141008b828c01613f5b565b97505060406141118b828c01613f5b565b96505060606141228b828c01613f5b565b95505060806141338b828c01613f5b565b94505060a06141448b828c01613fc7565b93505060c06141558b828c01613f5b565b92505060e06141668b828c01613f5b565b9150509295985092959890939650565b60008060006060848603121561418b57600080fd5b60006141978686613f37565b93505060206141a886828701613f5b565b925050604061408c86828701613f37565b600080600080600080600080610100898b0312156141d657600080fd5b60006141e28b8b613f37565b98505060206141f38b828c01613f5b565b97505060406141118b828c01613f37565b60006020828403121561421657600080fd5b60006132768484613f4f565b60006020828403121561423457600080fd5b60006132768484613f67565b600080600080600060a0868803121561425857600080fd5b60006142648888613f5b565b955050602061427588828901613f5b565b945050604061428688828901613f37565b935050606061429788828901613f37565b92505060806142a888828901613f37565b9150509295509295909350565b6000602082840312156142c757600080fd5b815167ffffffffffffffff8111156142de57600080fd5b61327684828501613f73565b600080600080600080600060e0888a03121561430557600080fd5b60006143118a8a613f5b565b97505060206143228a828b01613f37565b96505060406143338a828b01613f5b565b95505060606143448a828b01613f5b565b94505060806143558a828b01613fc7565b93505060a06143668a828b01613f5b565b92505060c06143778a828b01613f5b565b91505092959891949750929550565b600080600080600080600080610100898b0312156143a357600080fd5b60006143af8b8b613f5b565b98505060206141008b828c01613f37565b60006143cc8383614830565b505060400190565b6143dd81614b2e565b82525050565b6143dd81614b0c565b60006143f782614aff565b6144018185614b03565b935061440c83614af9565b60005b82811015614437576144228683516143c0565b955061442d82614af9565b915060010161440f565b5093949350505050565b6143dd81614b17565b6143dd81610af5565b6143dd61445f82610af5565b610af5565b6143dd81614b39565b600061447882614aff565b6144828185614b03565b9350614492818560208601614b4f565b61449b81614b7b565b9093019392505050565b60006144b2602383614b03565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b600061450a601c83610635565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000614543602683614b03565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b600061458e602283614b03565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b60006145d5601b83614b03565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160cb1b660acd2c286c2e6d029052565b600160b01b6972656d697474616e6365029052565b6000614635601883614b03565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b600061466e602083614b03565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006146a7602e83614b03565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000614706600683614b03565b600160d01b654c32746f4c3102815260200192915050565b600061472b602183614b03565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265738152600160f81b607302602082015260400192915050565b6000614771602583614b03565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b60006147bb602483614b03565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b6000614804601f83614b03565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300815260200192915050565b80516040830190614841848261444a565b50602082015161137d60208501826143e3565b6143dd81614b28565b60006148698284614453565b50602001919050565b600061487d826144fd565b91506148698284614453565b60208101610a3a82846143e3565b606081016148a582866143d4565b6148b260208301856143d4565b613276604083018461444a565b606081016148cd82866143e3565b6148b2602083018561444a565b604081016148e882856143e3565b610ce8602083018461444a565b60208082528101610ce881846143ec565b60208101610a3a8284614441565b60208101610a3a828461444a565b60608101614930828661444a565b61493d6020830185614464565b6132766040830184614464565b60408101614958828461444a565b8181036020830152610ce8816146f9565b604081016148e8828561444a565b60808101614985828761444a565b6149926020830186614854565b61499f604083018561444a565b6149ac606083018461444a565b95945050505050565b60208082528101610ce8818461446d565b60208082528101610a3a816144a5565b604081016149e3826144ed565b610a3a602083018461444a565b60208082528101610a3a81614536565b60208082528101610a3a81614581565b60208082528101610a3a816145c8565b604081016149e382614601565b6020810161063582614613565b60208082528101610a3a81614628565b60208082528101610a3a81614661565b60208082528101610a3a8161469a565b60208082528101610a3a8161471e565b60208082528101610a3a81614764565b60208082528101610a3a816147ae565b60208082528101610a3a816147f7565b60405181810167ffffffffffffffff81118282101715614ac957600080fd5b604052919050565b600067ffffffffffffffff821115614ae857600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610a3a82614b1c565b151590565b6001600160a01b031690565b60ff1690565b6000610a3a82614b44565b6000610a3a82610af5565b6000610a3a82614b0c565b60005b83811015614b6a578181015183820152602001614b52565b8381111561137d5750506000910152565b601f01601f19169056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723058206c469d55b1a4f726cce71f2ea317c960619e723a75af0fe4b0b1558474a9be386c6578706572696d656e74616cf50037",
832
+ "deployedBytecode": "0x6080604052600436106101c25760003560e01c806380726e14116100f7578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610554578063eace6d3b14610574578063ee8edd5614610594578063f2fde38b146105b4576101c2565b8063a9059cbb146104dd578063b187bd26146104fd578063c4d66de814610512578063d3c7c2c714610532576101c2565b80638f32d59b116100d15780638f32d59b1461047357806395d89b4114610488578063a0213ff11461049d578063a457c2d7146104bd576101c2565b806380726e141461041c5780638456cb591461043c5780638da5cb5b14610451576101c2565b80633f4ba83a116101645780635d4f5b1c1161013e5780635d4f5b1c146103a75780636c19e783146103c757806370a08231146103e7578063715018a614610407576101c2565b80633f4ba83a1461035257806346499770146103675780634ba3f98814610387576101c2565b806318160ddd116101a057806318160ddd146102db57806323b872dd146102f05780632ceafc27146103105780633950935114610332576101c2565b806306fdde0314610261578063095ea7b31461028c5780630bc4b81a146102b9575b346101cc57600080fd5b36156101d757600080fd5b609b5460ff16156101e757600080fd5b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546102229060801b61021d346105d4565b61063a565b33600090815260a160209081526040808320600160d91b6432ba3432b9028452909152902080546001600160801b03191660809290921c919091179055005b34801561026d57600080fd5b50610276610a40565b60405161028391906149b5565b60405180910390f35b34801561029857600080fd5b506102ac6102a7366004614096565b610ace565b6040516102839190614906565b3480156102c557600080fd5b506102ce610aeb565b6040516102839190614914565b3480156102e757600080fd5b506102ce610af1565b3480156102fc57600080fd5b506102ac61030b366004614049565b610af8565b34801561031c57600080fd5b5061033061032b366004614096565b610cef565b005b34801561033e57600080fd5b506102ac61034d366004614096565b610def565b34801561035e57600080fd5b50610330610e48565b34801561037357600080fd5b50610330610382366004614240565b610e79565b34801561039357600080fd5b506103306103a2366004614176565b61104c565b3480156103b357600080fd5b506102ac6103c2366004613fd3565b611383565b3480156103d357600080fd5b506103306103e2366004613fd3565b6113b1565b3480156103f357600080fd5b506102ce610402366004613fd3565b611400565b34801561041357600080fd5b5061033061141b565b34801561042857600080fd5b506103306104373660046141b9565b61148c565b34801561044857600080fd5b50610330611666565b34801561045d57600080fd5b50610466611695565b6040516102839190614889565b34801561047f57600080fd5b506102ac6116a4565b34801561049457600080fd5b506102766116ca565b3480156104a957600080fd5b506103306104b83660046140c6565b611725565b3480156104c957600080fd5b506102ac6104d8366004614096565b6119f1565b3480156104e957600080fd5b506102ac6104f8366004614096565b611a5f565b34801561050957600080fd5b506102ac611a73565b34801561051e57600080fd5b5061033061052d366004613fd3565b611a7c565b34801561053e57600080fd5b50610547611b51565b60405161028391906148f5565b34801561056057600080fd5b506102ce61056f36600461400f565b611bc6565b34801561058057600080fd5b5061033061058f366004614386565b611bf1565b3480156105a057600080fd5b506103306105af3660046142ea565b611f5f565b3480156105c057600080fd5b506103306105cf366004613fd3565b61219b565b6000816105e357506000610635565b8160006105ef826121ce565b90506070811015610608578060700382901b915061061b565b607081111561061b576070810382901c91505b613fff0160701b6001600160701b03919091161760801b90505b919050565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156106b05780617fff14156106a6576001600160801b03198581169085161415610693578492505050610a3a565b50600160ef1b61ffff029150610a3a9050565b8492505050610a3a565b80617fff14156106c4578392505050610a3a565b6001607f1b608086901c6001600160801b0381169190911015906001600160701b0316836106f557600193506106fc565b600160701b175b6001607f1b608087901c6001600160801b0381169190911015906001600160701b03168461072d5760019450610734565b600160701b175b82610764576001600160801b03198816600160ff1b146107545787610757565b60005b9650505050505050610a3a565b80610784576001600160801b03198916600160ff1b146107545788610757565b84860384151583151514156108925760708113156107ab5789975050505050505050610a3a565b60008113156107bd5790811c906107ec565b606f198112156107d65788975050505050505050610a3a565b60008112156107ec578060000384901c93508596505b92810192600160711b8410610807576001968701969390931c925b86617fff141561083c578461082457600160f01b617fff0261082e565b6001600160f01b03195b975050505050505050610a3a565b600160701b841015610851576000965061085e565b6001600160701b03841693505b83607088901b86610870576000610876565b6001607f1b5b6001600160801b0316171760801b975050505050505050610a3a565b60008113156108ad57600184901b93506001870396506108c4565b60008112156108c457600182901b91506001860396505b60708113156108d65760019150610923565b60018113156108f3576001810360018303901c6001019150610923565b606f198112156109065760019350610923565b600019811215610923576001816000030360018503901c60010193505b81841061093457818403935061093d565b83820393508294505b83610953575060009650610a3a95505050505050565b600061095e856121ce565b9050806071141561098457600185901c6001600160701b031694506001880197506109d3565b60708110156109c6576070819003808911156109b3578086901b6001600160701b0316955080890398506109c0565b600098600019019590951b945b506109d3565b6001600160701b03851694505b87617fff1415610a0957856109f057600160f01b617fff026109fa565b6001600160f01b03195b98505050505050505050610a3a565b84607089901b87610a1b576000610a21565b6001607f1b5b6001600160801b0316171760801b985050505050505050505b92915050565b609c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b820191906000526020600020905b815481529060010190602001808311610aa957829003601f168201915b505050505081565b6000610ae2610adb612271565b8484612275565b50600192915050565b609e5481565b6035545b90565b609b5460009060ff1615610b0b57600080fd5b6000610b2f610b21610b1c87611400565b6105d4565b610b2a856105d4565b61232f565b60000b1215610b3d57600080fd5b6001600160a01b038316301415610b8357610b6e610b5a836105d4565b85600160d01b6572656465656d0230612478565b15610b7b57506001610ce8565b506000610ce8565b609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610bb6908690600401614889565b60206040518083038186803b158015610bce57600080fd5b505afa158015610be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c069190810190614222565b600160cb1b660acd2c286c2e6d021480610cae5750609f54604051600160e01b63f429f19b0281526001600160a01b039091169063f429f19b90610c4e908690600401614889565b60206040518083038186803b158015610c6657600080fd5b505afa158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c9e9190810190614222565b600160ca1b66159a58509bdb9902145b15610cc657610cbe84848461327e565b506001610ce8565b610b6e610cd2836105d4565b85600160c11b673a3930b739b332b90286612478565b9392505050565b610cf76116a4565b610d1f57604051600160e51b62461bcd028152600401610d1690614a4a565b60405180910390fd5b6001600160a01b038216600090815260a46020526040902054610deb57610d44613e88565b506040805180820182528281526001600160a01b03848116602080840182815260a38054600181018255600082815296517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1760029092029182015591517f60859188cffe297f44dde29f2d2865634621f26215049caeb304ccba566a8b1890920180546001600160a01b0319169290951691909117909355915490835260a4909152919020555b5050565b6000610ae2610dfc612271565b84610e438560346000610e0d612271565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61339a16565b612275565b610e506116a4565b610e6f57604051600160e51b62461bcd028152600401610d1690614a4a565b610e776133c2565b565b600054610100900460ff1680610e925750610e926133f7565b80610ea0575060005460ff16155b610ebf57604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015610eea576000805460ff1961ff0019909116610100171660011790555b610ef384611a7c565b609f80546001600160a01b03191633179055604051610f1690879060200161485d565b604051602081830303815290604052609c9080519060200190610f3a929190613e9f565b50604051600160e01b63f921e64702815273__stringutils___________________________9063f921e64790610f7b908990600090600590600401614922565b60006040518083038186803b158015610f9357600080fd5b505af4158015610fa7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fcf91908101906142b5565b8051610fe391609d91602090910190613e9f565b50609e85905560a080546001600160a01b0319166001600160a01b0385811691909117909155609b8054610100600160a81b0319166101009285169290920291909117600160a81b60ff02191690558015611044576000805461ff00191690555b505050505050565b609b5460ff161561107257604051600160e51b62461bcd028152600401610d1690614a3a565b6001600160a01b038316600090815260a4602052604081205415611094575060015b801561121e576110a5333085612275565b6001600160a01b038416600090815260a4602052604081205460a380549091600019019081106110d157fe5b9060005260206000209060020201600001549050846001600160a01b03166323b872dd3330876040518463ffffffff1660e01b815260040161111593929190614897565b602060405180830381600087803b15801561112f57600080fd5b505af1158015611143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506111679190810190614204565b15611218576001600160a01b038316600090815260a2602090815260408083208484529091529020546111a09060801b61021d866105d4565b6001600160a01b038416600081815260a2602090815260408083208684529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf039061120f9084908890614969565b60405180910390a25b5061137d565b33600090815260a160209081526040808320600160d91b6432ba3432b90284529091528120546112549060801b610b2a866105d4565b60000b1261137d5733600090815260a160209081526040808320600160d91b6432ba3432b90284529091529020546112979060801b611292856105d4565b6133fd565b33600090815260a160209081526040808320600160d91b6432ba3432b90280855290835281842080546001600160801b031916608096871c1790556001600160a01b038716845260a283528184209084529091529020546112fc911b61021d856105d4565b6001600160a01b038316600081815260a260209081526040808320600160d91b6432ba3432b90284529091529081902080546001600160801b03191660809490941c9390931790925590517fe2ac3a086131f5c7b3a741ffad3af27c104ddc624ae2b853152c00c64bcbcf03906113749086906149d6565b60405180910390a25b50505050565b6001600160a01b038116600090815260a46020526040812054156113a957506001610635565b506000610635565b6113b96116a4565b6113d857604051600160e51b62461bcd028152600401610d1690614a4a565b609b80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b031660009081526033602052604090205490565b6114236116a4565b61144257604051600160e51b62461bcd028152600401610d1690614a4a565b6068546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3606880546001600160a01b0319169055565b60008460405160200161149f919061494a565b6040516020818303038152906040528051906020012090506000816040516020016114ca9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516115249493929190614977565b6020604051602081039080840390855afa158015611546573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461156357600080fd5b6001600160a01b038a16600090815260a2602090815260408083208a84529091528120546115a29061159b9060801b6112928d6105d4565b600061232f565b60000b1261165a576001600160a01b038a16600090815260a2602090815260408083208a84529091529020546115de9060801b6112928b6105d4565b506001600160a01b038816600090815260a2602090815260408083208a84529091529020546116139060801b61021d8b6105d4565b50896001600160a01b03167fff1247709775171c6ced2a84a8776135fbf147b71843e06d083855dce5250dd689898c604051611651939291906148bf565b60405180910390a25b50505050505050505050565b61166e6116a4565b61168d57604051600160e51b62461bcd028152600401610d1690614a4a565b610e7761340f565b6068546001600160a01b031690565b6068546000906001600160a01b03166116bb612271565b6001600160a01b031614905090565b609d805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ac65780601f10610a9b57610100808354040283529160200191610ac6565b600084604051602001611738919061494a565b6040516020818303038152906040528051906020012090506000816040516020016117639190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b0316600182878787604051600081526020016040526040516117bd9493929190614977565b6020604051602081039080840390855afa1580156117df573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146117fc57600080fd5b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020546118309060801b611292896105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b031916608096871c17905592825260a181528282208d835290522054611886911b61021d896105d4565b6001600160a01b038b16600090815260a1602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790556118cb3089613447565b6118d6308b8a61327e565b6001600160a01b038a16600090815260a2602090815260408083208c845290915290205461191190600160801b900460801b6112928a6105d4565b6001600160a01b038b16600081815260a2602090815260408083208e8452825280832080546001600160801b0316600160801b608097881c81029190911790915593835260a182528083208e845290915290205461197792919004901b61021d8a6105d4565b6001600160a01b038b16600081815260a1602090815260408083208e845290915290819020805460809490941c600160801b026001600160801b0390941693909317909255609e54915190917fc49566a7c5334ea8858c89b2e78ca7b7bcba63008800b945859eded70040a8329161165191908c90614969565b6000610ae26119fe612271565b84610e4385604051806060016040528060258152602001614bce6025913960346000611a28612271565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61350a16565b6000610ae2611a6c612271565b848461327e565b609b5460ff1690565b600054610100900460ff1680611a955750611a956133f7565b80611aa3575060005460ff16155b611ac257604051600160e51b62461bcd028152600401610d1690614a5a565b600054610100900460ff16158015611aed576000805460ff1961ff0019909116610100171660011790555b606880546001600160a01b0319166001600160a01b0384811691909117918290556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38015610deb576000805461ff00191690555050565b606060a3805480602002602001604051908101604052809291908181526020016000905b82821015611bbd5760008481526020908190206040805180820190915260028502909101805482526001908101546001600160a01b0316828401529083529092019101611b75565b50505050905090565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b600084604051602001611c04919061494a565b604051602081830303815290604052805190602001209050600081604051602001611c2f9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611c899493929190614977565b6020604051602081039080840390855afa158015611cab573d6000803e3d6000fd5b505050602060405103516001600160a01b031614611cc857600080fd5b611cd1876105d4565b6001600160a01b038a16600090815260a2602090815260408083208c84529091529020805460809290921c600160801b026001600160801b03909216919091179055600160d91b6432ba3432b902881415611dd1576040516001600160a01b038a16908b156108fc02908c906000818181858888f19350505050158015611d5c573d6000803e3d6000fd5b506001600160a01b038916600090815260a2602090815260408083208b8452909152902054611d919060801b6112928c6105d4565b6001600160a01b038a16600090815260a2602090815260408083208c8452909152902080546001600160801b03191660809290921c919091179055611f24565b60005b60a354811015611f22578860a38281548110611dec57fe5b9060005260206000209060020201600001541415611f1a5760a38181548110611e1157fe5b6000918252602090912060016002909202010154604051600160e01b63a9059cbb0281526001600160a01b039091169063a9059cbb90611e57908d908f906004016148da565b602060405180830381600087803b158015611e7157600080fd5b505af1158015611e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611ea99190810190614204565b506001600160a01b038a16600090815260a2602090815260408083208c8452909152902054611ede9060801b6112928d6105d4565b6001600160a01b038b16600090815260a2602090815260408083208d8452909152902080546001600160801b03191660809290921c9190911790555b600101611dd4565b505b886001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b1898c604051611651929190614969565b600084604051602001611f72919061494a565b604051602081830303815290604052805190602001209050600081604051602001611f9d9190614872565b604051602081830303815290604052805190602001209050609b60019054906101000a90046001600160a01b03166001600160a01b031660018287878760405160008152602001604052604051611ff79493929190614977565b6020604051602081039080840390855afa158015612019573d6000803e3d6000fd5b505050602060405103516001600160a01b03161461203657600080fd5b609f54604051600160e01b632ea7791702815230916001600160a01b031690632ea7791790612069908b90600401614a20565b60206040518083038186803b15801561208157600080fd5b505afa158015612095573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120b99190810190613ff1565b6001600160a01b03161415612190576001600160a01b038816600081815260a2602090815260408083208b84529091529020547f210f33c455d7281801a9d50a1a61a0cd090cda687918f934a3d95784440ca2c290899061212e908d9061212990600160801b900460801b613539565b6135d1565b60405161213c929190614969565b60405180910390a261214d896105d4565b6001600160a01b038916600090815260a2602090815260408083208b84529091529020805460809290921c600160801b026001600160801b039092169190911790555b505050505050505050565b6121a36116a4565b6121c257604051600160e51b62461bcd028152600401610d1690614a4a565b6121cb81613613565b50565b60008082116121dc57600080fd5b6000600160801b83106121f157608092831c92015b68010000000000000000831061220957604092831c92015b640100000000831061221d57602092831c92015b62010000831061222f57601092831c92015b610100831061224057600892831c92015b6010831061225057600492831c92015b6004831061226057600292831c92015b60028310610a3a5760010192915050565b3390565b6001600160a01b03831661229e57604051600160e51b62461bcd028152600401610d1690614a8a565b6001600160a01b0382166122c757604051600160e51b62461bcd028152600401610d1690614a00565b6001600160a01b0380841660008181526034602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612322908590614914565b60405180910390a3505050565b600060016001607f1b03608084901c16600160701b617fff0281111561235457600080fd5b60016001607f1b03608084901c16600160701b617fff0281111561237757600080fd5b6001600160801b03198581169085161415806123a35750600160701b617fff02826001600160801b0316105b6123ac57600080fd5b6001600160801b031985811690851614156123cc57600092505050610a3a565b60006001607f1b8660801c6001600160801b03161015905060006001607f1b8660801c6001600160801b031610159050811561243757801561242857826001600160801b0316846001600160801b03161161242857600161242c565b6000195b945050505050610a3a565b801561244a576001945050505050610a3a565b826001600160801b0316846001600160801b03161161246b5760001961242c565b6001945050505050610a3a565b600080805b60a354811080156124965750600061249488613539565b115b15613272576001600160a01b038616600090815260a16020526040812060a380546124f992918491869081106124c857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961232f565b60000b12612bbd5760006125c061256e8960a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a3878154811061253e57fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613698565b6001600160a01b038916600090815260a16020526040812060a380549192918790811061259757fe5b60009182526020808320600290920290910154835282019290925260400190205460801b61395e565b905061262360a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106125f957fe5b60009182526020808320600290920290910154835282019290925260400190205460801b826133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061264c57fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506126f560a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106126c457fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b896133fd565b6001600160a01b038816600090815260a16020526040812060a380549192918690811061271e57fe5b6000918252602080832060029092029091015483528201929092526040019020805460809290921c600160801b026001600160801b03909216919091179055609b5460ff600160a81b909104161561277557600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d0286141561293e576127b1876127ac8a613539565b613bc5565b60a382815481106127be57fe5b906000526020600020906002020160000154600160d91b6432ba3432b902141561282657866001600160a01b03166108fc6127f883613539565b6040518115909202916000818181858888f19350505050158015612820573d6000803e3d6000fd5b506128d0565b60a3828154811061283357fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb8861285f84613539565b6040518363ffffffff1660e01b815260040161287c9291906148da565b602060405180830381600087803b15801561289657600080fd5b505af11580156128aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506128ce9190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a3848154811061290857fe5b90600052602060002090600202016000015461292384613539565b604051612931929190614969565b60405180910390a2612b9f565b85600160c11b673a3930b739b332b9021415612b9f5761297d888260a3858154811061296657fe5b906000526020600020906002020160000154613c9e565b909850905061298f876127ac8a613539565b6129a18561299c8a613539565b613447565b6001600160a01b038516600090815260a16020526040812060a380546129f7939190869081106129cd57fe5b60009182526020808320600290920290910154835282019290925260400190205460801b8261063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612a2057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c0217905550612ac960a16000876001600160a01b03166001600160a01b03168152602001908152602001600020600060a38581548110612a9857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8961063a565b6001600160a01b038616600090815260a16020526040812060a3805491929186908110612af257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550866001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858660a38581548110612b6c57fe5b906000526020600020906002020160000154612b878c613539565b604051612b96939291906148bf565b60405180910390a25b50609b8054600160a81b60ff0219169055600096506001915061326a565b6001600160a01b038616600090815260a16020526040812060a38054612c1b9291849186908110612bea57fe5b600091825260208083206002909202909101548352820192909252604001812054600160801b900460801b9061232f565b60000b131561326a57609b54600160a81b900460ff1615612c3b57600080fd5b609b8054600160a81b60ff021916600160a81b179055600160d01b6572656465656d02851415612eba57612cd0866127ac60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612ca057fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b613539565b6001600160a01b038616600090815260a16020526040812060a3805483919085908110612cf957fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b905060a38281548110612d3957fe5b906000526020600020906002020160000154600160d91b6432ba3432b9021415612da157866001600160a01b03166108fc612d7383613539565b6040518115909202916000818181858888f19350505050158015612d9b573d6000803e3d6000fd5b50612e4b565b60a38281548110612dae57fe5b60009182526020909120600160029092020101546001600160a01b031663a9059cbb88612dda84613539565b6040518363ffffffff1660e01b8152600401612df79291906148da565b602060405180830381600087803b158015612e1157600080fd5b505af1158015612e25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612e499190810190614204565b505b866001600160a01b03167fc3cc9f7dc78b4765f7ece03d1970d655883f54b5927067c97cded09fa91915b160a38481548110612e8357fe5b906000526020600020906002020160000154612e9e84613539565b604051612eac929190614969565b60405180910390a2506131a1565b84600160c11b673a3930b739b332b90214156131a157600080612fad60a160008a6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38681548110612f0a57fe5b906000526020600020906002020160000154815260200190815260200160002060000160109054906101000a900460801b60a160008b6001600160a01b03166001600160a01b03168152602001908152602001600020600060a38781548110612f6f57fe5b906000526020600020906002020160000154815260200190815260200160002060000160009054906101000a900460801b60a3868154811061296657fe5b91509150612fbe886127ac84613539565b612fcb8661299c84613539565b6001600160a01b038616600090815260a16020526040812060a38054612ff7939190879081106129cd57fe5b6001600160a01b038716600090815260a16020526040812060a380549192918790811061302057fe5b906000526020600020906002020160000154815260200190815260200160002060000160006101000a8154816001600160801b03021916908360801c02179055506130c960a16000886001600160a01b03166001600160a01b03168152602001908152602001600020600060a3868154811061309857fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b8361063a565b6001600160a01b038716600090815260a16020526040812060a38054919291879081106130f257fe5b906000526020600020906002020160000154815260200190815260200160002060000160106101000a8154816001600160801b03021916908360801c0217905550876001600160a01b03167f952d4864a5fc6f5a60dff7f24a4cc96e6ec94f1b5c343ed13fb6cb321c771b858760a3868154811061316c57fe5b90600052602060002090600202016000015461318786613539565b604051613196939291906148bf565b60405180910390a250505b6132098760a16000896001600160a01b03166001600160a01b03168152602001908152602001600020600060a385815481106131d957fe5b600091825260208083206002909202909101548352820192909252604001902054600160801b900460801b6133fd565b6001600160a01b038716600090815260a16020526040812060a38054939a5090928490811061323457fe5b600091825260208083206002909202909101548352820192909252604001812055609b8054600160a81b60ff0219169055600191505b60010161247d565b5090505b949350505050565b6001600160a01b0383166132a757604051600160e51b62461bcd028152600401610d1690614a7a565b6001600160a01b0382166132d057604051600160e51b62461bcd028152600401610d16906149c6565b61331381604051806060016040528060268152602001614ba8602691396001600160a01b038616600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038085166000908152603360205260408082209390935590841681522054613348908263ffffffff61339a16565b6001600160a01b0380841660008181526033602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612322908590614914565b600082820183811015610ce857604051600160e51b62461bcd028152600401610d1690614a10565b609b805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b303b1590565b6000610ce883600160ff1b841861063a565b609b805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6001600160a01b03821661347057604051600160e51b62461bcd028152600401610d1690614a9a565b603554613483908263ffffffff61339a16565b6035556001600160a01b0382166000908152603360205260409020546134af908263ffffffff61339a16565b6001600160a01b0383166000818152603360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60405180910390a35050565b6000818484111561353157604051600160e51b62461bcd028152600401610d1691906149b5565b505050900390565b6000617fff6001600160801b03608084901c1660701c16613fff811015613564576000915050610635565b6001607f1b8360801c6001600160801b03161061358057600080fd5b6140fe81111561358f57600080fd5b600160701b6001600160701b03608085901c161761406f8210156135b95761406f8290031c610ce8565b61406f821115610ce85761406e1982011b9392505050565b6000610ce883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061350a565b6001600160a01b03811661363c57604051600160e51b62461bcd028152600401610d16906149f0565b6068546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3606880546001600160a01b0319166001600160a01b0392909216919091179055565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c8116908214156136f65780617fff14156136e55750600160ef1b61ffff029150610a3a9050565b505050600160ff1b81168218610a3a565b80617fff141561373657600160801b600160f01b038416156137255750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16610a3a565b600160801b600160ff1b03841661378657600160801b600160ff1b03851661376b5750600160ef1b61ffff029150610a3a9050565b505050808218600160ff1b16600160f01b617fff0217610a3a565b6001600160701b03608085901c16816137a257600191506137a9565b600160701b175b6001600160701b03608087901c16836137e85780156137e35760006137cd826121ce565b6001955060e20393840160711901939190911b90505b6137f2565b600160701b1760721b5b8181816137fb57fe5b0490508061382757600160ff1b8787181661381757600061242c565b600160ff1b945050505050610a3a565b6001606c1b81101561383557fe5b6000600160731b82101561387557600160721b82101561386a57600160711b821015613862576070613865565b60715b61386d565b60725b60ff1661387e565b61387e826121ce565b90508361407101818601111561389c57617fff94506000915061392f565b83818601613ffc0110156138b757600094506000915061392f565b83818601613f8c011015613904578385613ffc0111156138e2578385613ffc010382901b91506138fb565b8385613ffc0110156138fb57613ffc8585030382901c91505b6000945061392f565b6070811115613917576070810382901c91505b6001600160701b038216915083818601613f8d010394505b81607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6000617fff6001600160801b03608085811c8216607090811c8416939186901c90921690911c811690821415613a055780617fff14156139e1576001600160801b031985811690851614156139be57505050600160ff1b81168218610a3a565b600160ff1b6001600160801b031986861816141561069357505050818117610a3a565b600160801b600160ff1b0384166136e55750600160ef1b61ffff029150610a3a9050565b80617fff1415613a4457600160801b600160ff1b038516613a335750600160ef1b61ffff029150610a3a9050565b505050600160ff1b82168118610a3a565b6001600160701b03608086901c1682613a605760019250613a67565b600160701b175b6001600160701b03608086901c1682613a835760019250613a8a565b600160701b175b9081029081613aa757600160ff1b8787181661381757600061242c565b928201926000600160e11b831015613adb57600160e01b831015613ad357613ace836121ce565b613ad6565b60e05b613ade565b60e15b90506140708186011015613af9576000945060009250613b96565b6140e08186011015613b3c57614070851015613b1e57846140700383901c9250613b33565b614070851115613b3357614070850383901b92505b60009450613b96565b61c0dd8186011115613b5657617fff945060009250613b96565b6070811115613b6d576070810383901c9250613b80565b6070811015613b80578060700383901b92505b6001600160701b03831692506140df8186010394505b82607086901b888a186001607f1b60801b1660801c6001600160801b0316171760801b95505050505050610a3a565b6001600160a01b038216613bee57604051600160e51b62461bcd028152600401610d1690614a6a565b613c3181604051806060016040528060228152602001614b86602291396001600160a01b038516600090815260336020526040902054919063ffffffff61350a16565b6001600160a01b038316600090815260336020526040902055603554613c5d908263ffffffff6135d116565b6035556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906134fe908590614914565b60a054604051600160e01b63e5f3d3a502815260009182918291613d2a916001600160a01b039091169063e5f3d3a590613cda90600401614a2d565b60206040518083038186803b158015613cf257600080fd5b505afa158015613d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b1c9190810190614222565b9050613d3781600061232f565b60000b60011415613e7e5760a05460408051600160e11b637a55098102815290516000926001600160a01b03169163f4aa1302916004808301926020929190829003018186803b158015613d8a57600080fd5b505afa158015613d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250613dc29190810190613ff1565b90506001600160a01b03811615613e7c57613de9816104f8613de4858b61395e565b613539565b50613df887611292848a61395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902054909750613e309060801b61021d848961395e565b6001600160a01b038216600090815260a160209081526040808320898452909152902080546001600160801b03191660809290921c919091179055613e7986611292848261395e565b95505b505b5093949293505050565b604080518082019091526000808252602082015290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613ee057805160ff1916838001178555613f0d565b82800160010185558215613f0d579182015b82811115613f0d578251825591602001919060010190613ef2565b50613f19929150613f1d565b5090565b610af591905b80821115613f195760008155600101613f23565b6000610ce88235614b0c565b6000610ce88251614b0c565b6000610ce88251614b17565b6000610ce88235610af5565b6000610ce88251610af5565b600082601f830112613f8457600080fd5b8151613f97613f9282614ad1565b614aaa565b91508082526020830160208301858383011115613fb357600080fd5b613fbe838284614b4f565b50505092915050565b6000610ce88235614b28565b600060208284031215613fe557600080fd5b60006132768484613f37565b60006020828403121561400357600080fd5b60006132768484613f43565b6000806040838503121561402257600080fd5b600061402e8585613f37565b925050602061403f85828601613f37565b9150509250929050565b60008060006060848603121561405e57600080fd5b600061406a8686613f37565b935050602061407b86828701613f37565b925050604061408c86828701613f5b565b9150509250925092565b600080604083850312156140a957600080fd5b60006140b58585613f37565b925050602061403f85828601613f5b565b600080600080600080600080610100898b0312156140e357600080fd5b60006140ef8b8b613f37565b98505060206141008b828c01613f5b565b97505060406141118b828c01613f5b565b96505060606141228b828c01613f5b565b95505060806141338b828c01613f5b565b94505060a06141448b828c01613fc7565b93505060c06141558b828c01613f5b565b92505060e06141668b828c01613f5b565b9150509295985092959890939650565b60008060006060848603121561418b57600080fd5b60006141978686613f37565b93505060206141a886828701613f5b565b925050604061408c86828701613f37565b600080600080600080600080610100898b0312156141d657600080fd5b60006141e28b8b613f37565b98505060206141f38b828c01613f5b565b97505060406141118b828c01613f37565b60006020828403121561421657600080fd5b60006132768484613f4f565b60006020828403121561423457600080fd5b60006132768484613f67565b600080600080600060a0868803121561425857600080fd5b60006142648888613f5b565b955050602061427588828901613f5b565b945050604061428688828901613f37565b935050606061429788828901613f37565b92505060806142a888828901613f37565b9150509295509295909350565b6000602082840312156142c757600080fd5b815167ffffffffffffffff8111156142de57600080fd5b61327684828501613f73565b600080600080600080600060e0888a03121561430557600080fd5b60006143118a8a613f5b565b97505060206143228a828b01613f37565b96505060406143338a828b01613f5b565b95505060606143448a828b01613f5b565b94505060806143558a828b01613fc7565b93505060a06143668a828b01613f5b565b92505060c06143778a828b01613f5b565b91505092959891949750929550565b600080600080600080600080610100898b0312156143a357600080fd5b60006143af8b8b613f5b565b98505060206141008b828c01613f37565b60006143cc8383614830565b505060400190565b6143dd81614b2e565b82525050565b6143dd81614b0c565b60006143f782614aff565b6144018185614b03565b935061440c83614af9565b60005b82811015614437576144228683516143c0565b955061442d82614af9565b915060010161440f565b5093949350505050565b6143dd81614b17565b6143dd81610af5565b6143dd61445f82610af5565b610af5565b6143dd81614b39565b600061447882614aff565b6144828185614b03565b9350614492818560208601614b4f565b61449b81614b7b565b9093019392505050565b60006144b2602383614b03565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464728152600160e81b6265737302602082015260400192915050565b600160d91b6432ba3432b9029052565b600061450a601c83610635565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b6000614543602683614b03565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20618152600160d01b6564647265737302602082015260400192915050565b600061458e602283614b03565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472658152600160f01b61737302602082015260400192915050565b60006145d5601b83614b03565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b600160cb1b660acd2c286c2e6d029052565b600160b01b6972656d697474616e6365029052565b6000614635601883614b03565b7f436f6e747261637420696e207061757365642073746174650000000000000000815260200192915050565b600061466e602083614b03565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b60006146a7602e83614b03565b7f436f6e747261637420696e7374616e63652068617320616c726561647920626581527f656e20696e697469616c697a6564000000000000000000000000000000000000602082015260400192915050565b6000614706600683614b03565b600160d01b654c32746f4c3102815260200192915050565b600061472b602183614b03565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265738152600160f81b607302602082015260400192915050565b6000614771602583614b03565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061648152600160d81b64647265737302602082015260400192915050565b60006147bb602483614b03565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164648152600160e01b637265737302602082015260400192915050565b6000614804601f83614b03565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300815260200192915050565b80516040830190614841848261444a565b50602082015161137d60208501826143e3565b6143dd81614b28565b60006148698284614453565b50602001919050565b600061487d826144fd565b91506148698284614453565b60208101610a3a82846143e3565b606081016148a582866143d4565b6148b260208301856143d4565b613276604083018461444a565b606081016148cd82866143e3565b6148b2602083018561444a565b604081016148e882856143e3565b610ce8602083018461444a565b60208082528101610ce881846143ec565b60208101610a3a8284614441565b60208101610a3a828461444a565b60608101614930828661444a565b61493d6020830185614464565b6132766040830184614464565b60408101614958828461444a565b8181036020830152610ce8816146f9565b604081016148e8828561444a565b60808101614985828761444a565b6149926020830186614854565b61499f604083018561444a565b6149ac606083018461444a565b95945050505050565b60208082528101610ce8818461446d565b60208082528101610a3a816144a5565b604081016149e3826144ed565b610a3a602083018461444a565b60208082528101610a3a81614536565b60208082528101610a3a81614581565b60208082528101610a3a816145c8565b604081016149e382614601565b6020810161063582614613565b60208082528101610a3a81614628565b60208082528101610a3a81614661565b60208082528101610a3a8161469a565b60208082528101610a3a8161471e565b60208082528101610a3a81614764565b60208082528101610a3a816147ae565b60208082528101610a3a816147f7565b60405181810167ffffffffffffffff81118282101715614ac957600080fd5b604052919050565b600067ffffffffffffffff821115614ae857600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b6000610a3a82614b1c565b151590565b6001600160a01b031690565b60ff1690565b6000610a3a82614b44565b6000610a3a82610af5565b6000610a3a82614b0c565b60005b83811015614b6a578181015183820152602001614b52565b8381111561137d5750506000910152565b601f01601f19169056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723058206c469d55b1a4f726cce71f2ea317c960619e723a75af0fe4b0b1558474a9be386c6578706572696d656e74616cf50037",
833
833
  "sourceMap": "706:17966:17:-;;;;;;;;;",
834
834
  "deployedSourceMap": "706:17966:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2945:9;2937:22;;;;;;3010:8;:18;3002:27;;;;;;3087:6;;;;:15;3079:24;;;;;;3271:10;3260:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3260:31:17;;;;;;;:45;3243:97;;3260:45;;3307:32;3329:9;3307:21;:32::i;:::-;3243:16;:97::i;:::-;3206:10;3195:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;3195:31:17;;;;;;;:145;;-1:-1:-1;;;;;;3195:145:17;;;;;;;;;;;;706:17966;1025:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1025:18:17;;;:::i;:::-;;;;;;;;;;;;;;;;2577:149:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2577:149:3;;;;;;;;:::i;:::-;;;;;;;;1077:28:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1077:28:17;;;:::i;:::-;;;;;;;;1636:89:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1636:89:3;;;:::i;10636:1383:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10636:1383:17;;;;;;;;:::i;3575:347::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3575:347:17;;;;;;;;:::i;:::-;;3879:207:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3879:207:3;;;;;;;;:::i;18602:65:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18602:65:17;;;:::i;2297:411::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2297:411:17;;;;;;;;:::i;4768:1265::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4768:1265:17;;;;;;;;:::i;4104:182::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4104:182:17;;;;;;;;:::i;2716:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2716:89:17;;;;;;;;:::i;1783:108:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1783:108:3;;;;;;;;:::i;1746:137:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1746:137:2;;;:::i;6968:906:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6968:906:17;;;;;;;;:::i;18535:61::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18535:61:17;;;:::i;959:77:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;959:77:2;;;:::i;:::-;;;;;;;;1310:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1310:92:2;;;:::i;1050:20:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1050:20:17;;;:::i;9258:1238::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9258:1238:17;;;;;;;;:::i;4573:258:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4573:258:3;;;;;;;;:::i;2094:155::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2094:155:3;;;;;;;;:::i;762:79:27:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;762:79:27;;;:::i;741:142:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;741:142:2;;;;;;;;:::i;4355:105:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4355:105:17;;;:::i;:::-;;;;;;;;2307:132:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2307:132:3;;;;;;;;:::i;7925:1270:17:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7925:1270:17;;;;;;;;:::i;6108:745::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6108:745:17;;;;;;;;:::i;2032:107:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2032:107:2;;;;;;;;:::i;2992:392:15:-;3045:7;3064:6;3060:320;;-1:-1:-1;3088:1:15;3072:18;;3060:320;3126:1;3109:14;3150:12;3126:1;3150:3;:12::i;:::-;3136:26;;3180:3;3174;:9;3170:83;;;3202:3;3196;:9;3185:20;;;;;3170:83;;;3228:3;3222;:9;3218:35;;;3250:3;3244;:9;3233:20;;;;;3218:35;3313:5;:11;3328:3;3313:18;-1:-1:-1;;;;;3271:39:15;;;;:60;3347:26;;;-1:-1:-1;3060:320:15;2992:392;;;:::o;15491:3613::-;15550:7;15606:6;-1:-1:-1;;;;;15585:11:15;;;;:18;;15600:3;15585:18;;;:27;;;15638:11;;;;:18;;;;;;:27;;;15676:19;;15672:3428;;;15709:9;15722:6;15709:19;15705:104;;;-1:-1:-1;;;;;;15745:6:15;;;;;;;15741:45;;;15760:1;15753:8;;;;;;15741:45;-1:-1:-1;;;;;;15783:3:15;-1:-1:-1;15776:10:15;;-1:-1:-1;15776:10:15;15705:104;15808:1;15801:8;;;;;;15672:3428;15827:9;15840:6;15827:19;15823:3277;;;15855:1;15848:8;;;;;;15823:3277;-1:-1:-1;;;15888:11:15;;;;-1:-1:-1;;;;;15888:49:15;;;;;;;;-1:-1:-1;;;;;15966:44:15;16022:14;16018:91;;16050:1;16038:13;;16018:91;;;-1:-1:-1;;;16064:45:15;16018:91;-1:-1:-1;;;16131:11:15;;;;-1:-1:-1;;;;;16131:49:15;;;;;;;;-1:-1:-1;;;;;16209:44:15;16265:14;16261:91;;16293:1;16281:13;;16261:91;;;-1:-1:-1;;;16307:45:15;16261:91;16365:15;16361:2733;;-1:-1:-1;;;;;;16389:18:15;;-1:-1:-1;;;16389:18:15;:38;;16426:1;16389:38;;;591:34;16389:38;16382:45;;;;;;;;;;16361:2733;16444:15;16440:2654;;-1:-1:-1;;;;;;16468:18:15;;-1:-1:-1;;;16468:18:15;:38;;16505:1;16468:38;;16440:2654;16544:39;;;16600:14;;;;;;;16596:2490;;;16640:3;16632:5;:11;16628:255;;;16652:1;16645:8;;;;;;;;;;;16628:255;16682:1;16674:5;:9;16670:213;;;16685:30;;;;16670:213;;;-1:-1:-1;;16736:5:15;:12;16732:151;;;16757:1;16750:8;;;;;;;;;;;16732:151;16787:1;16779:5;:9;16775:108;;;16829:5;16828:6;;16804:31;;;;;16861:9;16849:21;;16775:108;16897:24;;;;-1:-1:-1;;;16940:45:15;;16936:122;;17016:1;17031:14;;;;17001:16;;;;;16936:122;17076:9;17089:6;17076:19;17072:435;;;17116:5;:45;;-1:-1:-1;;;;;17116:45:15;;;-1:-1:-1;;;;;;17116:45:15;17109:52;;;;;;;;;;;17072:435;-1:-1:-1;;;17196:10:15;:44;17192:126;;;17254:1;17242:13;;17192:126;;;-1:-1:-1;;;;;17274:44:15;;;;17192:126;17481:10;17458:3;17445:9;:16;;17378:5;:46;;17423:1;17378:46;;;-1:-1:-1;;;17378:46:15;-1:-1:-1;;;;;17377:85:15;;:114;17342:151;;17335:158;;;;;;;;;;;16596:2490;17547:1;17539:5;:9;17535:189;;;17579:1;17564:16;;;;;17607:1;17594:14;;;;17535:189;;;17639:1;17631:5;:9;17627:97;;;17671:1;17656:16;;;;;17710:1;17698:9;:13;17686:25;;17627:97;17748:3;17740:5;:11;17736:258;;;17766:1;17753:14;;17736:258;;;17796:1;17788:5;:9;17784:210;;;17848:1;17840:5;:9;17826:1;17813:10;:14;:37;;17854:1;17812:43;17799:56;;17784:210;;;-1:-1:-1;;17876:5:15;:12;17872:122;;;17903:1;17890:14;;17872:122;;;-1:-1:-1;;17925:5:15;:10;17921:73;;;17987:1;17979:5;17978:6;;:10;17964:1;17951:10;:14;:38;;17993:1;17950:44;17937:57;;17921:73;18025:10;18011;:24;18007:161;;18051:10;18037:24;;;;18007:161;;;18118:10;18105;:23;18092:36;;18150:5;18142:13;;18007:161;18184:15;18180:53;;-1:-1:-1;591:34:15;;-1:-1:-1;18213:20:15;;-1:-1:-1;;;;;;18213:20:15;18180:53;18246:11;18260:16;18265:10;18260:3;:16::i;:::-;18246:30;;18293:3;18300;18293:10;18289:515;;;18346:1;18332:10;:15;;-1:-1:-1;;;;;18332:48:15;18319:61;;18407:1;18394:14;;;;18289:515;;;18437:3;18431;:9;18427:377;;;18472:3;:9;;;18499:17;;;18495:247;;;18561:5;18547:10;:19;;-1:-1:-1;;;;;18547:52:15;18534:65;;18628:5;18615:18;;;;18495:247;;;18726:1;;-1:-1:-1;;18685:13:15;18670:28;;;;;18495:247;18427:377;;;;-1:-1:-1;;;;;18760:44:15;;;;18427:377;18821:9;18834:6;18821:19;18817:258;;;18861:5;:45;;-1:-1:-1;;;;;18861:45:15;;;-1:-1:-1;;;;;;18861:45:15;18854:52;;;;;;;;;;;;18817:258;19063:10;19042:3;19029:9;:16;;18964:5;:46;;19009:1;18964:46;;;-1:-1:-1;;;18964:46:15;-1:-1:-1;;;;;18963:83:15;;:110;18930:145;;18923:152;;;;;;;;;;15491:3613;;;;;:::o;1025:18:17:-;;;;;;;;;;;;;;;-1:-1:-1;;1025:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2577:149:3:-;2643:4;2659:39;2668:12;:10;:12::i;:::-;2682:7;2691:6;2659:8;:39::i;:::-;-1:-1:-1;2715:4:3;2577:149;;;;:::o;1077:28:17:-;;;;:::o;1636:89:3:-;1706:12;;1636:89;;:::o;10636:1383:17:-;10786:6;;10723:4;;10786:6;;:15;10778:24;;;;;;11120:1;11031:87;11048:40;11070:17;11080:6;11070:9;:17::i;:::-;11048:21;:40::i;:::-;11089:28;11111:5;11089:21;:28::i;:::-;11031:16;:87::i;:::-;:90;;;;11023:99;;;;;;-1:-1:-1;;;;;11207:25:17;;11227:4;11207:25;11204:807;;;11326:69;11333:28;11355:5;11333:21;:28::i;:::-;11363:6;-1:-1:-1;;;;;11389:4:17;11326:6;:69::i;:::-;11323:151;;;-1:-1:-1;11421:4:17;11414:11;;11323:151;-1:-1:-1;11469:5:17;11462:12;;11204:807;11504:7;;:25;;-1:-1:-1;;;;;11504:25:17;;-1:-1:-1;;;;;11504:7:17;;;;:15;;:25;;11520:8;;11504:25;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11504:25:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11504:25:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11504:25:17;;;;;;;;;-1:-1:-1;;;;;11504:36:17;:76;;;-1:-1:-1;11544:7:17;;:25;;-1:-1:-1;;;;;11544:25:17;;-1:-1:-1;;;;;11544:7:17;;;;:15;;:25;;11560:8;;11544:25;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11544:25:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11544:25:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11544:25:17;;;;;;;;;-1:-1:-1;;;;;11544:36:17;11504:76;11501:510;;;11595:34;11605:6;11613:8;11623:5;11595:9;:34::i;:::-;-1:-1:-1;11650:4:17;11643:11;;11501:510;11854:66;11861:28;11883:5;11861:21;:28::i;:::-;11891:6;-1:-1:-1;;;;;11911:8:17;11854:6;:66::i;11851:148::-;10636:1383;;;;;:::o;3575:347::-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3662:18:17;;;;;;:10;:18;;;;;;3659:256;;3699:20;;:::i;:::-;-1:-1:-1;3722:103:17;;;;;;;;;;;-1:-1:-1;;;;;3722:103:17;;;;;;;;;;3840:6;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3840:14:17;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3840:14:17;;;;;;;;;;;;3890:13;;3869:18;;;:10;:18;;;;;;:34;3659:256;3575:347;;:::o;3879:207:3:-;3959:4;3975:83;3984:12;:10;:12::i;:::-;3998:7;4007:50;4046:10;4007:11;:25;4019:12;:10;:12::i;:::-;-1:-1:-1;;;;;4007:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4007:25:3;;;:34;;;;;;;;;;;:50;:38;:50;:::i;:::-;3975:8;:83::i;18602:65:17:-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;18649:10:17;:8;:10::i;:::-;18602:65::o;2297:411::-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;2427:26:17;2446:6;2427:18;:26::i;:::-;2464:7;:30;;-1:-1:-1;;;;;;2464:30:17;2483:10;2464:30;;;2519:23;;;;2536:5;;2519:23;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2519:23:17;;;2505:4;:38;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2563:20:17;;-1:-1:-1;;;;;2563:20:17;;:15;;;;:20;;:5;;2579:1;;2581;;2563:20;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2563:20:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2563:20:17;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2563:20:17;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;2563::17;;;;;;;;;2554:29;;;;:6;;:29;;;;;;:::i;:::-;-1:-1:-1;2594:13:17;:25;;;2630:5;:20;;-1:-1:-1;;;;;;2630:20:17;-1:-1:-1;;;;;2630:20:17;;;;;;;;;;2661:6;:16;;-1:-1:-1;;;;;;2661:16:17;2630:20;2661:16;;;;;;;;;;;-1:-1:-1;;;;;;2688:12:17;;;1264:55:5;;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;1264:55;2297:411:17;;;;;;:::o;4768:1265::-;4867:6;;;;:15;4859:52;;;;-1:-1:-1;;;;;4859:52:17;;;;;;;;;-1:-1:-1;;;;;4954:18:17;;4922:10;4954:18;;;:10;:18;;;;;;:20;4951:50;;-1:-1:-1;4997:4:17;4951:50;5015:5;5012:1014;;;5048:44;5057:10;5077:4;5084:7;5048:8;:44::i;:::-;-1:-1:-1;;;;;5137:18:17;;5107:20;5137:18;;;:10;:18;;;;;;5130:6;:28;;:6;;-1:-1:-1;;5137:20:17;;5130:28;;;;;;;;;;;;;;;;:38;;;5107:61;;5192:6;-1:-1:-1;;;;;5186:26:17;;5213:10;5233:4;5240:7;5186:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5186:62:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5186:62:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5186:62:17;;;;;;;;;5183:317;;;-1:-1:-1;;;;;5334:18:17;;;;;;:10;:18;;;;;;;;:32;;;;;;;;:46;5317:96;;5334:46;;5382:30;5404:7;5382:21;:30::i;5317:96::-;-1:-1:-1;;;;;5268:18:17;;;;;;:10;:18;;;;;;;;:32;;;;;;;;;;:145;;-1:-1:-1;;;;;;5268:145:17;;;;;;;;;;;;;5437:47;;;;;;5268:32;;5476:7;;5437:47;;;;;;;;;;5183:317;5012:1014;;;;5557:10;5626:1;5546:22;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5546:31:17;;;;;;;:45;5529:95;;5546:45;;5593:30;5615:7;5593:21;:30::i;5529:95::-;:98;;;5526:500;;5719:10;5708:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5708:31:17;;;;;;;:45;5691:95;;5708:45;;5755:30;5777:7;5755:21;:30::i;:::-;5691:16;:95::i;:::-;5654:10;5643:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;5643:31:17;;;;;;;;;:143;;-1:-1:-1;;;;;;5643:143:17;;;;;;;;-1:-1:-1;;;;;5862:18:17;;;;:10;:18;;;;;:27;;;;;;;;:41;5845:91;;5862:41;5905:30;5927:7;5905:21;:30::i;5845:91::-;-1:-1:-1;;;;;5801:18:17;;;;;;:10;:18;;;;;;;;-1:-1:-1;;;;;5801:27:17;;;;;;;;;:135;;-1:-1:-1;;;;;;5801:135:17;;;;;;;;;;;;;5956:42;;;;;;5990:7;;5956:42;;;;;;;;;;5526:500;4768:1265;;;;:::o;4104:182::-;-1:-1:-1;;;;;4191:18:17;;4172:4;4191:18;;;:10;:18;;;;;;:20;4188:90;;-1:-1:-1;4233:4:17;4226:11;;4188:90;-1:-1:-1;4273:5:17;4266:12;;2716:89;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;2781:6:17;:16;;-1:-1:-1;;;;;2781:16:17;;;;;-1:-1:-1;;;;;;2781:16:17;;;;;;;;;2716:89::o;1783:108:3:-;-1:-1:-1;;;;;1866:18:3;1840:7;1866:18;;;:9;:18;;;;;;;1783:108::o;1746:137:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;1828:6;;1807:40;;1844:1;;-1:-1:-1;;;;;1828:6:2;;1807:40;;1844:1;;1807:40;1857:6;:19;;-1:-1:-1;;;;;;1857:19:2;;;1746:137::o;6968:906:17:-;7175:19;7218:14;7207:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7207:36:17;;;7197:47;;;;;;7175:69;;7255:19;7340:11;7287:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7287:65:17;;;7277:76;;;;;;7255:98;;7409:6;;;;;;;;;-1:-1:-1;;;;;7409:6:17;-1:-1:-1;;;;;7372:43:17;:34;7382:11;7395:2;7399;7403;7372:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7372:34:17;;;;;;;;-1:-1:-1;;;;;7372:43:17;;7364:52;;;;;;-1:-1:-1;;;;;7464:22:17;;7547:1;7464:22;;;:10;:22;;;;;;;;:32;;;;;;;;:46;7430:115;;7447:95;;7464:46;;7512:29;7534:6;7512:21;:29::i;7447:95::-;7543:1;7430:16;:115::i;:::-;:118;;;7427:440;;-1:-1:-1;;;;;7585:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:46;7568:95;;7585:46;;7633:29;7655:6;7633:21;:29::i;7568:95::-;-1:-1:-1;;;;;;7695:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:46;7678:95;;7695:46;;7743:29;7765:6;7743:21;:29::i;7678:95::-;;7814:10;-1:-1:-1;;;;;7793:62:17;;7826:10;7838:8;7848:6;7793:62;;;;;;;;;;;;;;;;;7427:440;6968:906;;;;;;;;;;:::o;18535:61::-;1163:9:2;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;18580:8:17;:6;:8::i;959:77:2:-;1023:6;;-1:-1:-1;;;;;1023:6:2;959:77;:::o;1310:92::-;1389:6;;1350:4;;-1:-1:-1;;;;;1389:6:2;1373:12;:10;:12::i;:::-;-1:-1:-1;;;;;1373:22:2;;1366:29;;1310:92;:::o;1050:20:17:-;;;;;;;;;;;;;;;-1:-1:-1;;1050:20:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9258:1238;9470:19;9513:14;9502:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9502:36:17;;;9492:47;;;;;;9470:69;;9550:19;9635:11;9582:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;9582:65:17;;;9572:76;;;;;;9550:98;;9704:6;;;;;;;;;-1:-1:-1;;;;;9704:6:17;-1:-1:-1;;;;;9667:43:17;:34;9677:11;9690:2;9694;9698;9667:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9667:34:17;;;;;;;;-1:-1:-1;;;;;9667:43:17;;9659:52;;;;;;-1:-1:-1;;;;;9788:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:46;9771:98;;9788:46;;9836:32;9858:9;9836:21;:32::i;9771:98::-;-1:-1:-1;;;;;9722:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:147;;-1:-1:-1;;;;;;9722:147:17;;;;;;;;9946:22;;;:10;:22;;;;;:32;;;;;;:46;9929:98;;9946:46;9994:32;10016:9;9994:21;:32::i;9929:98::-;-1:-1:-1;;;;;9880:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:147;;-1:-1:-1;;;;;;9880:147:17;;;;;;;;;;;;10038:28;10052:4;10059:6;10038:5;:28::i;:::-;10077:44;10095:4;10102:10;10114:6;10077:9;:44::i;:::-;-1:-1:-1;;;;;10197:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:45;10180:94;;-1:-1:-1;;;10197:45:17;;;;10244:29;10266:6;10244:21;:29::i;10180:94::-;-1:-1:-1;;;;;10132:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;:142;;-1:-1:-1;;;;;10132:142:17;-1:-1:-1;;;10132:142:17;;;;;;;;;;;;;10350:22;;;:10;:22;;;;;:32;;;;;;;;:45;10333:94;;10350:45;;;;;10397:29;10419:6;10397:21;:29::i;10333:94::-;-1:-1:-1;;;;;10285:22:17;;;;;;:10;:22;;;;;;;;:32;;;;;;;;;;:142;;;;;;;-1:-1:-1;;;10285:142:17;-1:-1:-1;;;;;10285:142:17;;;;;;;;;;10466:13;;10443:45;;10285:22;;10443:45;;;;10466:13;10481:6;;10443:45;;4573:258:3;4658:4;4674:129;4683:12;:10;:12::i;:::-;4697:7;4706:96;4745:15;4706:96;;;;;;;;;;;;;;;;;:11;:25;4718:12;:10;:12::i;:::-;-1:-1:-1;;;;;4706:25:3;;;;;;;;;;;;;;;;;-1:-1:-1;4706:25:3;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2094:155::-;2163:4;2179:42;2189:12;:10;:12::i;:::-;2203:9;2214:6;2179:9;:42::i;762:79:27:-;827:6;;;;762:79;:::o;741:142:2:-;1024:12:5;;;;;;;;:31;;;1040:15;:13;:15::i;:::-;1024:47;;;-1:-1:-1;1060:11:5;;;;1059:12;1024:47;1016:106;;;;-1:-1:-1;;;;;1016:106:5;;;;;;;;;1129:19;1152:12;;;;;;1151:13;1170:80;;;;1198:12;:19;;-1:-1:-1;;;;1198:19:5;;;;;1225:18;1213:4;1225:18;;;1170:80;806:6:2;:15;;-1:-1:-1;;;;;;806:15:2;-1:-1:-1;;;;;806:15:2;;;;;;;;;;;836:40;;869:6;;;-1:-1:-1;;836:40:2;;-1:-1:-1;;836:40:2;1268:14:5;1264:55;;;1307:5;1292:20;;-1:-1:-1;;1292:20:5;;;741:142:2;;:::o;4355:105:17:-;4407:20;4446:6;4439:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4439:13:17;;;;;;;;;;;;;;;;;;;;;;4355:105;:::o;2307:132:3:-;-1:-1:-1;;;;;2405:18:3;;;2379:7;2405:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2307:132::o;7925:1270:17:-;8126:19;8169:14;8158:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8158:36:17;;;8148:47;;;;;;8126:69;;8206:19;8291:11;8238:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8238:65:17;;;8228:76;;;;;;8206:98;;8360:6;;;;;;;;;-1:-1:-1;;;;;8360:6:17;-1:-1:-1;;;;;8323:43:17;:34;8333:11;8346:2;8350;8354;8323:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8323:34:17;;;;;;;;-1:-1:-1;;;;;8323:43:17;;8315:52;;;;;;8424:30;8446:7;8424:21;:30::i;:::-;-1:-1:-1;;;;;8378:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:76;;;;;;;-1:-1:-1;;;8378:76:17;-1:-1:-1;;;;;8378:76:17;;;;;;;;;-1:-1:-1;;;;;8476:17:17;;8473:657;;;8513:43;;-1:-1:-1;;;;;8513:35:17;;;:43;;;;;8549:6;;8513:43;;;;8549:6;8513:35;:43;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;;;8635:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:44;8618:93;;8635:44;;8681:29;8703:6;8681:21;:29::i;8618:93::-;-1:-1:-1;;;;;8571:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:140;;-1:-1:-1;;;;;;8571:140:17;;;;;;;;;;;;8473:657;;;8756:9;8752:367;8771:6;:13;8769:15;;8752:367;;;8833:8;8812:6;8819:1;8812:9;;;;;;;;;;;;;;;;;;:19;;;:29;8809:295;;;8871:6;8878:1;8871:9;;;;;;;;;;;;;;;;:22;:9;;;;;:22;;8865:56;;-1:-1:-1;;;;;8865:56:17;;-1:-1:-1;;;;;8871:22:17;;;;8865:38;;:56;;8904:8;;8914:6;;8865:56;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8865:56:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8865:56:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;8865:56:17;;;;;;;;;-1:-1:-1;;;;;;9008:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:44;8991:93;;9008:44;;9054:29;9076:6;9054:21;:29::i;8991:93::-;-1:-1:-1;;;;;8944:20:17;;;;;;:10;:20;;;;;;;;:30;;;;;;;;:140;;-1:-1:-1;;;;;;8944:140:17;;;;;;;;;;;;8809:295;8786:3;;8752:367;;;;8473:657;9160:8;-1:-1:-1;;;;;9147:40:17;;9170:8;9180:6;9147:40;;;;;;;;6108:745;6292:19;6335:14;6324:36;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6324:36:17;;;6314:47;;;;;;6292:69;;6372:19;6457:11;6404:65;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6404:65:17;;;6394:76;;;;;;6372:98;;6526:6;;;;;;;;;-1:-1:-1;;;;;6526:6:17;-1:-1:-1;;;;;6489:43:17;:34;6499:11;6512:2;6516;6520;6489:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6489:34:17;;;;;;;;-1:-1:-1;;;;;6489:43:17;;6481:52;;;;;;6555:7;;:38;;-1:-1:-1;;;;;6555:38:17;;6603:4;;-1:-1:-1;;;;;6555:7:17;;:17;;:38;;6584:8;;6555:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6555:38:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6555:38:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;6555:38:17;;;;;;;;;-1:-1:-1;;;;;6555:53:17;;6552:294;;;-1:-1:-1;;;;;6629:117:17;;6703:17;;;;:10;:17;;;;;;;;:27;;;;;;;;:40;6629:117;;6651:8;;6661:84;;6674:7;;6683:61;;-1:-1:-1;;;6703:40:17;;;;6683:19;:61::i;:::-;6661:12;:84::i;:::-;6629:117;;;;;;;;;;;;;;;;6804:30;6826:7;6804:21;:30::i;:::-;-1:-1:-1;;;;;6761:17:17;;;;;;:10;:17;;;;;;;;:27;;;;;;;;:73;;;;;;;-1:-1:-1;;;6761:73:17;-1:-1:-1;;;;;6761:73:17;;;;;;;;;6552:294;6108:745;;;;;;;;;:::o;2032:107:2:-;1163:9;:7;:9::i;:::-;1155:54;;;;-1:-1:-1;;;;;1155:54:2;;;;;;;;;2104:28;2123:8;2104:18;:28::i;:::-;2032:107;:::o;49968:570:15:-;50015:7;50043:1;50039;:5;50030:15;;;;;;50052:14;-1:-1:-1;;;50081:40:15;;50077:75;;50131:3;50125:9;;;;50136:13;50077:75;50166:19;50161:1;:24;50157:57;;50195:2;50189:8;;;;50199:12;50157:57;50228:11;50223:1;:16;50219:49;;50249:2;50243:8;;;;50253:12;50219:49;50282:7;50277:1;:12;50273:45;;50299:2;50293:8;;;;50303:12;50273:45;50332:5;50327:1;:10;50323:41;;50347:1;50341:7;;;;50350:11;50323:41;50378:4;50373:1;:9;50369:40;;50392:1;50386:7;;;;50395:11;50369:40;50423:3;50418:1;:8;50414:39;;50436:1;50430:7;;;;50439:11;50414:39;50467:3;50462:1;:8;50458:25;;50482:1;50472:11;50527:6;49968:570;-1:-1:-1;;49968:570:15:o;867:96:0:-;946:10;867:96;:::o;7427:332:3:-;-1:-1:-1;;;;;7520:19:3;;7512:68;;;;-1:-1:-1;;;;;7512:68:3;;;;;;;;;-1:-1:-1;;;;;7598:21:3;;7590:68;;;;-1:-1:-1;;;;;7590:68:3;;;;;;;;;-1:-1:-1;;;;;7669:18:3;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;7720:32;;;;;7699:6;;7720:32;;;;;;;;;;7427:332;;;:::o;13643:906:15:-;13702:4;-1:-1:-1;;;;;13734:11:15;;;;:48;-1:-1:-1;;;;;13798:47:15;;;13789:57;;;;;;-1:-1:-1;;;;;13884:11:15;;;;:48;-1:-1:-1;;;;;13948:47:15;;;13939:57;;;;;;-1:-1:-1;;;;;;14062:6:15;;;;;;;;;:56;;;-1:-1:-1;;;;;14072:9:15;-1:-1:-1;;;;;14072:46:15;;14062:56;14053:66;;;;;;-1:-1:-1;;;;;;14130:6:15;;;;;;;14126:419;;;14145:1;14138:8;;;;;;14126:419;14165:14;-1:-1:-1;;;14191:1:15;14182:11;;-1:-1:-1;;;;;14182:49:15;;;14165:66;;14239:14;-1:-1:-1;;;14265:1:15;14256:11;;-1:-1:-1;;;;;14256:49:15;;;14239:66;;14318:9;14314:225;;;14343:9;14339:83;;;14373:9;-1:-1:-1;;;;;14361:21:15;:9;-1:-1:-1;;;;;14361:21:15;;:37;;14396:1;14361:37;;;-1:-1:-1;;14361:37:15;14354:44;;;;;;;;14314:225;14452:9;14448:82;;;14470:1;14463:8;;;;;;;;14448:82;14505:9;-1:-1:-1;;;;;14493:21:15;:9;-1:-1:-1;;;;;14493:21:15;;:37;;-1:-1:-1;;14493:37:15;;;14523:1;14486:44;;;;;;;;12241:5486:17;12341:4;;;12395:5302;12411:6;:13;12409:15;;:48;;;;;12456:1;12428:27;12448:6;12428:19;:27::i;:::-;:29;12409:48;12395:5302;;;-1:-1:-1;;;;;12625:17:17;;12687:1;12625:17;;;:10;:17;;;;;12643:6;:9;;12608:77;;12625:17;12687:1;;12650;;12643:9;;;;;;;;;;;;;;;;;;;;;:19;12625:38;;;;;;;;;;;;:51;-1:-1:-1;;;12625:51:17;;;;12678:6;12608:16;:77::i;:::-;:80;;;12605:5081;;12708:13;12724:148;12741:77;12758:6;12766:10;:17;12777:5;-1:-1:-1;;;;;12766:17:17;-1:-1:-1;;;;;12766:17:17;;;;;;;;;;;;:38;12784:6;12791:1;12784:9;;;;;;;;;;;;;;;;;;;;;;;:19;12766:38;;;;;;;;;;;;:51;-1:-1:-1;;;12766:51:17;;;;12741:16;:77::i;:::-;-1:-1:-1;;;;;12819:17:17;;;;;;:10;:17;;;;;12837:6;:9;;12819:17;;;12844:1;;12837:9;;;;;;;;;;;;;;;;;;;;;:19;12819:38;;;;;;;;;;;;:52;;;12724:16;:148::i;:::-;12708:164;;12946:77;12963:10;:17;12974:5;-1:-1:-1;;;;;12963:17:17;-1:-1:-1;;;;;12963:17:17;;;;;;;;;;;;:38;12981:6;12988:1;12981:9;;;;;;;;;;;;;;;;;;;;;;;:19;12963:38;;;;;;;;;;;;:52;;;13017:5;12946:16;:77::i;:::-;-1:-1:-1;;;;;12891:17:17;;;;;;:10;:17;;;;;12909:6;:9;;12891:17;;;12916:1;;12909:9;;;;;;;;;;;;;;;;:19;;;12891:38;;;;;;;;;;;:52;;;:132;;;;;-1:-1:-1;;;;;12891:132:17;;;;;;;;;;;;13096:77;13113:10;:17;13124:5;-1:-1:-1;;;;;13113:17:17;-1:-1:-1;;;;;13113:17:17;;;;;;;;;;;;:38;13131:6;13138:1;13131:9;;;;;;;;;;;;;;;;;;;;;;;:19;13113:38;;;;;;;;;;;;:51;-1:-1:-1;;;13113:51:17;;;;13166:6;13096:16;:77::i;:::-;-1:-1:-1;;;;;13042:17:17;;;;;;:10;:17;;;;;13060:6;:9;;13042:17;;;13067:1;;13060:9;;;;;;;;;;;;;;;;;;;;;:19;13042:38;;;;;;;;;;;;:131;;;;;;;-1:-1:-1;;;13042:131:17;-1:-1:-1;;;;;13042:131:17;;;;;;;;;13201:4;;;-1:-1:-1;;;13201:4:17;;;;13200:5;13192:14;;;;;;13225:4;:11;;-1:-1:-1;;;;;;13225:11:17;-1:-1:-1;;;13225:11:17;;;-1:-1:-1;;;;;13258:19:17;;13255:1629;;;13344:41;13350:5;13357:27;13377:6;13357:19;:27::i;:::-;13344:5;:41::i;:::-;13463:6;13470:1;13463:9;;;;;;;;;;;;;;;;;;:19;;;-1:-1:-1;;;;;13463:28:17;13460:293;;;13535:5;-1:-1:-1;;;;;13519:32:17;:60;13552:26;13572:5;13552:19;:26::i;:::-;13519:60;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13519:60:17;13460:293;;;13662:6;13669:1;13662:9;;;;;;;;;;;;;;;;:22;:9;;;;;:22;;-1:-1:-1;;;;;13662:22:17;13656:38;13695:5;13702:26;13722:5;13702:19;:26::i;:::-;13656:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13656:73:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13656:73:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13656:73:17;;;;;;;;;;13460:293;13831:5;-1:-1:-1;;;;;13818:68:17;;13838:6;13845:1;13838:9;;;;;;;;;;;;;;;;;;:19;;;13859:26;13879:5;13859:19;:26::i;:::-;13818:68;;;;;;;;;;;;;;;;13255:1629;;;13932:9;-1:-1:-1;;;;;13932:21:17;13929:955;;;14106:50;14121:6;14129:5;14136:6;14143:1;14136:9;;;;;;;;;;;;;;;;;;:19;;;14106:14;:50::i;:::-;14088:68;;-1:-1:-1;14088:68:17;-1:-1:-1;14220:41:17;14226:5;14233:27;14088:68;14233:19;:27::i;14220:41::-;14284:44;14290:8;14300:27;14320:6;14300:19;:27::i;:::-;14284:5;:44::i;:::-;-1:-1:-1;;;;;14467:20:17;;;;;;:10;:20;;;;;14488:6;:9;;14450:80;;14467:20;14488:6;14495:1;;14488:9;;;;;;;;;;;;;;;;;;;;;:19;14467:41;;;;;;;;;;;;:55;;;14524:5;14450:16;:80::i;:::-;-1:-1:-1;;;;;14392:20:17;;;;;;:10;:20;;;;;14413:6;:9;;14392:20;;;14420:1;;14413:9;;;;;;;;;;;;;;;;:19;;;14392:41;;;;;;;;;;;:55;;;:138;;;;;-1:-1:-1;;;;;14392:138:17;;;;;;;;;;;;14657:80;14674:10;:20;14685:8;-1:-1:-1;;;;;14674:20:17;-1:-1:-1;;;;;14674:20:17;;;;;;;;;;;;:41;14695:6;14702:1;14695:9;;;;;;;;;;;;;;;;;;;;;;;:19;14674:41;;;;;;;;;;;;:54;-1:-1:-1;;;14674:54:17;;;;14730:6;14657:16;:80::i;:::-;-1:-1:-1;;;;;14600:20:17;;;;;;:10;:20;;;;;14621:6;:9;;14600:20;;;14628:1;;14621:9;;;;;;;;;;;;;;;;:19;;;14600:41;;;;;;;;;;;:54;;;:137;;;;;-1:-1:-1;;;;;14600:137:17;;;;;;;;;;;;14798:5;-1:-1:-1;;;;;14785:79:17;;14805:8;14815:6;14822:1;14815:9;;;;;;;;;;;;;;;;;;:19;;;14836:27;14856:6;14836:19;:27::i;:::-;14785:79;;;;;;;;;;;;;;;;;13929:955;-1:-1:-1;14962:4:17;:12;;-1:-1:-1;;;;;;14962:12:17;;;14911:1;;-1:-1:-1;14939:4:17;;-1:-1:-1;12605:5081:17;;;-1:-1:-1;;;;;15140:17:17;;15196:1;15140:17;;;:10;:17;;;;;15158:6;:9;;15123:72;;15140:17;15196:1;;15165;;15158:9;;;;;;;;;;;;;;;;;;;;;:19;15140:38;;;;;;;;;;;;:51;-1:-1:-1;;;15140:51:17;;;;;15123:16;:72::i;:::-;:74;;;15120:2566;;;15226:4;;-1:-1:-1;;;15226:4:17;;;;15225:5;15217:14;;;;;;15250:4;:11;;-1:-1:-1;;;;;;15250:11:17;-1:-1:-1;;;15250:11:17;;;-1:-1:-1;;;;;15283:19:17;;15280:2018;;;15369:86;15375:5;15382:72;15402:10;:17;15413:5;-1:-1:-1;;;;;15402:17:17;-1:-1:-1;;;;;15402:17:17;;;;;;;;;;;;:38;15420:6;15427:1;15420:9;;;;;;;;;;;;;;;;;;;;;;;:19;15402:38;;;;;;;;;;;;:51;-1:-1:-1;;;15402:51:17;;;;15382:19;:72::i;15369:86::-;-1:-1:-1;;;;;15590:17:17;;15574:13;15590:17;;;:10;:17;;;;;15608:6;:9;;15574:13;;15608:6;15615:1;;15608:9;;;;;;;;;;;;;;;;:19;;;15590:38;;;;;;;;;;;:52;;;;;;;;;;;;15574:68;;15780:6;15787:1;15780:9;;;;;;;;;;;;;;;;;;:19;;;-1:-1:-1;;;;;15780:28:17;15777:297;;;15856:5;-1:-1:-1;;;;;15840:32:17;:60;15873:26;15893:5;15873:19;:26::i;:::-;15840:60;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15840:60:17;15777:297;;;15983:6;15990:1;15983:9;;;;;;;;;;;;;;;;:22;:9;;;;;:22;;-1:-1:-1;;;;;15983:22:17;15977:38;16016:5;16023:26;16043:5;16023:19;:26::i;:::-;15977:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15977:73:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15977:73:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;15977:73:17;;;;;;;;;;15777:297;16172:5;-1:-1:-1;;;;;16159:68:17;;16179:6;16186:1;16179:9;;;;;;;;;;;;;;;;;;:19;;;16200:26;16220:5;16200:19;:26::i;:::-;16159:68;;;;;;;;;;;;;;;;15280:2018;;;;16273:9;-1:-1:-1;;;;;16273:21:17;16270:1028;;;16430:11;16443:13;16460:142;16475:10;:17;16486:5;-1:-1:-1;;;;;16475:17:17;-1:-1:-1;;;;;16475:17:17;;;;;;;;;;;;:38;16493:6;16500:1;16493:9;;;;;;;;;;;;;;;;;;:19;;;16475:38;;;;;;;;;;;:51;;;;;;;;;;;;16528:10;:17;16539:5;-1:-1:-1;;;;;16528:17:17;-1:-1:-1;;;;;16528:17:17;;;;;;;;;;;;:38;16546:6;16553:1;16546:9;;;;;;;;;;;;;;;;;;:19;;;16528:38;;;;;;;;;;;:52;;;;;;;;;;;;16582:6;16589:1;16582:9;;;;;;;16460:142;16429:173;;;;16666:38;16672:5;16679:24;16699:3;16679:19;:24::i;16666:38::-;16727:41;16733:8;16743:24;16763:3;16743:19;:24::i;16727:41::-;-1:-1:-1;;;;;16907:20:17;;;;;;:10;:20;;;;;16928:6;:9;;16890:80;;16907:20;16928:6;16935:1;;16928:9;;;;;16890:80;-1:-1:-1;;;;;16832:20:17;;;;;;:10;:20;;;;;16853:6;:9;;16832:20;;;16860:1;;16853:9;;;;;;;;;;;;;;;;:19;;;16832:41;;;;;;;;;;;:55;;;:138;;;;;-1:-1:-1;;;;;16832:138:17;;;;;;;;;;;;17097:77;17114:10;:20;17125:8;-1:-1:-1;;;;;17114:20:17;-1:-1:-1;;;;;17114:20:17;;;;;;;;;;;;:41;17135:6;17142:1;17135:9;;;;;;;;;;;;;;;;;;;;;;;:19;17114:41;;;;;;;;;;;;:54;-1:-1:-1;;;17114:54:17;;;;17170:3;17097:16;:77::i;:::-;-1:-1:-1;;;;;17040:20:17;;;;;;:10;:20;;;;;17061:6;:9;;17040:20;;;17068:1;;17061:9;;;;;;;;;;;;;;;;:19;;;17040:41;;;;;;;;;;;:54;;;:134;;;;;-1:-1:-1;;;;;17040:134:17;;;;;;;;;;;;17215:5;-1:-1:-1;;;;;17202:76:17;;17222:8;17232:6;17239:1;17232:9;;;;;;;;;;;;;;;;;;:19;;;17253:24;17273:3;17253:19;:24::i;:::-;17202:76;;;;;;;;;;;;;;;;;16270:1028;;;17393:77;17410:6;17418:10;:17;17429:5;-1:-1:-1;;;;;17418:17:17;-1:-1:-1;;;;;17418:17:17;;;;;;;;;;;;:38;17436:6;17443:1;17436:9;;;;;;;;;;;;;;;;;;;;;;;:19;17418:38;;;;;;;;;;;;:51;-1:-1:-1;;;17418:51:17;;;;17393:16;:77::i;:::-;-1:-1:-1;;;;;17570:17:17;;;;;;:10;:17;;;;;17588:6;:9;;17384:86;;-1:-1:-1;17570:17:17;;17595:1;;17588:9;;;;;;;;;;;;;;;;;;;;;:19;17570:38;;;;;;;;;;;;17563:45;17658:4;:12;;-1:-1:-1;;;;;;17658:12:17;;;17563:45;;-1:-1:-1;15120:2566:17;12459:3;;12395:5302;;;-1:-1:-1;17714:5:17;-1:-1:-1;12241:5486:17;;;;;;;:::o;5305:464:3:-;-1:-1:-1;;;;;5402:20:3;;5394:70;;;;-1:-1:-1;;;;;5394:70:3;;;;;;;;;-1:-1:-1;;;;;5482:23:3;;5474:71;;;;-1:-1:-1;;;;;5474:71:3;;;;;;;;;5576;5598:6;5576:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5576:17:3;;;;;;:9;:17;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5556:17:3;;;;;;;:9;:17;;;;;;:91;;;;5680:20;;;;;;;:32;;5705:6;5680:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5657:20:3;;;;;;;:9;:20;;;;;;;:55;;;;5727:35;;;;;;;;;;5755:6;;5727:35;;834:176:1;892:7;923:5;;;946:6;;;;938:46;;;;-1:-1:-1;;;;;938:46:1;;;;;;;;491:88:27;531:6;:14;;-1:-1:-1;;531:14:27;;;561:10;;;;540:5;;561:10;491:88::o;1409:498:5:-;1820:4;1864:17;1895:7;1409:498;:::o;19578:133:15:-;19637:7;19659:47;19664:1;-1:-1:-1;;;19667:38:15;;19659:3;:47::i;298:83:27:-;336:6;:13;;-1:-1:-1;;336:13:27;345:4;336:13;;;365:8;;;;336:6;;365:8;298:83::o;6039:302:3:-;-1:-1:-1;;;;;6114:21:3;;6106:65;;;;-1:-1:-1;;;;;6106:65:3;;;;;;;;;6197:12;;:24;;6214:6;6197:24;:16;:24;:::i;:::-;6182:12;:39;-1:-1:-1;;;;;6252:18:3;;;;;;:9;:18;;;;;;:30;;6275:6;6252:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6231:18:3;;;;;;:9;:18;;;;;;:51;;;;6297:37;;6231:18;;;6297:37;;;;6327:6;;6297:37;;;;;;;;;;6039:302;;:::o;1732:187:1:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:1;;;;;;;;;;-1:-1:-1;;;1888:5:1;;;1732:187::o;3781:543:15:-;3832:7;3887:6;-1:-1:-1;;;;;3866:11:15;;;;:18;3881:3;3866:18;:27;3915:5;3904:16;;3900:30;;;3929:1;3922:8;;;;;3900:30;-1:-1:-1;;;3968:1:15;3959:11;;-1:-1:-1;;;;;3959:48:15;;3950:58;;;;;;4048:5;4036:8;:17;;4027:27;;;;;;-1:-1:-1;;;;;;;;4098:11:15;;;;4089:54;:94;4205:5;4194:16;;4190:109;;;4223:5;:16;;;4212:27;4190:109;;;4265:5;4254:8;:16;4250:49;;;-1:-1:-1;;4283:16:15;;4272:27;4313:6;3781:543;-1:-1:-1;;;3781:543:15:o;1274:134:1:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;2240:225:2:-;-1:-1:-1;;;;;2313:22:2;;2305:73;;;;-1:-1:-1;;;;;2305:73:2;;;;;;;;;2414:6;;2393:38;;-1:-1:-1;;;;;2393:38:2;;;;2414:6;;2393:38;;2414:6;;2393:38;2441:6;:17;;-1:-1:-1;;;;;;2441:17:2;-1:-1:-1;;;;;2441:17:2;;;;;;;;;;2240:225::o;23988:2628:15:-;24047:7;24103:6;-1:-1:-1;;;;;24082:11:15;;;;:18;;24097:3;24082:18;;;:27;;;24135:11;;;;:18;;;;;;:27;;;24173:19;;24169:2443;;;24206:9;24219:6;24206:19;24202:97;;;-1:-1:-1;;;;;;24234:3:15;-1:-1:-1;24227:10:15;;-1:-1:-1;24227:10:15;24202:97;-1:-1:-1;;;;;;24261:38:15;;24257:42;;24250:49;;24169:2443;24316:9;24329:6;24316:19;24312:2300;;;-1:-1:-1;;;;;;;24349:38:15;;:43;24345:139;;-1:-1:-1;;;;;;24401:3:15;-1:-1:-1;24394:10:15;;-1:-1:-1;24394:10:15;24345:139;-1:-1:-1;;;24441:5:15;;;-1:-1:-1;;;24440:44:15;24417:67;;24312:2300;-1:-1:-1;;;;;;;24501:38:15;;24497:2115;;-1:-1:-1;;;;;;;24558:38:15;;24554:143;;-1:-1:-1;;;;;;24610:3:15;-1:-1:-1;24603:10:15;;-1:-1:-1;24603:10:15;24554:143;-1:-1:-1;;;24654:5:15;;;-1:-1:-1;;;24653:44:15;-1:-1:-1;;;;;24633:64:15;24626:71;;24497:2115;-1:-1:-1;;;;;24739:11:15;;;;:44;24795:14;24791:91;;24823:1;24811:13;;24791:91;;;-1:-1:-1;;;24837:45:15;24791:91;-1:-1:-1;;;;;24912:11:15;;;;:44;24968:14;24964:309;;24998:15;;24994:174;;25027:10;25046:16;25051:10;25046:3;:16::i;:::-;25120:1;;-1:-1:-1;25040:3:15;:22;25133:24;;;-1:-1:-1;;25133:24:15;;25075:20;;;;;-1:-1:-1;24994:174:15;24964:309;;;-1:-1:-1;;;25212:44:15;25261:3;25211:53;24964:309;25307:10;25294;:23;;;;;;;-1:-1:-1;25329:15:15;25325:128;;-1:-1:-1;;;25362:5:15;;;25361:44;:92;;591:34;25361:92;;;-1:-1:-1;;;25354:99:15;;;;;;;;25325:128;-1:-1:-1;;;25470:10:15;:44;;25462:53;;;;25524:11;-1:-1:-1;;;25546:10:15;:45;;:194;;-1:-1:-1;;;25621:10:15;:45;;:119;;-1:-1:-1;;;25683:10:15;:45;;:57;;25737:3;25683:57;;;25731:3;25683:57;25621:119;;;25669:3;25621:119;25546:194;;;;;25594:16;25599:10;25594:3;:16::i;:::-;25524:216;;25771:9;25783:5;25771:17;25765:3;25753:9;:15;:35;25749:725;;;25824:6;25812:18;;25853:1;25840:14;;25749:725;;;25900:9;25885:3;25873:9;:15;25891:5;25873:23;:36;25869:605;;;25946:1;25934:13;;25970:1;25957:14;;25869:605;;;26017:9;26002:3;25990:9;:15;26008:5;25990:23;:36;25986:488;;;26075:9;26055;26067:5;26055:17;:29;26051:193;;;26131:9;26111;26123:5;26111:17;:29;26096:44;;;;;26051:193;;;26179:9;26159;26171:5;26159:17;:29;26155:89;;;26239:5;26227:9;26215;:21;:29;26200:44;;;;;26155:89;26267:1;26255:13;;25986:488;;;26313:3;26307;:9;26303:49;;;26349:3;26343;:9;26328:24;;;;;26303:49;-1:-1:-1;;;;;26363:44:15;;;;26456:9;26442:3;26430:9;:15;26448:5;26430:23;:35;26418:47;;25986:488;26593:10;26587:3;26574:9;:16;;26521:1;26517;:5;-1:-1:-1;;;26516:44:15;;;26507:54;;-1:-1:-1;;;;;26507:83:15;;:96;26489:116;;26482:123;;;;;;;;;20389:2342;20448:7;20504:6;-1:-1:-1;;;;;20483:11:15;;;;:18;;20498:3;20483:18;;;:27;;;20536:11;;;;:18;;;;;;:27;;;20574:19;;20570:2157;;;20607:9;20620:6;20607:19;20603:354;;;-1:-1:-1;;;;;;20642:6:15;;;;;;;20638:162;;;-1:-1:-1;;;;;;20661:38:15;;20657:42;;20650:49;;20638:162;-1:-1:-1;;;;;;;;;20718:5:15;;;:43;;20714:86;;;-1:-1:-1;;;20770:5:15;;;20763:12;;20603:354;-1:-1:-1;;;;;;;20829:38:15;;20825:123;;-1:-1:-1;;;;;;20881:3:15;-1:-1:-1;20874:10:15;;-1:-1:-1;20874:10:15;20570:2157;20973:9;20986:6;20973:19;20969:1758;;;-1:-1:-1;;;;;;;21008:38:15;;21004:123;;-1:-1:-1;;;;;;21060:3:15;-1:-1:-1;21053:10:15;;-1:-1:-1;21053:10:15;21004:123;-1:-1:-1;;;;;;21089:38:15;;21085:42;;21078:49;;20969:1758;-1:-1:-1;;;;;21169:11:15;;;;:44;21225:14;21221:91;;21253:1;21241:13;;21221:91;;;-1:-1:-1;;;21267:45:15;21221:91;-1:-1:-1;;;;;21342:11:15;;;;:44;21398:14;21394:91;;21426:1;21414:13;;21394:91;;;-1:-1:-1;;;21440:45:15;21394:91;21494:24;;;;21530:15;21526:128;;-1:-1:-1;;;21563:5:15;;;21562:44;:92;;591:34;21562:92;;21526:128;21663:22;;;;21694:11;-1:-1:-1;;;21716:73:15;;;:196;;-1:-1:-1;;;21806:10:15;:73;;:106;;21896:16;21901:10;21896:3;:16::i;:::-;21806:106;;;21882:3;21806:106;21716:196;;;21792:3;21716:196;21694:218;;21943:5;21937:3;21925:9;:15;:23;21921:668;;;21985:1;21973:13;;22009:1;21996:14;;21921:668;;;22047:5;22041:3;22029:9;:15;:23;22025:564;;;22093:5;22081:9;:17;22077:145;;;22133:9;22125:5;:17;22110:32;;;;;22077:145;;;22173:5;22161:9;:17;22157:65;;;22217:5;22205:9;:17;22190:32;;;;;22157:65;22244:1;22232:13;;22025:564;;;22282:5;22276:3;22264:9;:15;:23;22260:329;;;22311:6;22299:18;;22340:1;22327:14;;22260:329;;;22376:3;22370;:9;22366:113;;;22412:3;22406;:9;22391:24;;;;;22366:113;;;22440:3;22434;:9;22430:49;;;22476:3;22470;:9;22455:24;;;;;22430:49;-1:-1:-1;;;;;22490:44:15;;;;22575:5;22569:3;22557:9;:15;:23;22545:35;;22260:329;22708:10;22702:3;22689:9;:16;;22636:1;22632;:5;-1:-1:-1;;;22631:44:15;;;22622:54;;-1:-1:-1;;;;;22622:83:15;;:96;22604:116;;22597:123;;;;;;;;;6660:342:3;-1:-1:-1;;;;;6735:21:3;;6727:67;;;;-1:-1:-1;;;;;6727:67:3;;;;;;;;;6826:68;6849:6;6826:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6826:18:3;;;;;;:9;:18;;;;;;;:68;;:22;:68;:::i;:::-;-1:-1:-1;;;;;6805:18:3;;;;;;:9;:18;;;;;:89;6919:12;;:24;;6936:6;6919:24;:16;:24;:::i;:::-;6904:12;:39;6958:37;;6984:1;;-1:-1:-1;;;;;6958:37:3;;;;;;;6988:6;;6958:37;;17735:788:17;17890:5;;:26;;-1:-1:-1;;;;;17890:26:17;;17825:7;;;;;;17868:49;;-1:-1:-1;;;;;17890:5:17;;;;:12;;:26;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17890:26:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17890:26:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17890:26:17;;;;;;;;17868:49;17853:64;-1:-1:-1;17931:24:17;17853:64;17953:1;17931:16;:24::i;:::-;:27;;17957:1;17931:27;17928:555;;;17990:5;;:22;;;-1:-1:-1;;;;;17990:22:17;;;;17974:13;;-1:-1:-1;;;;;17990:5:17;;:20;;:22;;;;;;;;;;;;;;:5;:22;;;5:2:-1;;;;30:1;27;20:12;5:2;17990:22:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17990:22:17;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;17990:22:17;;;;;;;;;17974:38;-1:-1:-1;;;;;;18030:19:17;;;18027:445;;18069:68;18078:5;18085:51;18105:30;18122:4;18128:6;18105:16;:30::i;:::-;18085:19;:51::i;18069:68::-;;18165:56;18182:6;18190:30;18207:4;18213:6;18190:16;:30::i;18165:56::-;-1:-1:-1;;;;;18301:17:17;;;;;;:10;:17;;;;;;;;:27;;;;;;;;:41;18156:65;;-1:-1:-1;18284:90:17;;18301:41;;18344:29;18361:4;18367:5;18344:16;:29::i;18284:90::-;-1:-1:-1;;;;;18240:17:17;;;;;;:10;:17;;;;;;;;:27;;;;;;;;:134;;-1:-1:-1;;;;;;18240:134:17;;;;;;;;;;;;18402:54;18419:5;18426:29;18443:4;18419:5;18426:16;:29::i;18402:54::-;18394:62;;18027:445;17928:555;;-1:-1:-1;18501:6:17;;18509:5;;-1:-1:-1;;;17735:788:17:o;706:17966::-;;;;;;;;;;-1:-1:-1;706:17966:17;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;706:17966:17;;;-1:-1:-1;706:17966:17;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;5:118:-1;;72:46;110:6;97:20;72:46;;130:122;;208:39;239:6;233:13;208:39;;259:116;;334:36;362:6;356:13;334:36;;382:118;;449:46;487:6;474:20;449:46;;507:122;;585:39;616:6;610:13;585:39;;637:444;;750:3;743:4;735:6;731:17;727:27;717:2;;768:1;765;758:12;717:2;798:6;792:13;820:65;835:49;877:6;835:49;;;820:65;;;811:74;;905:6;898:5;891:21;941:4;933:6;929:17;974:4;967:5;963:16;1009:3;1000:6;995:3;991:16;988:25;985:2;;;1026:1;1023;1016:12;985:2;1036:39;1068:6;1063:3;1058;1036:39;;;710:371;;;;;;;;1343:114;;1408:44;1444:6;1431:20;1408:44;;1464:241;;1568:2;1556:9;1547:7;1543:23;1539:32;1536:2;;;1584:1;1581;1574:12;1536:2;1619:1;1636:53;1681:7;1661:9;1636:53;;1712:263;;1827:2;1815:9;1806:7;1802:23;1798:32;1795:2;;;1843:1;1840;1833:12;1795:2;1878:1;1895:64;1951:7;1931:9;1895:64;;1982:366;;;2103:2;2091:9;2082:7;2078:23;2074:32;2071:2;;;2119:1;2116;2109:12;2071:2;2154:1;2171:53;2216:7;2196:9;2171:53;;;2161:63;;2133:97;2261:2;2279:53;2324:7;2315:6;2304:9;2300:22;2279:53;;;2269:63;;2240:98;2065:283;;;;;;2355:491;;;;2493:2;2481:9;2472:7;2468:23;2464:32;2461:2;;;2509:1;2506;2499:12;2461:2;2544:1;2561:53;2606:7;2586:9;2561:53;;;2551:63;;2523:97;2651:2;2669:53;2714:7;2705:6;2694:9;2690:22;2669:53;;;2659:63;;2630:98;2759:2;2777:53;2822:7;2813:6;2802:9;2798:22;2777:53;;;2767:63;;2738:98;2455:391;;;;;;2853:366;;;2974:2;2962:9;2953:7;2949:23;2945:32;2942:2;;;2990:1;2987;2980:12;2942:2;3025:1;3042:53;3087:7;3067:9;3042:53;;;3032:63;;3004:97;3132:2;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;;3226:1117;;;;;;;;;3447:3;3435:9;3426:7;3422:23;3418:33;3415:2;;;3464:1;3461;3454:12;3415:2;3499:1;3516:53;3561:7;3541:9;3516:53;;;3506:63;;3478:97;3606:2;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;;;3614:63;;3585:98;3714:2;3732:53;3777:7;3768:6;3757:9;3753:22;3732:53;;;3722:63;;3693:98;3822:2;3840:53;3885:7;3876:6;3865:9;3861:22;3840:53;;;3830:63;;3801:98;3930:3;3949:53;3994:7;3985:6;3974:9;3970:22;3949:53;;;3939:63;;3909:99;4039:3;4058:51;4101:7;4092:6;4081:9;4077:22;4058:51;;;4048:61;;4018:97;4146:3;4165:53;4210:7;4201:6;4190:9;4186:22;4165:53;;;4155:63;;4125:99;4255:3;4274:53;4319:7;4310:6;4299:9;4295:22;4274:53;;;4264:63;;4234:99;3409:934;;;;;;;;;;;;4723:491;;;;4861:2;4849:9;4840:7;4836:23;4832:32;4829:2;;;4877:1;4874;4867:12;4829:2;4912:1;4929:53;4974:7;4954:9;4929:53;;;4919:63;;4891:97;5019:2;5037:53;5082:7;5073:6;5062:9;5058:22;5037:53;;;5027:63;;4998:98;5127:2;5145:53;5190:7;5181:6;5170:9;5166:22;5145:53;;5221:1117;;;;;;;;;5442:3;5430:9;5421:7;5417:23;5413:33;5410:2;;;5459:1;5456;5449:12;5410:2;5494:1;5511:53;5556:7;5536:9;5511:53;;;5501:63;;5473:97;5601:2;5619:53;5664:7;5655:6;5644:9;5640:22;5619:53;;;5609:63;;5580:98;5709:2;5727:53;5772:7;5763:6;5752:9;5748:22;5727:53;;6345:257;;6457:2;6445:9;6436:7;6432:23;6428:32;6425:2;;;6473:1;6470;6463:12;6425:2;6508:1;6525:61;6578:7;6558:9;6525:61;;6609:263;;6724:2;6712:9;6703:7;6699:23;6695:32;6692:2;;;6740:1;6737;6730:12;6692:2;6775:1;6792:64;6848:7;6828:9;6792:64;;6879:743;;;;;;7051:3;7039:9;7030:7;7026:23;7022:33;7019:2;;;7068:1;7065;7058:12;7019:2;7103:1;7120:53;7165:7;7145:9;7120:53;;;7110:63;;7082:97;7210:2;7228:53;7273:7;7264:6;7253:9;7249:22;7228:53;;;7218:63;;7189:98;7318:2;7336:53;7381:7;7372:6;7361:9;7357:22;7336:53;;;7326:63;;7297:98;7426:2;7444:53;7489:7;7480:6;7469:9;7465:22;7444:53;;;7434:63;;7405:98;7534:3;7553:53;7598:7;7589:6;7578:9;7574:22;7553:53;;;7543:63;;7513:99;7013:609;;;;;;;;;7629:362;;7754:2;7742:9;7733:7;7729:23;7725:32;7722:2;;;7770:1;7767;7760:12;7722:2;7805:24;;7849:18;7838:30;;7835:2;;;7881:1;7878;7871:12;7835:2;7901:74;7967:7;7958:6;7947:9;7943:22;7901:74;;8268:991;;;;;;;;8472:3;8460:9;8451:7;8447:23;8443:33;8440:2;;;8489:1;8486;8479:12;8440:2;8524:1;8541:53;8586:7;8566:9;8541:53;;;8531:63;;8503:97;8631:2;8649:53;8694:7;8685:6;8674:9;8670:22;8649:53;;;8639:63;;8610:98;8739:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;;;8747:63;;8718:98;8847:2;8865:53;8910:7;8901:6;8890:9;8886:22;8865:53;;;8855:63;;8826:98;8955:3;8974:51;9017:7;9008:6;8997:9;8993:22;8974:51;;;8964:61;;8934:97;9062:3;9081:53;9126:7;9117:6;9106:9;9102:22;9081:53;;;9071:63;;9041:99;9171:3;9190:53;9235:7;9226:6;9215:9;9211:22;9190:53;;;9180:63;;9150:99;8434:825;;;;;;;;;;;9266:1117;;;;;;;;;9487:3;9475:9;9466:7;9462:23;9458:33;9455:2;;;9504:1;9501;9494:12;9455:2;9539:1;9556:53;9601:7;9581:9;9556:53;;;9546:63;;9518:97;9646:2;9664:53;9709:7;9700:6;9689:9;9685:22;9664:53;;10391:257;;10518:90;10604:3;10596:6;10518:90;;;-1:-1;;10637:4;10628:14;;10511:137;10656:142;10747:45;10786:5;10747:45;;;10742:3;10735:58;10729:69;;;10805:110;10878:31;10903:5;10878:31;;11102:781;;11287:74;11355:5;11287:74;;;11374:106;11473:6;11468:3;11374:106;;;11367:113;;11500:76;11570:5;11500:76;;;11597:1;11582:279;11607:6;11604:1;11601:13;11582:279;;;11654:103;11753:3;11744:6;11738:13;11654:103;;;11647:110;;11774:80;11847:6;11774:80;;;11764:90;-1:-1;11629:1;11622:9;11582:279;;;-1:-1;11874:3;;11266:617;-1:-1;;;;11266:617;11891:111;11968:28;11990:5;11968:28;;12009:110;12082:31;12107:5;12082:31;;12388:159;12489:52;12509:31;12534:5;12509:31;;;12489:52;;12554:150;12653:45;12692:5;12653:45;;12868:347;;12980:39;13013:5;12980:39;;;13031:71;13095:6;13090:3;13031:71;;;13024:78;;13107:52;13152:6;13147:3;13140:4;13133:5;13129:16;13107:52;;;13180:29;13202:6;13180:29;;;13171:39;;;;12960:255;-1:-1;;;12960:255;13569:465;;13729:67;13793:2;13788:3;13729:67;;;13829:66;13809:87;;-1:-1;;;;;13925:2;13916:12;;13909:88;14025:2;14016:12;;13715:319;-1:-1;;13715:319;14043:221;-1:-1;;;;;14179:79;;14172:92;14273:400;;14451:85;14533:2;14528:3;14451:85;;;14569:66;14549:87;;14664:2;14655:12;;14437:236;-1:-1;;14437:236;14682:465;;14842:67;14906:2;14901:3;14842:67;;;14942:66;14922:87;;-1:-1;;;;;15038:2;15029:12;;15022:88;15138:2;15129:12;;14828:319;-1:-1;;14828:319;15156:465;;15316:67;15380:2;15375:3;15316:67;;;15416:66;15396:87;;-1:-1;;;;;15512:2;15503:12;;15496:88;15612:2;15603:12;;15302:319;-1:-1;;15302:319;15630:364;;15790:67;15854:2;15849:3;15790:67;;;15890:66;15870:87;;15985:2;15976:12;;15776:218;-1:-1;;15776:218;16003:221;-1:-1;;;;;16139:79;;16132:92;16233:221;-1:-1;;;;;16369:79;;16362:92;16463:364;;16623:67;16687:2;16682:3;16623:67;;;16723:66;16703:87;;16818:2;16809:12;;16609:218;-1:-1;;16609:218;16836:364;;16996:67;17060:2;17055:3;16996:67;;;17096:66;17076:87;;17191:2;17182:12;;16982:218;-1:-1;;16982:218;17209:465;;17369:67;17433:2;17428:3;17369:67;;;17469:66;17449:87;;17570:66;17565:2;17556:12;;17549:88;17665:2;17656:12;;17355:319;-1:-1;;17355:319;17683:363;;17843:66;17907:1;17902:3;17843:66;;;-1:-1;;;;;17922:87;;18037:2;18028:12;;17829:217;-1:-1;;17829:217;18055:465;;18215:67;18279:2;18274:3;18215:67;;;18315:66;18295:87;;-1:-1;;;;;18411:2;18402:12;;18395:88;18511:2;18502:12;;18201:319;-1:-1;;18201:319;18529:465;;18689:67;18753:2;18748:3;18689:67;;;18789:66;18769:87;;-1:-1;;;;;18885:2;18876:12;;18869:88;18985:2;18976:12;;18675:319;-1:-1;;18675:319;19003:465;;19163:67;19227:2;19222:3;19163:67;;;19263:66;19243:87;;-1:-1;;;;;19359:2;19350:12;;19343:88;19459:2;19450:12;;19149:319;-1:-1;;19149:319;19477:364;;19637:67;19701:2;19696:3;19637:67;;;19737:66;19717:87;;19832:2;19823:12;;19623:218;-1:-1;;19623:218;19896:467;20093:22;;20023:4;20014:14;;;20121:61;20018:3;20093:22;20121:61;;;20043:145;20268:4;20261:5;20257:16;20251:23;20280:62;20336:4;20331:3;20327:14;20314:11;20280:62;;20497:114;20576:29;20599:5;20576:29;;20618:244;;20737:75;20808:3;20799:6;20737:75;;;-1:-1;20834:2;20825:12;;20725:137;-1:-1;20725:137;20869:511;;21096:148;21240:3;21096:148;;;21089:155;;21255:75;21326:3;21317:6;21255:75;;21387:213;21505:2;21490:18;;21519:71;21494:9;21563:6;21519:71;;21607:467;21797:2;21782:18;;21811:79;21786:9;21863:6;21811:79;;;21901:80;21977:2;21966:9;21962:18;21953:6;21901:80;;;21992:72;22060:2;22049:9;22045:18;22036:6;21992:72;;22081:435;22255:2;22240:18;;22269:71;22244:9;22313:6;22269:71;;;22351:72;22419:2;22408:9;22404:18;22395:6;22351:72;;22523:324;22669:2;22654:18;;22683:71;22658:9;22727:6;22683:71;;;22765:72;22833:2;22822:9;22818:18;22809:6;22765:72;;22854:441;23062:2;23076:47;;;23047:18;;23137:148;23047:18;23271:6;23137:148;;23302:201;23414:2;23399:18;;23428:65;23403:9;23466:6;23428:65;;23510:213;23628:2;23613:18;;23642:71;23617:9;23686:6;23642:71;;23730:499;23928:2;23913:18;;23942:79;23917:9;23994:6;23942:79;;;24032:88;24116:2;24105:9;24101:18;24092:6;24032:88;;;24131;24215:2;24204:9;24200:18;24191:6;24131:88;;24236:518;24455:2;24440:18;;24469:71;24444:9;24513:6;24469:71;;;24588:9;24582:4;24578:20;24573:2;24562:9;24558:18;24551:48;24613:131;24739:4;24613:131;;24761:324;24907:2;24892:18;;24921:71;24896:9;24965:6;24921:71;;25092:539;25290:3;25275:19;;25305:71;25279:9;25349:6;25305:71;;;25387:68;25451:2;25440:9;25436:18;25427:6;25387:68;;;25466:72;25534:2;25523:9;25519:18;25510:6;25466:72;;;25549;25617:2;25606:9;25602:18;25593:6;25549:72;;;25261:370;;;;;;;;25638:293;25772:2;25786:47;;;25757:18;;25847:74;25757:18;25907:6;25847:74;;26246:407;26437:2;26451:47;;;26422:18;;26512:131;26422:18;26512:131;;26660:450;26869:2;26854:18;;26883:134;26858:9;26883:134;;;27028:72;27096:2;27085:9;27081:18;27072:6;27028:72;;27117:407;27308:2;27322:47;;;27293:18;;27383:131;27293:18;27383:131;;27531:407;27722:2;27736:47;;;27707:18;;27797:131;27707:18;27797:131;;27945:407;28136:2;28150:47;;;28121:18;;28211:131;28121:18;28211:131;;28359:450;28568:2;28553:18;;28582:134;28557:9;28582:134;;28816:339;28997:2;28982:18;;29011:134;28986:9;29011:134;;29162:407;29353:2;29367:47;;;29338:18;;29428:131;29338:18;29428:131;;29576:407;29767:2;29781:47;;;29752:18;;29842:131;29752:18;29842:131;;29990:407;30181:2;30195:47;;;30166:18;;30256:131;30166:18;30256:131;;30404:407;30595:2;30609:47;;;30580:18;;30670:131;30580:18;30670:131;;30818:407;31009:2;31023:47;;;30994:18;;31084:131;30994:18;31084:131;;31232:407;31423:2;31437:47;;;31408:18;;31498:131;31408:18;31498:131;;31646:407;31837:2;31851:47;;;31822:18;;31912:131;31822:18;31912:131;;32280:256;32342:2;32336:9;32368:17;;;32443:18;32428:34;;32464:22;;;32425:62;32422:2;;;32500:1;32497;32490:12;32422:2;32516;32509:22;32320:216;;-1:-1;32320:216;32543:259;;32687:18;32679:6;32676:30;32673:2;;;32719:1;32716;32709:12;32673:2;-1:-1;32792:4;32763;32740:17;;;;-1:-1;;32736:33;32782:15;;32610:192;32811:141;32940:4;32928:17;;32909:43;32961:127;33071:12;;33055:33;33441:198;33579:19;;;33628:4;33619:14;;33572:67;33973:105;;34042:31;34067:5;34042:31;;34085:92;34158:13;34151:21;;34134:43;34270:128;-1:-1;;;;;34339:54;;34322:76;34491:88;34569:4;34558:16;;34541:38;35199:129;;35286:37;35317:5;35286:37;;35335:123;;35422:31;35447:5;35422:31;;35595:121;;35674:37;35705:5;35674:37;;35846:268;35911:1;35918:101;35932:6;35929:1;35926:13;35918:101;;;35999:11;;;35993:18;35980:11;;;35973:39;35954:2;35947:10;35918:101;;;36034:6;36031:1;36028:13;36025:2;;;-1:-1;;36099:1;36081:16;;36074:27;35895:219;36203:97;36291:2;36271:14;-1:-1;;36267:28;;36251:49",
835
835
  "source": "// Verified cash manager on mainnet\r\n// (c) Kallol Borah, 2021\r\n\r\npragma solidity 0.5.7;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"./interfaces/ICash.sol\";\r\nimport \"./interfaces/IBond.sol\";\r\nimport \"./interfaces/IFactory.sol\";\r\nimport \"./interfaces/IRates.sol\";\r\nimport \"./utilities/Pausable.sol\";\r\nimport \"./utilities/StringUtils.sol\";\r\nimport \"abdk-libraries-solidity/ABDKMathQuad.sol\";\r\nimport \"@openzeppelin/upgrades/contracts/Initializable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/ownership/Ownable.sol\";\r\nimport \"@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol\";\r\n\r\ncontract Cash is ICash, ERC20, Ownable, Pausable {\r\n\r\n using stringutils for *;\r\n\r\n using ABDKMathQuad for uint256;\r\n using ABDKMathQuad for int256;\r\n using ABDKMathQuad for bytes16;\r\n\r\n //bridge\r\n address bridge;\r\n\r\n //mutex\r\n bool lock;\r\n\r\n //name of Verified cash token (eg, Via-USD)\r\n string public name;\r\n string public symbol;\r\n bytes32 public cashtokenName;\r\n\r\n //verified factory address\r\n IFactory private factory;\r\n\r\n //verified rates\r\n IRates private rates;\r\n\r\n struct deposit{\r\n bytes16 depositAmount;\r\n bytes16 issuedAmount;\r\n }\r\n\r\n //mapping of buyers (address) to currency (bytes32) to deposits \r\n mapping(address => mapping(bytes32 => deposit)) private L1deposits;\r\n mapping(address => mapping(bytes32 => deposit)) private L2deposits;\r\n\r\n //supported ERC20 tokens for issuing Verified cash tokens\r\n ICash.token[] private tokens;\r\n mapping(address => uint256) private tokenIndex;\r\n\r\n //events to capture by Verified bridge\r\n event CashIssueRequest(address indexed party, bytes32 currency, uint256 amount);\r\n event CashRedeemed(address indexed redeemer, bytes32 currency, uint256 amount);\r\n event CashTransfer(address indexed transferor, address transferee, bytes32 currency, uint256 amount);\r\n event CashIssued(address indexed party, bytes32 currency, uint256 amount);\r\n event addedL2Balance(address indexed party, bytes32 currency, uint256 amount);\r\n event transferredL2Balance(address indexed transferor, address transferee, bytes32 currency, uint256 amount);\r\n\r\n function initialize(bytes32 _name, bytes32 _currency, address _owner, address _fee, address _bridge) public initializer{\r\n Ownable.initialize(_owner);\r\n factory = IFactory(msg.sender);\r\n name = string(abi.encodePacked(_name));\r\n symbol = _name.substring(0,5);\r\n cashtokenName = _currency;\r\n rates = IRates(_fee);\r\n bridge = _bridge;\r\n lock = false;\r\n }\r\n\r\n function setSigner(address _signer) onlyOwner external{\r\n bridge = _signer;\r\n }\r\n\r\n //handling pay in of ether for issue of via cash tokens\r\n function() external payable{\r\n //ether paid in\r\n require(msg.value !=0);\r\n //only to pay in ether\r\n require(msg.data.length==0);\r\n //contract must not be paused\r\n require(paused == false);\r\n //check aml status\r\n //require(amlCheck(msg.sender)==true); \r\n L1deposits[msg.sender][\"ether\"].depositAmount = ABDKMathQuad.add(L1deposits[msg.sender][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(msg.value)); \r\n }\r\n\r\n /**\r\n Specifies list of supported tokens that can be deposited to issue Verified cash tokens\r\n @param _token address of token supported\r\n @param _name name of token supported\r\n */\r\n function supportTokens(address _token, bytes32 _name) onlyOwner external {\r\n if(tokenIndex[_token]==0){\r\n ICash.token memory t = ICash.token ({\r\n tokenName: _name,\r\n tokenAddress: _token\r\n });\r\n tokens.push(t);\r\n tokenIndex[_token] = tokens.length;\r\n }\r\n }\r\n\r\n /**\r\n Checks if a specified token is supported for issuing Verified cash tokens\r\n @param _token token that is supported for issuing cash tokens\r\n */\r\n function checkSupportForToken(address _token) external view returns(bool){\r\n if(tokenIndex[_token]>0)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n Returns array of tokens supported\r\n */\r\n function getSupportedTokens() external view returns(ICash.token[] memory){\r\n return tokens;\r\n }\r\n \r\n /**\r\n Used by external apps (eg, exchange, wallet) to buy Verified cash token \r\n @param _token address of token used by investor to buy the cash token\r\n @param _amount amount of token that is transferred from investor to this cash token issuing contract\r\n */ \r\n function requestIssue(address _token, uint256 _amount, address _buyer) external {\r\n require(paused == false, \"Contract in paused state\");\r\n bool found = false;\r\n if(tokenIndex[_token]>0)\r\n found = true;\r\n if(found){ \r\n _approve(msg.sender, address(this), _amount);\r\n bytes32 currencyName = tokens[tokenIndex[_token]-1].tokenName;\r\n if(ERC20(_token).transferFrom(msg.sender, address(this), _amount)){\r\n L2deposits[_buyer][currencyName].depositAmount = ABDKMathQuad.add(L2deposits[_buyer][currencyName].depositAmount, ABDKMathQuad.fromUInt(_amount));\r\n emit CashIssueRequest(_buyer, currencyName, _amount);\r\n }\r\n }\r\n else if(ABDKMathQuad.cmp(L1deposits[msg.sender][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(_amount))>=0){\r\n L1deposits[msg.sender][\"ether\"].depositAmount = ABDKMathQuad.sub(L1deposits[msg.sender][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(_amount));\r\n L2deposits[_buyer][\"ether\"].depositAmount = ABDKMathQuad.add(L2deposits[_buyer][\"ether\"].depositAmount, ABDKMathQuad.fromUInt(_amount));\r\n emit CashIssueRequest(_buyer, \"ether\", _amount); \r\n }\r\n }\r\n \r\n //adds issued Verified cash tokens in L2 to user balances\r\n function addIssuedBalance(uint256 balance, address buyer, bytes32 currency, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge); \r\n if(factory.getIssuer(\"ViaCash\", currency)==address(this)){\r\n emit addedL2Balance(buyer, currency, SafeMath.sub(balance, ABDKMathQuad.toUInt(L2deposits[buyer][currency].issuedAmount)));\r\n L2deposits[buyer][currency].issuedAmount = ABDKMathQuad.fromUInt(balance);\r\n }\r\n }\r\n \r\n //transfers deposit (against which cash tokens are issued) from transferor to transferee in L2 \r\n function transferDeposit(address transferor, uint256 amount, address transferee, bytes32 currency, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n if(ABDKMathQuad.cmp(ABDKMathQuad.sub(L2deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(amount)),0)>=0){ \r\n ABDKMathQuad.sub(L2deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n ABDKMathQuad.add(L2deposits[transferee][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n emit transferredL2Balance(transferor, transferee, currency, amount);\r\n }\r\n }\r\n \r\n //redeems deposited amounts in L2\r\n function redeemDeposits(uint256 amount, address redeemer, bytes32 currency, uint256 balance, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n L2deposits[redeemer][currency].issuedAmount = ABDKMathQuad.fromUInt(balance); \r\n if(currency==\"ether\"){ \r\n address(uint160(redeemer)).transfer(amount);\r\n L2deposits[redeemer][currency].depositAmount = ABDKMathQuad.sub(L2deposits[redeemer][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n }\r\n else{\r\n for(uint256 i=0; i<tokens.length; i++){\r\n if(tokens[i].tokenName==currency){\r\n ERC20(tokens[i].tokenAddress).transfer(redeemer, amount);\r\n L2deposits[redeemer][currency].depositAmount = ABDKMathQuad.sub(L2deposits[redeemer][currency].depositAmount, ABDKMathQuad.fromUInt(amount));\r\n }\r\n }\r\n } \r\n emit CashRedeemed(redeemer, currency, amount);\r\n }\r\n\r\n //transfers issued cash tokens in L2 to L1 wallet\r\n function transferIssuedBalance(address transferor, bytes32 currency, uint256 amount, uint256 deposited, bytes32 _hashedMessage, uint8 _v, bytes32 _r, bytes32 _s) \r\n external {\r\n bytes32 payloadHash = keccak256(abi.encode(_hashedMessage, \"L2toL1\"));\r\n bytes32 messageHash = keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", payloadHash));\r\n require(ecrecover(messageHash, _v, _r, _s)== bridge);\r\n L2deposits[transferor][currency].depositAmount = ABDKMathQuad.sub(L2deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(deposited));\r\n L1deposits[transferor][currency].depositAmount = ABDKMathQuad.add(L1deposits[transferor][currency].depositAmount, ABDKMathQuad.fromUInt(deposited));\r\n _mint(address(this), amount);\r\n _transfer(address(this), transferor, amount);\r\n L2deposits[transferor][currency].issuedAmount = ABDKMathQuad.sub(L2deposits[transferor][currency].issuedAmount, ABDKMathQuad.fromUInt(amount));\r\n L1deposits[transferor][currency].issuedAmount = ABDKMathQuad.add(L1deposits[transferor][currency].issuedAmount, ABDKMathQuad.fromUInt(amount));\r\n emit CashIssued(transferor, cashtokenName, amount);\r\n }\r\n\r\n //overriding this function of ERC20 standard for transfer of via cash tokens to other users or to this contract for redemption\r\n function transferFrom(address sender, address receiver, uint256 token) public returns (bool){\r\n //contract must not be paused\r\n require(paused == false);\r\n //check aml status\r\n //require(amlCheck(sender)==true);\r\n //require(amlCheck(receiver)==true);\r\n //ensure sender has enough tokens in balance before transferring or redeeming them\r\n require(ABDKMathQuad.cmp(ABDKMathQuad.fromUInt(balanceOf(sender)),ABDKMathQuad.fromUInt(token))>=0);\r\n //check if tokens are being transferred to this cash contract\r\n if(receiver == address(this)){\r\n //if token name is the same, this transfer has to be redeemed\r\n if(redeem(ABDKMathQuad.fromUInt(token), sender, \"redeem\", address(this)))\r\n return true;\r\n else\r\n return false;\r\n }\r\n else if(factory.getType(receiver)==\"ViaCash\" || factory.getType(receiver)==\"ViaBond\"){\r\n _transfer(sender, receiver, token);\r\n return true;\r\n }\r\n else{\r\n //else, tokens are being sent to another user's account\r\n //sending contract should be allowed by token owner to make this transfer\r\n if(redeem(ABDKMathQuad.fromUInt(token), sender, \"transfer\", receiver))\r\n return true;\r\n else\r\n return false;\r\n } \r\n }\r\n \r\n //requesting redemption of Via cash token and transfer of currency it was issued against\r\n //operation parameter indicates whether it is a redemption or a transfer of deposits from one party to another\r\n function redeem(bytes16 amount, address party, bytes32 operation, address receiver) private returns(bool){\r\n bool found = false; \r\n for(uint i=0; i<tokens.length && ABDKMathQuad.toUInt(amount)>0; i++){ \r\n //check if currency in which redemption is to be done has sufficient issued balance for the deposited currency\r\n if(ABDKMathQuad.cmp(L1deposits[party][tokens[i].tokenName].issuedAmount, amount)>=0){\r\n bytes16 value = ABDKMathQuad.mul(ABDKMathQuad.div(amount, L1deposits[party][tokens[i].tokenName].issuedAmount),L1deposits[party][tokens[i].tokenName].depositAmount);\r\n L1deposits[party][tokens[i].tokenName].depositAmount = ABDKMathQuad.sub(L1deposits[party][tokens[i].tokenName].depositAmount, value);\r\n L1deposits[party][tokens[i].tokenName].issuedAmount = ABDKMathQuad.sub(L1deposits[party][tokens[i].tokenName].issuedAmount, amount);\r\n require(!lock);\r\n lock = true;\r\n if(operation==\"redeem\"){\r\n //adjust total supply\r\n _burn(party, ABDKMathQuad.toUInt(amount));\r\n //send redeemed ether to party\r\n if(tokens[i].tokenName==\"ether\"){\r\n address(uint160(party)).transfer(ABDKMathQuad.toUInt(value));\r\n }\r\n else{\r\n ERC20(tokens[i].tokenAddress).transfer(party, ABDKMathQuad.toUInt(value));\r\n }\r\n //generate event\r\n emit CashRedeemed(party, tokens[i].tokenName, ABDKMathQuad.toUInt(value));\r\n }\r\n else if(operation==\"transfer\"){\r\n //check if any fee is payable on remittance and acceptance and pay it if that is the case\r\n (amount, value) = payTransferFee(amount, value, tokens[i].tokenName);\r\n //transfer balances\r\n _burn(party, ABDKMathQuad.toUInt(amount));\r\n _mint(receiver, ABDKMathQuad.toUInt(amount));\r\n //transfer deposits\r\n L1deposits[receiver][tokens[i].tokenName].depositAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].depositAmount, value);\r\n //transfer issued amounts\r\n L1deposits[receiver][tokens[i].tokenName].issuedAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].issuedAmount, amount); \r\n emit CashTransfer(party, receiver, tokens[i].tokenName, ABDKMathQuad.toUInt(amount));\r\n }\r\n amount = 0;\r\n found = true;\r\n lock = false;\r\n }\r\n //amount to redeem is more than what is in deposit, so we need to remove deposit after redemption\r\n else if(ABDKMathQuad.cmp(L1deposits[party][tokens[i].tokenName].issuedAmount, 0)>0){\r\n require(!lock);\r\n lock = true;\r\n if(operation==\"redeem\"){\r\n //adjust total supply\r\n _burn(party, ABDKMathQuad.toUInt(L1deposits[party][tokens[i].tokenName].issuedAmount));\r\n //check if any fee is payable on redemption and pay it if that is the case\r\n bytes16 value = L1deposits[party][tokens[i].tokenName].depositAmount;\r\n //send redeemed ether to party which is all of the ether in deposit with this user (party)\r\n if(tokens[i].tokenName==\"ether\"){ \r\n address(uint160(party)).transfer(ABDKMathQuad.toUInt(value));\r\n }\r\n else{\r\n ERC20(tokens[i].tokenAddress).transfer(party, ABDKMathQuad.toUInt(value));\r\n } \r\n //generate event\r\n emit CashRedeemed(party, tokens[i].tokenName, ABDKMathQuad.toUInt(value));\r\n }\r\n else if(operation==\"transfer\"){\r\n //check if any fee is payable on remittance and acceptance and pay it if that is the case\r\n (bytes16 amt, bytes16 value) = payTransferFee(L1deposits[party][tokens[i].tokenName].issuedAmount, L1deposits[party][tokens[i].tokenName].depositAmount, tokens[i].tokenName);\r\n //transfer balances\r\n _burn(party, ABDKMathQuad.toUInt(amt));\r\n _mint(receiver, ABDKMathQuad.toUInt(amt));\r\n //transfer deposits\r\n L1deposits[receiver][tokens[i].tokenName].depositAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].depositAmount, value);\r\n //transfer issued amounts\r\n L1deposits[receiver][tokens[i].tokenName].issuedAmount = ABDKMathQuad.add(L1deposits[receiver][tokens[i].tokenName].issuedAmount, amt);\r\n emit CashTransfer(party, receiver, tokens[i].tokenName, ABDKMathQuad.toUInt(amt));\r\n }\r\n //calculate remaining amount to redeem or transfer\r\n amount = ABDKMathQuad.sub(amount, L1deposits[party][tokens[i].tokenName].issuedAmount);\r\n //make deposit and issued amount balances zero for ether\r\n delete L1deposits[party][tokens[i].tokenName];\r\n found = true;\r\n lock = false;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n function payTransferFee(bytes16 amount, bytes16 value, bytes32 currency) private returns (bytes16, bytes16){\r\n bytes16 fees = ABDKMathQuad.fromUInt(rates.getFee(\"remittance\"));\r\n if(ABDKMathQuad.cmp(fees,0)==1){\r\n address feeTo = rates.getFeeToSetter();\r\n if(feeTo!=address(0x0)){\r\n transfer(feeTo, ABDKMathQuad.toUInt(ABDKMathQuad.mul(fees, amount)));\r\n amount = ABDKMathQuad.sub(amount, ABDKMathQuad.mul(fees, amount));\r\n L1deposits[feeTo][currency].depositAmount = ABDKMathQuad.add(L1deposits[feeTo][currency].depositAmount, ABDKMathQuad.mul(fees, value)); \r\n value = ABDKMathQuad.sub(value, ABDKMathQuad.mul(fees, value));\r\n }\r\n }\r\n return (amount, value);\r\n } \r\n\r\n function pause() onlyOwner public {\r\n _pause();\r\n }\r\n function unpause() onlyOwner public {\r\n _unpause();\r\n }\r\n\r\n}",
@@ -869,7 +869,7 @@
869
869
  "id": 7534,
870
870
  "nodeType": "ImportDirective",
871
871
  "scope": 9305,
872
- "sourceUnit": 10921,
872
+ "sourceUnit": 10938,
873
873
  "src": "127:32:17",
874
874
  "symbolAliases": [],
875
875
  "unitAlias": ""
@@ -880,7 +880,7 @@
880
880
  "id": 7535,
881
881
  "nodeType": "ImportDirective",
882
882
  "scope": 9305,
883
- "sourceUnit": 10799,
883
+ "sourceUnit": 10816,
884
884
  "src": "161:32:17",
885
885
  "symbolAliases": [],
886
886
  "unitAlias": ""
@@ -891,7 +891,7 @@
891
891
  "id": 7536,
892
892
  "nodeType": "ImportDirective",
893
893
  "scope": 9305,
894
- "sourceUnit": 11037,
894
+ "sourceUnit": 11063,
895
895
  "src": "195:35:17",
896
896
  "symbolAliases": [],
897
897
  "unitAlias": ""
@@ -902,7 +902,7 @@
902
902
  "id": 7537,
903
903
  "nodeType": "ImportDirective",
904
904
  "scope": 9305,
905
- "sourceUnit": 11104,
905
+ "sourceUnit": 11130,
906
906
  "src": "232:33:17",
907
907
  "symbolAliases": [],
908
908
  "unitAlias": ""
@@ -913,7 +913,7 @@
913
913
  "id": 7538,
914
914
  "nodeType": "ImportDirective",
915
915
  "scope": 9305,
916
- "sourceUnit": 11179,
916
+ "sourceUnit": 11205,
917
917
  "src": "267:34:17",
918
918
  "symbolAliases": [],
919
919
  "unitAlias": ""
@@ -924,7 +924,7 @@
924
924
  "id": 7539,
925
925
  "nodeType": "ImportDirective",
926
926
  "scope": 9305,
927
- "sourceUnit": 11475,
927
+ "sourceUnit": 11501,
928
928
  "src": "303:37:17",
929
929
  "symbolAliases": [],
930
930
  "unitAlias": ""
@@ -993,10 +993,10 @@
993
993
  "id": 7545,
994
994
  "name": "ICash",
995
995
  "nodeType": "UserDefinedTypeName",
996
- "referencedDeclaration": 10920,
996
+ "referencedDeclaration": 10937,
997
997
  "src": "723:5:17",
998
998
  "typeDescriptions": {
999
- "typeIdentifier": "t_contract$_ICash_$10920",
999
+ "typeIdentifier": "t_contract$_ICash_$10937",
1000
1000
  "typeString": "contract ICash"
1001
1001
  }
1002
1002
  },
@@ -1047,10 +1047,10 @@
1047
1047
  "id": 7551,
1048
1048
  "name": "Pausable",
1049
1049
  "nodeType": "UserDefinedTypeName",
1050
- "referencedDeclaration": 11178,
1050
+ "referencedDeclaration": 11204,
1051
1051
  "src": "746:8:17",
1052
1052
  "typeDescriptions": {
1053
- "typeIdentifier": "t_contract$_Pausable_$11178",
1053
+ "typeIdentifier": "t_contract$_Pausable_$11204",
1054
1054
  "typeString": "contract Pausable"
1055
1055
  }
1056
1056
  },
@@ -1065,8 +1065,8 @@
1065
1065
  752,
1066
1066
  821,
1067
1067
  890,
1068
- 10920,
1069
- 11178
1068
+ 10937,
1069
+ 11204
1070
1070
  ],
1071
1071
  "contractKind": "contract",
1072
1072
  "documentation": null,
@@ -1074,13 +1074,13 @@
1074
1074
  "id": 9304,
1075
1075
  "linearizedBaseContracts": [
1076
1076
  9304,
1077
- 11178,
1077
+ 11204,
1078
1078
  340,
1079
1079
  752,
1080
1080
  821,
1081
1081
  29,
1082
1082
  890,
1083
- 10920
1083
+ 10937
1084
1084
  ],
1085
1085
  "name": "Cash",
1086
1086
  "nodeType": "ContractDefinition",
@@ -1092,10 +1092,10 @@
1092
1092
  "id": 7553,
1093
1093
  "name": "stringutils",
1094
1094
  "nodeType": "UserDefinedTypeName",
1095
- "referencedDeclaration": 11474,
1095
+ "referencedDeclaration": 11500,
1096
1096
  "src": "770:11:17",
1097
1097
  "typeDescriptions": {
1098
- "typeIdentifier": "t_contract$_stringutils_$11474",
1098
+ "typeIdentifier": "t_contract$_stringutils_$11500",
1099
1099
  "typeString": "library stringutils"
1100
1100
  }
1101
1101
  },
@@ -1325,7 +1325,7 @@
1325
1325
  "stateVariable": true,
1326
1326
  "storageLocation": "default",
1327
1327
  "typeDescriptions": {
1328
- "typeIdentifier": "t_contract$_IFactory_$11036",
1328
+ "typeIdentifier": "t_contract$_IFactory_$11062",
1329
1329
  "typeString": "contract IFactory"
1330
1330
  },
1331
1331
  "typeName": {
@@ -1333,10 +1333,10 @@
1333
1333
  "id": 7574,
1334
1334
  "name": "IFactory",
1335
1335
  "nodeType": "UserDefinedTypeName",
1336
- "referencedDeclaration": 11036,
1336
+ "referencedDeclaration": 11062,
1337
1337
  "src": "1146:8:17",
1338
1338
  "typeDescriptions": {
1339
- "typeIdentifier": "t_contract$_IFactory_$11036",
1339
+ "typeIdentifier": "t_contract$_IFactory_$11062",
1340
1340
  "typeString": "contract IFactory"
1341
1341
  }
1342
1342
  },
@@ -1353,7 +1353,7 @@
1353
1353
  "stateVariable": true,
1354
1354
  "storageLocation": "default",
1355
1355
  "typeDescriptions": {
1356
- "typeIdentifier": "t_contract$_IRates_$11103",
1356
+ "typeIdentifier": "t_contract$_IRates_$11129",
1357
1357
  "typeString": "contract IRates"
1358
1358
  },
1359
1359
  "typeName": {
@@ -1361,10 +1361,10 @@
1361
1361
  "id": 7576,
1362
1362
  "name": "IRates",
1363
1363
  "nodeType": "UserDefinedTypeName",
1364
- "referencedDeclaration": 11103,
1364
+ "referencedDeclaration": 11129,
1365
1365
  "src": "1201:6:17",
1366
1366
  "typeDescriptions": {
1367
- "typeIdentifier": "t_contract$_IRates_$11103",
1367
+ "typeIdentifier": "t_contract$_IRates_$11129",
1368
1368
  "typeString": "contract IRates"
1369
1369
  }
1370
1370
  },
@@ -1576,7 +1576,7 @@
1576
1576
  "stateVariable": true,
1577
1577
  "storageLocation": "default",
1578
1578
  "typeDescriptions": {
1579
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
1579
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
1580
1580
  "typeString": "struct ICash.token[]"
1581
1581
  },
1582
1582
  "typeName": {
@@ -1585,10 +1585,10 @@
1585
1585
  "id": 7595,
1586
1586
  "name": "ICash.token",
1587
1587
  "nodeType": "UserDefinedTypeName",
1588
- "referencedDeclaration": 10806,
1588
+ "referencedDeclaration": 10823,
1589
1589
  "src": "1604:11:17",
1590
1590
  "typeDescriptions": {
1591
- "typeIdentifier": "t_struct$_token_$10806_storage_ptr",
1591
+ "typeIdentifier": "t_struct$_token_$10823_storage_ptr",
1592
1592
  "typeString": "struct ICash.token"
1593
1593
  }
1594
1594
  },
@@ -1597,7 +1597,7 @@
1597
1597
  "nodeType": "ArrayTypeName",
1598
1598
  "src": "1604:13:17",
1599
1599
  "typeDescriptions": {
1600
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage_ptr",
1600
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage_ptr",
1601
1601
  "typeString": "struct ICash.token[]"
1602
1602
  }
1603
1603
  },
@@ -2380,7 +2380,7 @@
2380
2380
  "referencedDeclaration": 7575,
2381
2381
  "src": "2464:7:17",
2382
2382
  "typeDescriptions": {
2383
- "typeIdentifier": "t_contract$_IFactory_$11036",
2383
+ "typeIdentifier": "t_contract$_IFactory_$11062",
2384
2384
  "typeString": "contract IFactory"
2385
2385
  }
2386
2386
  },
@@ -2397,7 +2397,7 @@
2397
2397
  "name": "msg",
2398
2398
  "nodeType": "Identifier",
2399
2399
  "overloadedDeclarations": [],
2400
- "referencedDeclaration": 11489,
2400
+ "referencedDeclaration": 11515,
2401
2401
  "src": "2483:3:17",
2402
2402
  "typeDescriptions": {
2403
2403
  "typeIdentifier": "t_magic_message",
@@ -2430,10 +2430,10 @@
2430
2430
  "name": "IFactory",
2431
2431
  "nodeType": "Identifier",
2432
2432
  "overloadedDeclarations": [],
2433
- "referencedDeclaration": 11036,
2433
+ "referencedDeclaration": 11062,
2434
2434
  "src": "2474:8:17",
2435
2435
  "typeDescriptions": {
2436
- "typeIdentifier": "t_type$_t_contract$_IFactory_$11036_$",
2436
+ "typeIdentifier": "t_type$_t_contract$_IFactory_$11062_$",
2437
2437
  "typeString": "type(contract IFactory)"
2438
2438
  }
2439
2439
  },
@@ -2447,13 +2447,13 @@
2447
2447
  "nodeType": "FunctionCall",
2448
2448
  "src": "2474:20:17",
2449
2449
  "typeDescriptions": {
2450
- "typeIdentifier": "t_contract$_IFactory_$11036",
2450
+ "typeIdentifier": "t_contract$_IFactory_$11062",
2451
2451
  "typeString": "contract IFactory"
2452
2452
  }
2453
2453
  },
2454
2454
  "src": "2464:30:17",
2455
2455
  "typeDescriptions": {
2456
- "typeIdentifier": "t_contract$_IFactory_$11036",
2456
+ "typeIdentifier": "t_contract$_IFactory_$11062",
2457
2457
  "typeString": "contract IFactory"
2458
2458
  }
2459
2459
  },
@@ -2517,7 +2517,7 @@
2517
2517
  "name": "abi",
2518
2518
  "nodeType": "Identifier",
2519
2519
  "overloadedDeclarations": [],
2520
- "referencedDeclaration": 11476,
2520
+ "referencedDeclaration": 11502,
2521
2521
  "src": "2519:3:17",
2522
2522
  "typeDescriptions": {
2523
2523
  "typeIdentifier": "t_magic_abi",
@@ -2691,7 +2691,7 @@
2691
2691
  "lValueRequested": false,
2692
2692
  "memberName": "substring",
2693
2693
  "nodeType": "MemberAccess",
2694
- "referencedDeclaration": 11325,
2694
+ "referencedDeclaration": 11351,
2695
2695
  "src": "2563:15:17",
2696
2696
  "typeDescriptions": {
2697
2697
  "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_bytes32_$",
@@ -2785,7 +2785,7 @@
2785
2785
  "referencedDeclaration": 7577,
2786
2786
  "src": "2630:5:17",
2787
2787
  "typeDescriptions": {
2788
- "typeIdentifier": "t_contract$_IRates_$11103",
2788
+ "typeIdentifier": "t_contract$_IRates_$11129",
2789
2789
  "typeString": "contract IRates"
2790
2790
  }
2791
2791
  },
@@ -2819,10 +2819,10 @@
2819
2819
  "name": "IRates",
2820
2820
  "nodeType": "Identifier",
2821
2821
  "overloadedDeclarations": [],
2822
- "referencedDeclaration": 11103,
2822
+ "referencedDeclaration": 11129,
2823
2823
  "src": "2638:6:17",
2824
2824
  "typeDescriptions": {
2825
- "typeIdentifier": "t_type$_t_contract$_IRates_$11103_$",
2825
+ "typeIdentifier": "t_type$_t_contract$_IRates_$11129_$",
2826
2826
  "typeString": "type(contract IRates)"
2827
2827
  }
2828
2828
  },
@@ -2836,13 +2836,13 @@
2836
2836
  "nodeType": "FunctionCall",
2837
2837
  "src": "2638:12:17",
2838
2838
  "typeDescriptions": {
2839
- "typeIdentifier": "t_contract$_IRates_$11103",
2839
+ "typeIdentifier": "t_contract$_IRates_$11129",
2840
2840
  "typeString": "contract IRates"
2841
2841
  }
2842
2842
  },
2843
2843
  "src": "2630:20:17",
2844
2844
  "typeDescriptions": {
2845
- "typeIdentifier": "t_contract$_IRates_$11103",
2845
+ "typeIdentifier": "t_contract$_IRates_$11129",
2846
2846
  "typeString": "contract IRates"
2847
2847
  }
2848
2848
  },
@@ -3252,7 +3252,7 @@
3252
3252
  "scope": 9304,
3253
3253
  "src": "2716:89:17",
3254
3254
  "stateMutability": "nonpayable",
3255
- "superFunction": 10919,
3255
+ "superFunction": 10936,
3256
3256
  "visibility": "external"
3257
3257
  },
3258
3258
  {
@@ -3284,7 +3284,7 @@
3284
3284
  "name": "msg",
3285
3285
  "nodeType": "Identifier",
3286
3286
  "overloadedDeclarations": [],
3287
- "referencedDeclaration": 11489,
3287
+ "referencedDeclaration": 11515,
3288
3288
  "src": "2945:3:17",
3289
3289
  "typeDescriptions": {
3290
3290
  "typeIdentifier": "t_magic_message",
@@ -3343,10 +3343,10 @@
3343
3343
  "name": "require",
3344
3344
  "nodeType": "Identifier",
3345
3345
  "overloadedDeclarations": [
3346
- 11492,
3347
- 11493
3346
+ 11518,
3347
+ 11519
3348
3348
  ],
3349
- "referencedDeclaration": 11492,
3349
+ "referencedDeclaration": 11518,
3350
3350
  "src": "2937:7:17",
3351
3351
  "typeDescriptions": {
3352
3352
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -3396,7 +3396,7 @@
3396
3396
  "name": "msg",
3397
3397
  "nodeType": "Identifier",
3398
3398
  "overloadedDeclarations": [],
3399
- "referencedDeclaration": 11489,
3399
+ "referencedDeclaration": 11515,
3400
3400
  "src": "3010:3:17",
3401
3401
  "typeDescriptions": {
3402
3402
  "typeIdentifier": "t_magic_message",
@@ -3469,10 +3469,10 @@
3469
3469
  "name": "require",
3470
3470
  "nodeType": "Identifier",
3471
3471
  "overloadedDeclarations": [
3472
- 11492,
3473
- 11493
3472
+ 11518,
3473
+ 11519
3474
3474
  ],
3475
- "referencedDeclaration": 11492,
3475
+ "referencedDeclaration": 11518,
3476
3476
  "src": "3002:7:17",
3477
3477
  "typeDescriptions": {
3478
3478
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -3518,7 +3518,7 @@
3518
3518
  "name": "paused",
3519
3519
  "nodeType": "Identifier",
3520
3520
  "overloadedDeclarations": [],
3521
- "referencedDeclaration": 11143,
3521
+ "referencedDeclaration": 11169,
3522
3522
  "src": "3087:6:17",
3523
3523
  "typeDescriptions": {
3524
3524
  "typeIdentifier": "t_bool",
@@ -3563,10 +3563,10 @@
3563
3563
  "name": "require",
3564
3564
  "nodeType": "Identifier",
3565
3565
  "overloadedDeclarations": [
3566
- 11492,
3567
- 11493
3566
+ 11518,
3567
+ 11519
3568
3568
  ],
3569
- "referencedDeclaration": 11492,
3569
+ "referencedDeclaration": 11518,
3570
3570
  "src": "3079:7:17",
3571
3571
  "typeDescriptions": {
3572
3572
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -3627,7 +3627,7 @@
3627
3627
  "name": "msg",
3628
3628
  "nodeType": "Identifier",
3629
3629
  "overloadedDeclarations": [],
3630
- "referencedDeclaration": 11489,
3630
+ "referencedDeclaration": 11515,
3631
3631
  "src": "3206:3:17",
3632
3632
  "typeDescriptions": {
3633
3633
  "typeIdentifier": "t_magic_message",
@@ -3736,7 +3736,7 @@
3736
3736
  "name": "msg",
3737
3737
  "nodeType": "Identifier",
3738
3738
  "overloadedDeclarations": [],
3739
- "referencedDeclaration": 11489,
3739
+ "referencedDeclaration": 11515,
3740
3740
  "src": "3271:3:17",
3741
3741
  "typeDescriptions": {
3742
3742
  "typeIdentifier": "t_magic_message",
@@ -3823,7 +3823,7 @@
3823
3823
  "name": "msg",
3824
3824
  "nodeType": "Identifier",
3825
3825
  "overloadedDeclarations": [],
3826
- "referencedDeclaration": 11489,
3826
+ "referencedDeclaration": 11515,
3827
3827
  "src": "3329:3:17",
3828
3828
  "typeDescriptions": {
3829
3829
  "typeIdentifier": "t_magic_message",
@@ -4091,7 +4091,7 @@
4091
4091
  "stateVariable": false,
4092
4092
  "storageLocation": "memory",
4093
4093
  "typeDescriptions": {
4094
- "typeIdentifier": "t_struct$_token_$10806_memory_ptr",
4094
+ "typeIdentifier": "t_struct$_token_$10823_memory_ptr",
4095
4095
  "typeString": "struct ICash.token"
4096
4096
  },
4097
4097
  "typeName": {
@@ -4099,10 +4099,10 @@
4099
4099
  "id": 7794,
4100
4100
  "name": "ICash.token",
4101
4101
  "nodeType": "UserDefinedTypeName",
4102
- "referencedDeclaration": 10806,
4102
+ "referencedDeclaration": 10823,
4103
4103
  "src": "3699:11:17",
4104
4104
  "typeDescriptions": {
4105
- "typeIdentifier": "t_struct$_token_$10806_storage_ptr",
4105
+ "typeIdentifier": "t_struct$_token_$10823_storage_ptr",
4106
4106
  "typeString": "struct ICash.token"
4107
4107
  }
4108
4108
  },
@@ -4158,10 +4158,10 @@
4158
4158
  "name": "ICash",
4159
4159
  "nodeType": "Identifier",
4160
4160
  "overloadedDeclarations": [],
4161
- "referencedDeclaration": 10920,
4161
+ "referencedDeclaration": 10937,
4162
4162
  "src": "3722:5:17",
4163
4163
  "typeDescriptions": {
4164
- "typeIdentifier": "t_type$_t_contract$_ICash_$10920_$",
4164
+ "typeIdentifier": "t_type$_t_contract$_ICash_$10937_$",
4165
4165
  "typeString": "type(contract ICash)"
4166
4166
  }
4167
4167
  },
@@ -4172,10 +4172,10 @@
4172
4172
  "lValueRequested": false,
4173
4173
  "memberName": "token",
4174
4174
  "nodeType": "MemberAccess",
4175
- "referencedDeclaration": 10806,
4175
+ "referencedDeclaration": 10823,
4176
4176
  "src": "3722:11:17",
4177
4177
  "typeDescriptions": {
4178
- "typeIdentifier": "t_type$_t_struct$_token_$10806_storage_ptr_$",
4178
+ "typeIdentifier": "t_type$_t_struct$_token_$10823_storage_ptr_$",
4179
4179
  "typeString": "type(struct ICash.token storage pointer)"
4180
4180
  }
4181
4181
  },
@@ -4192,7 +4192,7 @@
4192
4192
  "nodeType": "FunctionCall",
4193
4193
  "src": "3722:103:17",
4194
4194
  "typeDescriptions": {
4195
- "typeIdentifier": "t_struct$_token_$10806_memory",
4195
+ "typeIdentifier": "t_struct$_token_$10823_memory",
4196
4196
  "typeString": "struct ICash.token memory"
4197
4197
  }
4198
4198
  },
@@ -4212,7 +4212,7 @@
4212
4212
  "referencedDeclaration": 7795,
4213
4213
  "src": "3852:1:17",
4214
4214
  "typeDescriptions": {
4215
- "typeIdentifier": "t_struct$_token_$10806_memory_ptr",
4215
+ "typeIdentifier": "t_struct$_token_$10823_memory_ptr",
4216
4216
  "typeString": "struct ICash.token memory"
4217
4217
  }
4218
4218
  }
@@ -4220,7 +4220,7 @@
4220
4220
  "expression": {
4221
4221
  "argumentTypes": [
4222
4222
  {
4223
- "typeIdentifier": "t_struct$_token_$10806_memory_ptr",
4223
+ "typeIdentifier": "t_struct$_token_$10823_memory_ptr",
4224
4224
  "typeString": "struct ICash.token memory"
4225
4225
  }
4226
4226
  ],
@@ -4233,7 +4233,7 @@
4233
4233
  "referencedDeclaration": 7597,
4234
4234
  "src": "3840:6:17",
4235
4235
  "typeDescriptions": {
4236
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
4236
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
4237
4237
  "typeString": "struct ICash.token storage ref[] storage ref"
4238
4238
  }
4239
4239
  },
@@ -4247,7 +4247,7 @@
4247
4247
  "referencedDeclaration": null,
4248
4248
  "src": "3840:11:17",
4249
4249
  "typeDescriptions": {
4250
- "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_token_$10806_storage_$returns$_t_uint256_$",
4250
+ "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_token_$10823_storage_$returns$_t_uint256_$",
4251
4251
  "typeString": "function (struct ICash.token storage ref) returns (uint256)"
4252
4252
  }
4253
4253
  },
@@ -4330,7 +4330,7 @@
4330
4330
  "referencedDeclaration": 7597,
4331
4331
  "src": "3890:6:17",
4332
4332
  "typeDescriptions": {
4333
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
4333
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
4334
4334
  "typeString": "struct ICash.token storage ref[] storage ref"
4335
4335
  }
4336
4336
  },
@@ -4459,7 +4459,7 @@
4459
4459
  "scope": 9304,
4460
4460
  "src": "3575:347:17",
4461
4461
  "stateMutability": "nonpayable",
4462
- "superFunction": 10818,
4462
+ "superFunction": 10835,
4463
4463
  "visibility": "external"
4464
4464
  },
4465
4465
  {
@@ -4677,7 +4677,7 @@
4677
4677
  "scope": 9304,
4678
4678
  "src": "4104:182:17",
4679
4679
  "stateMutability": "view",
4680
- "superFunction": 10825,
4680
+ "superFunction": 10842,
4681
4681
  "visibility": "external"
4682
4682
  },
4683
4683
  {
@@ -4696,7 +4696,7 @@
4696
4696
  "referencedDeclaration": 7597,
4697
4697
  "src": "4446:6:17",
4698
4698
  "typeDescriptions": {
4699
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
4699
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
4700
4700
  "typeString": "struct ICash.token storage ref[] storage ref"
4701
4701
  }
4702
4702
  },
@@ -4734,7 +4734,7 @@
4734
4734
  "stateVariable": false,
4735
4735
  "storageLocation": "memory",
4736
4736
  "typeDescriptions": {
4737
- "typeIdentifier": "t_array$_t_struct$_token_$10806_memory_$dyn_memory_ptr",
4737
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_memory_$dyn_memory_ptr",
4738
4738
  "typeString": "struct ICash.token[]"
4739
4739
  },
4740
4740
  "typeName": {
@@ -4743,10 +4743,10 @@
4743
4743
  "id": 7838,
4744
4744
  "name": "ICash.token",
4745
4745
  "nodeType": "UserDefinedTypeName",
4746
- "referencedDeclaration": 10806,
4746
+ "referencedDeclaration": 10823,
4747
4747
  "src": "4407:11:17",
4748
4748
  "typeDescriptions": {
4749
- "typeIdentifier": "t_struct$_token_$10806_storage_ptr",
4749
+ "typeIdentifier": "t_struct$_token_$10823_storage_ptr",
4750
4750
  "typeString": "struct ICash.token"
4751
4751
  }
4752
4752
  },
@@ -4755,7 +4755,7 @@
4755
4755
  "nodeType": "ArrayTypeName",
4756
4756
  "src": "4407:13:17",
4757
4757
  "typeDescriptions": {
4758
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage_ptr",
4758
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage_ptr",
4759
4759
  "typeString": "struct ICash.token[]"
4760
4760
  }
4761
4761
  },
@@ -4768,7 +4768,7 @@
4768
4768
  "scope": 9304,
4769
4769
  "src": "4355:105:17",
4770
4770
  "stateMutability": "view",
4771
- "superFunction": 10831,
4771
+ "superFunction": 10848,
4772
4772
  "visibility": "external"
4773
4773
  },
4774
4774
  {
@@ -4798,7 +4798,7 @@
4798
4798
  "name": "paused",
4799
4799
  "nodeType": "Identifier",
4800
4800
  "overloadedDeclarations": [],
4801
- "referencedDeclaration": 11143,
4801
+ "referencedDeclaration": 11169,
4802
4802
  "src": "4867:6:17",
4803
4803
  "typeDescriptions": {
4804
4804
  "typeIdentifier": "t_bool",
@@ -4865,10 +4865,10 @@
4865
4865
  "name": "require",
4866
4866
  "nodeType": "Identifier",
4867
4867
  "overloadedDeclarations": [
4868
- 11492,
4869
- 11493
4868
+ 11518,
4869
+ 11519
4870
4870
  ],
4871
- "referencedDeclaration": 11493,
4871
+ "referencedDeclaration": 11519,
4872
4872
  "src": "4859:7:17",
4873
4873
  "typeDescriptions": {
4874
4874
  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
@@ -5138,7 +5138,7 @@
5138
5138
  "name": "msg",
5139
5139
  "nodeType": "Identifier",
5140
5140
  "overloadedDeclarations": [],
5141
- "referencedDeclaration": 11489,
5141
+ "referencedDeclaration": 11515,
5142
5142
  "src": "5557:3:17",
5143
5143
  "typeDescriptions": {
5144
5144
  "typeIdentifier": "t_magic_message",
@@ -5403,7 +5403,7 @@
5403
5403
  "name": "msg",
5404
5404
  "nodeType": "Identifier",
5405
5405
  "overloadedDeclarations": [],
5406
- "referencedDeclaration": 11489,
5406
+ "referencedDeclaration": 11515,
5407
5407
  "src": "5654:3:17",
5408
5408
  "typeDescriptions": {
5409
5409
  "typeIdentifier": "t_magic_message",
@@ -5512,7 +5512,7 @@
5512
5512
  "name": "msg",
5513
5513
  "nodeType": "Identifier",
5514
5514
  "overloadedDeclarations": [],
5515
- "referencedDeclaration": 11489,
5515
+ "referencedDeclaration": 11515,
5516
5516
  "src": "5719:3:17",
5517
5517
  "typeDescriptions": {
5518
5518
  "typeIdentifier": "t_magic_message",
@@ -6149,7 +6149,7 @@
6149
6149
  "name": "msg",
6150
6150
  "nodeType": "Identifier",
6151
6151
  "overloadedDeclarations": [],
6152
- "referencedDeclaration": 11489,
6152
+ "referencedDeclaration": 11515,
6153
6153
  "src": "5057:3:17",
6154
6154
  "typeDescriptions": {
6155
6155
  "typeIdentifier": "t_magic_message",
@@ -6179,7 +6179,7 @@
6179
6179
  "name": "this",
6180
6180
  "nodeType": "Identifier",
6181
6181
  "overloadedDeclarations": [],
6182
- "referencedDeclaration": 11549,
6182
+ "referencedDeclaration": 11575,
6183
6183
  "src": "5077:4:17",
6184
6184
  "typeDescriptions": {
6185
6185
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -6325,7 +6325,7 @@
6325
6325
  "referencedDeclaration": 7597,
6326
6326
  "src": "5130:6:17",
6327
6327
  "typeDescriptions": {
6328
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
6328
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
6329
6329
  "typeString": "struct ICash.token storage ref[] storage ref"
6330
6330
  }
6331
6331
  },
@@ -6414,7 +6414,7 @@
6414
6414
  "nodeType": "IndexAccess",
6415
6415
  "src": "5130:28:17",
6416
6416
  "typeDescriptions": {
6417
- "typeIdentifier": "t_struct$_token_$10806_storage",
6417
+ "typeIdentifier": "t_struct$_token_$10823_storage",
6418
6418
  "typeString": "struct ICash.token storage ref"
6419
6419
  }
6420
6420
  },
@@ -6425,7 +6425,7 @@
6425
6425
  "lValueRequested": false,
6426
6426
  "memberName": "tokenName",
6427
6427
  "nodeType": "MemberAccess",
6428
- "referencedDeclaration": 10803,
6428
+ "referencedDeclaration": 10820,
6429
6429
  "src": "5130:38:17",
6430
6430
  "typeDescriptions": {
6431
6431
  "typeIdentifier": "t_bytes32",
@@ -6447,7 +6447,7 @@
6447
6447
  "name": "msg",
6448
6448
  "nodeType": "Identifier",
6449
6449
  "overloadedDeclarations": [],
6450
- "referencedDeclaration": 11489,
6450
+ "referencedDeclaration": 11515,
6451
6451
  "src": "5213:3:17",
6452
6452
  "typeDescriptions": {
6453
6453
  "typeIdentifier": "t_magic_message",
@@ -6477,7 +6477,7 @@
6477
6477
  "name": "this",
6478
6478
  "nodeType": "Identifier",
6479
6479
  "overloadedDeclarations": [],
6480
- "referencedDeclaration": 11549,
6480
+ "referencedDeclaration": 11575,
6481
6481
  "src": "5233:4:17",
6482
6482
  "typeDescriptions": {
6483
6483
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -7140,7 +7140,7 @@
7140
7140
  "scope": 9304,
7141
7141
  "src": "4768:1265:17",
7142
7142
  "stateMutability": "nonpayable",
7143
- "superFunction": 10840,
7143
+ "superFunction": 10857,
7144
7144
  "visibility": "external"
7145
7145
  },
7146
7146
  {
@@ -7237,7 +7237,7 @@
7237
7237
  "name": "abi",
7238
7238
  "nodeType": "Identifier",
7239
7239
  "overloadedDeclarations": [],
7240
- "referencedDeclaration": 11476,
7240
+ "referencedDeclaration": 11502,
7241
7241
  "src": "6324:3:17",
7242
7242
  "typeDescriptions": {
7243
7243
  "typeIdentifier": "t_magic_abi",
@@ -7284,7 +7284,7 @@
7284
7284
  "name": "keccak256",
7285
7285
  "nodeType": "Identifier",
7286
7286
  "overloadedDeclarations": [],
7287
- "referencedDeclaration": 11483,
7287
+ "referencedDeclaration": 11509,
7288
7288
  "src": "6314:9:17",
7289
7289
  "typeDescriptions": {
7290
7290
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -7396,7 +7396,7 @@
7396
7396
  "name": "abi",
7397
7397
  "nodeType": "Identifier",
7398
7398
  "overloadedDeclarations": [],
7399
- "referencedDeclaration": 11476,
7399
+ "referencedDeclaration": 11502,
7400
7400
  "src": "6404:3:17",
7401
7401
  "typeDescriptions": {
7402
7402
  "typeIdentifier": "t_magic_abi",
@@ -7443,7 +7443,7 @@
7443
7443
  "name": "keccak256",
7444
7444
  "nodeType": "Identifier",
7445
7445
  "overloadedDeclarations": [],
7446
- "referencedDeclaration": 11483,
7446
+ "referencedDeclaration": 11509,
7447
7447
  "src": "6394:9:17",
7448
7448
  "typeDescriptions": {
7449
7449
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -7561,7 +7561,7 @@
7561
7561
  "name": "ecrecover",
7562
7562
  "nodeType": "Identifier",
7563
7563
  "overloadedDeclarations": [],
7564
- "referencedDeclaration": 11481,
7564
+ "referencedDeclaration": 11507,
7565
7565
  "src": "6489:9:17",
7566
7566
  "typeDescriptions": {
7567
7567
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -7615,10 +7615,10 @@
7615
7615
  "name": "require",
7616
7616
  "nodeType": "Identifier",
7617
7617
  "overloadedDeclarations": [
7618
- 11492,
7619
- 11493
7618
+ 11518,
7619
+ 11519
7620
7620
  ],
7621
- "referencedDeclaration": 11492,
7621
+ "referencedDeclaration": 11518,
7622
7622
  "src": "6481:7:17",
7623
7623
  "typeDescriptions": {
7624
7624
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -7710,7 +7710,7 @@
7710
7710
  "referencedDeclaration": 7575,
7711
7711
  "src": "6555:7:17",
7712
7712
  "typeDescriptions": {
7713
- "typeIdentifier": "t_contract$_IFactory_$11036",
7713
+ "typeIdentifier": "t_contract$_IFactory_$11062",
7714
7714
  "typeString": "contract IFactory"
7715
7715
  }
7716
7716
  },
@@ -7721,7 +7721,7 @@
7721
7721
  "lValueRequested": false,
7722
7722
  "memberName": "getIssuer",
7723
7723
  "nodeType": "MemberAccess",
7724
- "referencedDeclaration": 10975,
7724
+ "referencedDeclaration": 10992,
7725
7725
  "src": "6555:17:17",
7726
7726
  "typeDescriptions": {
7727
7727
  "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -7753,7 +7753,7 @@
7753
7753
  "name": "this",
7754
7754
  "nodeType": "Identifier",
7755
7755
  "overloadedDeclarations": [],
7756
- "referencedDeclaration": 11549,
7756
+ "referencedDeclaration": 11575,
7757
7757
  "src": "6603:4:17",
7758
7758
  "typeDescriptions": {
7759
7759
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -8468,7 +8468,7 @@
8468
8468
  "scope": 9304,
8469
8469
  "src": "6108:745:17",
8470
8470
  "stateMutability": "nonpayable",
8471
- "superFunction": 10876,
8471
+ "superFunction": 10893,
8472
8472
  "visibility": "external"
8473
8473
  },
8474
8474
  {
@@ -8565,7 +8565,7 @@
8565
8565
  "name": "abi",
8566
8566
  "nodeType": "Identifier",
8567
8567
  "overloadedDeclarations": [],
8568
- "referencedDeclaration": 11476,
8568
+ "referencedDeclaration": 11502,
8569
8569
  "src": "7207:3:17",
8570
8570
  "typeDescriptions": {
8571
8571
  "typeIdentifier": "t_magic_abi",
@@ -8612,7 +8612,7 @@
8612
8612
  "name": "keccak256",
8613
8613
  "nodeType": "Identifier",
8614
8614
  "overloadedDeclarations": [],
8615
- "referencedDeclaration": 11483,
8615
+ "referencedDeclaration": 11509,
8616
8616
  "src": "7197:9:17",
8617
8617
  "typeDescriptions": {
8618
8618
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -8724,7 +8724,7 @@
8724
8724
  "name": "abi",
8725
8725
  "nodeType": "Identifier",
8726
8726
  "overloadedDeclarations": [],
8727
- "referencedDeclaration": 11476,
8727
+ "referencedDeclaration": 11502,
8728
8728
  "src": "7287:3:17",
8729
8729
  "typeDescriptions": {
8730
8730
  "typeIdentifier": "t_magic_abi",
@@ -8771,7 +8771,7 @@
8771
8771
  "name": "keccak256",
8772
8772
  "nodeType": "Identifier",
8773
8773
  "overloadedDeclarations": [],
8774
- "referencedDeclaration": 11483,
8774
+ "referencedDeclaration": 11509,
8775
8775
  "src": "7277:9:17",
8776
8776
  "typeDescriptions": {
8777
8777
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -8889,7 +8889,7 @@
8889
8889
  "name": "ecrecover",
8890
8890
  "nodeType": "Identifier",
8891
8891
  "overloadedDeclarations": [],
8892
- "referencedDeclaration": 11481,
8892
+ "referencedDeclaration": 11507,
8893
8893
  "src": "7372:9:17",
8894
8894
  "typeDescriptions": {
8895
8895
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -8943,10 +8943,10 @@
8943
8943
  "name": "require",
8944
8944
  "nodeType": "Identifier",
8945
8945
  "overloadedDeclarations": [
8946
- 11492,
8947
- 11493
8946
+ 11518,
8947
+ 11519
8948
8948
  ],
8949
- "referencedDeclaration": 11492,
8949
+ "referencedDeclaration": 11518,
8950
8950
  "src": "7364:7:17",
8951
8951
  "typeDescriptions": {
8952
8952
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -10057,7 +10057,7 @@
10057
10057
  "scope": 9304,
10058
10058
  "src": "6968:906:17",
10059
10059
  "stateMutability": "nonpayable",
10060
- "superFunction": 10914,
10060
+ "superFunction": 10931,
10061
10061
  "visibility": "external"
10062
10062
  },
10063
10063
  {
@@ -10154,7 +10154,7 @@
10154
10154
  "name": "abi",
10155
10155
  "nodeType": "Identifier",
10156
10156
  "overloadedDeclarations": [],
10157
- "referencedDeclaration": 11476,
10157
+ "referencedDeclaration": 11502,
10158
10158
  "src": "8158:3:17",
10159
10159
  "typeDescriptions": {
10160
10160
  "typeIdentifier": "t_magic_abi",
@@ -10201,7 +10201,7 @@
10201
10201
  "name": "keccak256",
10202
10202
  "nodeType": "Identifier",
10203
10203
  "overloadedDeclarations": [],
10204
- "referencedDeclaration": 11483,
10204
+ "referencedDeclaration": 11509,
10205
10205
  "src": "8148:9:17",
10206
10206
  "typeDescriptions": {
10207
10207
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -10313,7 +10313,7 @@
10313
10313
  "name": "abi",
10314
10314
  "nodeType": "Identifier",
10315
10315
  "overloadedDeclarations": [],
10316
- "referencedDeclaration": 11476,
10316
+ "referencedDeclaration": 11502,
10317
10317
  "src": "8238:3:17",
10318
10318
  "typeDescriptions": {
10319
10319
  "typeIdentifier": "t_magic_abi",
@@ -10360,7 +10360,7 @@
10360
10360
  "name": "keccak256",
10361
10361
  "nodeType": "Identifier",
10362
10362
  "overloadedDeclarations": [],
10363
- "referencedDeclaration": 11483,
10363
+ "referencedDeclaration": 11509,
10364
10364
  "src": "8228:9:17",
10365
10365
  "typeDescriptions": {
10366
10366
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -10478,7 +10478,7 @@
10478
10478
  "name": "ecrecover",
10479
10479
  "nodeType": "Identifier",
10480
10480
  "overloadedDeclarations": [],
10481
- "referencedDeclaration": 11481,
10481
+ "referencedDeclaration": 11507,
10482
10482
  "src": "8323:9:17",
10483
10483
  "typeDescriptions": {
10484
10484
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -10532,10 +10532,10 @@
10532
10532
  "name": "require",
10533
10533
  "nodeType": "Identifier",
10534
10534
  "overloadedDeclarations": [
10535
- 11492,
10536
- 11493
10535
+ 11518,
10536
+ 11519
10537
10537
  ],
10538
- "referencedDeclaration": 11492,
10538
+ "referencedDeclaration": 11518,
10539
10539
  "src": "8315:7:17",
10540
10540
  "typeDescriptions": {
10541
10541
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -10815,7 +10815,7 @@
10815
10815
  "referencedDeclaration": 7597,
10816
10816
  "src": "8812:6:17",
10817
10817
  "typeDescriptions": {
10818
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
10818
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
10819
10819
  "typeString": "struct ICash.token storage ref[] storage ref"
10820
10820
  }
10821
10821
  },
@@ -10840,7 +10840,7 @@
10840
10840
  "nodeType": "IndexAccess",
10841
10841
  "src": "8812:9:17",
10842
10842
  "typeDescriptions": {
10843
- "typeIdentifier": "t_struct$_token_$10806_storage",
10843
+ "typeIdentifier": "t_struct$_token_$10823_storage",
10844
10844
  "typeString": "struct ICash.token storage ref"
10845
10845
  }
10846
10846
  },
@@ -10851,7 +10851,7 @@
10851
10851
  "lValueRequested": false,
10852
10852
  "memberName": "tokenName",
10853
10853
  "nodeType": "MemberAccess",
10854
- "referencedDeclaration": 10803,
10854
+ "referencedDeclaration": 10820,
10855
10855
  "src": "8812:19:17",
10856
10856
  "typeDescriptions": {
10857
10857
  "typeIdentifier": "t_bytes32",
@@ -10946,7 +10946,7 @@
10946
10946
  "referencedDeclaration": 7597,
10947
10947
  "src": "8871:6:17",
10948
10948
  "typeDescriptions": {
10949
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
10949
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
10950
10950
  "typeString": "struct ICash.token storage ref[] storage ref"
10951
10951
  }
10952
10952
  },
@@ -10971,7 +10971,7 @@
10971
10971
  "nodeType": "IndexAccess",
10972
10972
  "src": "8871:9:17",
10973
10973
  "typeDescriptions": {
10974
- "typeIdentifier": "t_struct$_token_$10806_storage",
10974
+ "typeIdentifier": "t_struct$_token_$10823_storage",
10975
10975
  "typeString": "struct ICash.token storage ref"
10976
10976
  }
10977
10977
  },
@@ -10982,7 +10982,7 @@
10982
10982
  "lValueRequested": false,
10983
10983
  "memberName": "tokenAddress",
10984
10984
  "nodeType": "MemberAccess",
10985
- "referencedDeclaration": 10805,
10985
+ "referencedDeclaration": 10822,
10986
10986
  "src": "8871:22:17",
10987
10987
  "typeDescriptions": {
10988
10988
  "typeIdentifier": "t_address",
@@ -11403,7 +11403,7 @@
11403
11403
  "referencedDeclaration": 7597,
11404
11404
  "src": "8771:6:17",
11405
11405
  "typeDescriptions": {
11406
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
11406
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
11407
11407
  "typeString": "struct ICash.token storage ref[] storage ref"
11408
11408
  }
11409
11409
  },
@@ -12307,7 +12307,7 @@
12307
12307
  "scope": 9304,
12308
12308
  "src": "7925:1270:17",
12309
12309
  "stateMutability": "nonpayable",
12310
- "superFunction": 10859,
12310
+ "superFunction": 10876,
12311
12311
  "visibility": "external"
12312
12312
  },
12313
12313
  {
@@ -12404,7 +12404,7 @@
12404
12404
  "name": "abi",
12405
12405
  "nodeType": "Identifier",
12406
12406
  "overloadedDeclarations": [],
12407
- "referencedDeclaration": 11476,
12407
+ "referencedDeclaration": 11502,
12408
12408
  "src": "9502:3:17",
12409
12409
  "typeDescriptions": {
12410
12410
  "typeIdentifier": "t_magic_abi",
@@ -12451,7 +12451,7 @@
12451
12451
  "name": "keccak256",
12452
12452
  "nodeType": "Identifier",
12453
12453
  "overloadedDeclarations": [],
12454
- "referencedDeclaration": 11483,
12454
+ "referencedDeclaration": 11509,
12455
12455
  "src": "9492:9:17",
12456
12456
  "typeDescriptions": {
12457
12457
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -12563,7 +12563,7 @@
12563
12563
  "name": "abi",
12564
12564
  "nodeType": "Identifier",
12565
12565
  "overloadedDeclarations": [],
12566
- "referencedDeclaration": 11476,
12566
+ "referencedDeclaration": 11502,
12567
12567
  "src": "9582:3:17",
12568
12568
  "typeDescriptions": {
12569
12569
  "typeIdentifier": "t_magic_abi",
@@ -12610,7 +12610,7 @@
12610
12610
  "name": "keccak256",
12611
12611
  "nodeType": "Identifier",
12612
12612
  "overloadedDeclarations": [],
12613
- "referencedDeclaration": 11483,
12613
+ "referencedDeclaration": 11509,
12614
12614
  "src": "9572:9:17",
12615
12615
  "typeDescriptions": {
12616
12616
  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
@@ -12728,7 +12728,7 @@
12728
12728
  "name": "ecrecover",
12729
12729
  "nodeType": "Identifier",
12730
12730
  "overloadedDeclarations": [],
12731
- "referencedDeclaration": 11481,
12731
+ "referencedDeclaration": 11507,
12732
12732
  "src": "9667:9:17",
12733
12733
  "typeDescriptions": {
12734
12734
  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
@@ -12782,10 +12782,10 @@
12782
12782
  "name": "require",
12783
12783
  "nodeType": "Identifier",
12784
12784
  "overloadedDeclarations": [
12785
- 11492,
12786
- 11493
12785
+ 11518,
12786
+ 11519
12787
12787
  ],
12788
- "referencedDeclaration": 11492,
12788
+ "referencedDeclaration": 11518,
12789
12789
  "src": "9659:7:17",
12790
12790
  "typeDescriptions": {
12791
12791
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -13437,7 +13437,7 @@
13437
13437
  "name": "this",
13438
13438
  "nodeType": "Identifier",
13439
13439
  "overloadedDeclarations": [],
13440
- "referencedDeclaration": 11549,
13440
+ "referencedDeclaration": 11575,
13441
13441
  "src": "10052:4:17",
13442
13442
  "typeDescriptions": {
13443
13443
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -13546,7 +13546,7 @@
13546
13546
  "name": "this",
13547
13547
  "nodeType": "Identifier",
13548
13548
  "overloadedDeclarations": [],
13549
- "referencedDeclaration": 11549,
13549
+ "referencedDeclaration": 11575,
13550
13550
  "src": "10095:4:17",
13551
13551
  "typeDescriptions": {
13552
13552
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -14595,7 +14595,7 @@
14595
14595
  "scope": 9304,
14596
14596
  "src": "9258:1238:17",
14597
14597
  "stateMutability": "nonpayable",
14598
- "superFunction": 10895,
14598
+ "superFunction": 10912,
14599
14599
  "visibility": "external"
14600
14600
  },
14601
14601
  {
@@ -14625,7 +14625,7 @@
14625
14625
  "name": "paused",
14626
14626
  "nodeType": "Identifier",
14627
14627
  "overloadedDeclarations": [],
14628
- "referencedDeclaration": 11143,
14628
+ "referencedDeclaration": 11169,
14629
14629
  "src": "10786:6:17",
14630
14630
  "typeDescriptions": {
14631
14631
  "typeIdentifier": "t_bool",
@@ -14670,10 +14670,10 @@
14670
14670
  "name": "require",
14671
14671
  "nodeType": "Identifier",
14672
14672
  "overloadedDeclarations": [
14673
- 11492,
14674
- 11493
14673
+ 11518,
14674
+ 11519
14675
14675
  ],
14676
- "referencedDeclaration": 11492,
14676
+ "referencedDeclaration": 11518,
14677
14677
  "src": "10778:7:17",
14678
14678
  "typeDescriptions": {
14679
14679
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -14973,10 +14973,10 @@
14973
14973
  "name": "require",
14974
14974
  "nodeType": "Identifier",
14975
14975
  "overloadedDeclarations": [
14976
- 11492,
14977
- 11493
14976
+ 11518,
14977
+ 11519
14978
14978
  ],
14979
- "referencedDeclaration": 11492,
14979
+ "referencedDeclaration": 11518,
14980
14980
  "src": "11023:7:17",
14981
14981
  "typeDescriptions": {
14982
14982
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -15037,7 +15037,7 @@
15037
15037
  "name": "this",
15038
15038
  "nodeType": "Identifier",
15039
15039
  "overloadedDeclarations": [],
15040
- "referencedDeclaration": 11549,
15040
+ "referencedDeclaration": 11575,
15041
15041
  "src": "11227:4:17",
15042
15042
  "typeDescriptions": {
15043
15043
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -15141,7 +15141,7 @@
15141
15141
  "referencedDeclaration": 7575,
15142
15142
  "src": "11504:7:17",
15143
15143
  "typeDescriptions": {
15144
- "typeIdentifier": "t_contract$_IFactory_$11036",
15144
+ "typeIdentifier": "t_contract$_IFactory_$11062",
15145
15145
  "typeString": "contract IFactory"
15146
15146
  }
15147
15147
  },
@@ -15152,7 +15152,7 @@
15152
15152
  "lValueRequested": false,
15153
15153
  "memberName": "getType",
15154
15154
  "nodeType": "MemberAccess",
15155
- "referencedDeclaration": 10948,
15155
+ "referencedDeclaration": 10965,
15156
15156
  "src": "11504:15:17",
15157
15157
  "typeDescriptions": {
15158
15158
  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$",
@@ -15245,7 +15245,7 @@
15245
15245
  "referencedDeclaration": 7575,
15246
15246
  "src": "11544:7:17",
15247
15247
  "typeDescriptions": {
15248
- "typeIdentifier": "t_contract$_IFactory_$11036",
15248
+ "typeIdentifier": "t_contract$_IFactory_$11062",
15249
15249
  "typeString": "contract IFactory"
15250
15250
  }
15251
15251
  },
@@ -15256,7 +15256,7 @@
15256
15256
  "lValueRequested": false,
15257
15257
  "memberName": "getType",
15258
15258
  "nodeType": "MemberAccess",
15259
- "referencedDeclaration": 10948,
15259
+ "referencedDeclaration": 10965,
15260
15260
  "src": "11544:15:17",
15261
15261
  "typeDescriptions": {
15262
15262
  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$",
@@ -15766,7 +15766,7 @@
15766
15766
  "name": "this",
15767
15767
  "nodeType": "Identifier",
15768
15768
  "overloadedDeclarations": [],
15769
- "referencedDeclaration": 11549,
15769
+ "referencedDeclaration": 11575,
15770
15770
  "src": "11389:4:17",
15771
15771
  "typeDescriptions": {
15772
15772
  "typeIdentifier": "t_contract$_Cash_$9304",
@@ -16182,7 +16182,7 @@
16182
16182
  "referencedDeclaration": 7597,
16183
16183
  "src": "12643:6:17",
16184
16184
  "typeDescriptions": {
16185
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
16185
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
16186
16186
  "typeString": "struct ICash.token storage ref[] storage ref"
16187
16187
  }
16188
16188
  },
@@ -16207,7 +16207,7 @@
16207
16207
  "nodeType": "IndexAccess",
16208
16208
  "src": "12643:9:17",
16209
16209
  "typeDescriptions": {
16210
- "typeIdentifier": "t_struct$_token_$10806_storage",
16210
+ "typeIdentifier": "t_struct$_token_$10823_storage",
16211
16211
  "typeString": "struct ICash.token storage ref"
16212
16212
  }
16213
16213
  },
@@ -16218,7 +16218,7 @@
16218
16218
  "lValueRequested": false,
16219
16219
  "memberName": "tokenName",
16220
16220
  "nodeType": "MemberAccess",
16221
- "referencedDeclaration": 10803,
16221
+ "referencedDeclaration": 10820,
16222
16222
  "src": "12643:19:17",
16223
16223
  "typeDescriptions": {
16224
16224
  "typeIdentifier": "t_bytes32",
@@ -16415,7 +16415,7 @@
16415
16415
  "referencedDeclaration": 7597,
16416
16416
  "src": "15158:6:17",
16417
16417
  "typeDescriptions": {
16418
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
16418
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
16419
16419
  "typeString": "struct ICash.token storage ref[] storage ref"
16420
16420
  }
16421
16421
  },
@@ -16440,7 +16440,7 @@
16440
16440
  "nodeType": "IndexAccess",
16441
16441
  "src": "15158:9:17",
16442
16442
  "typeDescriptions": {
16443
- "typeIdentifier": "t_struct$_token_$10806_storage",
16443
+ "typeIdentifier": "t_struct$_token_$10823_storage",
16444
16444
  "typeString": "struct ICash.token storage ref"
16445
16445
  }
16446
16446
  },
@@ -16451,7 +16451,7 @@
16451
16451
  "lValueRequested": false,
16452
16452
  "memberName": "tokenName",
16453
16453
  "nodeType": "MemberAccess",
16454
- "referencedDeclaration": 10803,
16454
+ "referencedDeclaration": 10820,
16455
16455
  "src": "15158:19:17",
16456
16456
  "typeDescriptions": {
16457
16457
  "typeIdentifier": "t_bytes32",
@@ -16634,10 +16634,10 @@
16634
16634
  "name": "require",
16635
16635
  "nodeType": "Identifier",
16636
16636
  "overloadedDeclarations": [
16637
- 11492,
16638
- 11493
16637
+ 11518,
16638
+ 11519
16639
16639
  ],
16640
- "referencedDeclaration": 11492,
16640
+ "referencedDeclaration": 11518,
16641
16641
  "src": "15217:7:17",
16642
16642
  "typeDescriptions": {
16643
16643
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -16945,7 +16945,7 @@
16945
16945
  "referencedDeclaration": 7597,
16946
16946
  "src": "16493:6:17",
16947
16947
  "typeDescriptions": {
16948
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
16948
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
16949
16949
  "typeString": "struct ICash.token storage ref[] storage ref"
16950
16950
  }
16951
16951
  },
@@ -16970,7 +16970,7 @@
16970
16970
  "nodeType": "IndexAccess",
16971
16971
  "src": "16493:9:17",
16972
16972
  "typeDescriptions": {
16973
- "typeIdentifier": "t_struct$_token_$10806_storage",
16973
+ "typeIdentifier": "t_struct$_token_$10823_storage",
16974
16974
  "typeString": "struct ICash.token storage ref"
16975
16975
  }
16976
16976
  },
@@ -16981,7 +16981,7 @@
16981
16981
  "lValueRequested": false,
16982
16982
  "memberName": "tokenName",
16983
16983
  "nodeType": "MemberAccess",
16984
- "referencedDeclaration": 10803,
16984
+ "referencedDeclaration": 10820,
16985
16985
  "src": "16493:19:17",
16986
16986
  "typeDescriptions": {
16987
16987
  "typeIdentifier": "t_bytes32",
@@ -17071,7 +17071,7 @@
17071
17071
  "referencedDeclaration": 7597,
17072
17072
  "src": "16546:6:17",
17073
17073
  "typeDescriptions": {
17074
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
17074
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
17075
17075
  "typeString": "struct ICash.token storage ref[] storage ref"
17076
17076
  }
17077
17077
  },
@@ -17096,7 +17096,7 @@
17096
17096
  "nodeType": "IndexAccess",
17097
17097
  "src": "16546:9:17",
17098
17098
  "typeDescriptions": {
17099
- "typeIdentifier": "t_struct$_token_$10806_storage",
17099
+ "typeIdentifier": "t_struct$_token_$10823_storage",
17100
17100
  "typeString": "struct ICash.token storage ref"
17101
17101
  }
17102
17102
  },
@@ -17107,7 +17107,7 @@
17107
17107
  "lValueRequested": false,
17108
17108
  "memberName": "tokenName",
17109
17109
  "nodeType": "MemberAccess",
17110
- "referencedDeclaration": 10803,
17110
+ "referencedDeclaration": 10820,
17111
17111
  "src": "16546:19:17",
17112
17112
  "typeDescriptions": {
17113
17113
  "typeIdentifier": "t_bytes32",
@@ -17152,7 +17152,7 @@
17152
17152
  "referencedDeclaration": 7597,
17153
17153
  "src": "16582:6:17",
17154
17154
  "typeDescriptions": {
17155
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
17155
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
17156
17156
  "typeString": "struct ICash.token storage ref[] storage ref"
17157
17157
  }
17158
17158
  },
@@ -17177,7 +17177,7 @@
17177
17177
  "nodeType": "IndexAccess",
17178
17178
  "src": "16582:9:17",
17179
17179
  "typeDescriptions": {
17180
- "typeIdentifier": "t_struct$_token_$10806_storage",
17180
+ "typeIdentifier": "t_struct$_token_$10823_storage",
17181
17181
  "typeString": "struct ICash.token storage ref"
17182
17182
  }
17183
17183
  },
@@ -17188,7 +17188,7 @@
17188
17188
  "lValueRequested": false,
17189
17189
  "memberName": "tokenName",
17190
17190
  "nodeType": "MemberAccess",
17191
- "referencedDeclaration": 10803,
17191
+ "referencedDeclaration": 10820,
17192
17192
  "src": "16582:19:17",
17193
17193
  "typeDescriptions": {
17194
17194
  "typeIdentifier": "t_bytes32",
@@ -17551,7 +17551,7 @@
17551
17551
  "referencedDeclaration": 7597,
17552
17552
  "src": "16853:6:17",
17553
17553
  "typeDescriptions": {
17554
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
17554
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
17555
17555
  "typeString": "struct ICash.token storage ref[] storage ref"
17556
17556
  }
17557
17557
  },
@@ -17576,7 +17576,7 @@
17576
17576
  "nodeType": "IndexAccess",
17577
17577
  "src": "16853:9:17",
17578
17578
  "typeDescriptions": {
17579
- "typeIdentifier": "t_struct$_token_$10806_storage",
17579
+ "typeIdentifier": "t_struct$_token_$10823_storage",
17580
17580
  "typeString": "struct ICash.token storage ref"
17581
17581
  }
17582
17582
  },
@@ -17587,7 +17587,7 @@
17587
17587
  "lValueRequested": false,
17588
17588
  "memberName": "tokenName",
17589
17589
  "nodeType": "MemberAccess",
17590
- "referencedDeclaration": 10803,
17590
+ "referencedDeclaration": 10820,
17591
17591
  "src": "16853:19:17",
17592
17592
  "typeDescriptions": {
17593
17593
  "typeIdentifier": "t_bytes32",
@@ -17682,7 +17682,7 @@
17682
17682
  "referencedDeclaration": 7597,
17683
17683
  "src": "16928:6:17",
17684
17684
  "typeDescriptions": {
17685
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
17685
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
17686
17686
  "typeString": "struct ICash.token storage ref[] storage ref"
17687
17687
  }
17688
17688
  },
@@ -17707,7 +17707,7 @@
17707
17707
  "nodeType": "IndexAccess",
17708
17708
  "src": "16928:9:17",
17709
17709
  "typeDescriptions": {
17710
- "typeIdentifier": "t_struct$_token_$10806_storage",
17710
+ "typeIdentifier": "t_struct$_token_$10823_storage",
17711
17711
  "typeString": "struct ICash.token storage ref"
17712
17712
  }
17713
17713
  },
@@ -17718,7 +17718,7 @@
17718
17718
  "lValueRequested": false,
17719
17719
  "memberName": "tokenName",
17720
17720
  "nodeType": "MemberAccess",
17721
- "referencedDeclaration": 10803,
17721
+ "referencedDeclaration": 10820,
17722
17722
  "src": "16928:19:17",
17723
17723
  "typeDescriptions": {
17724
17724
  "typeIdentifier": "t_bytes32",
@@ -17892,7 +17892,7 @@
17892
17892
  "referencedDeclaration": 7597,
17893
17893
  "src": "17061:6:17",
17894
17894
  "typeDescriptions": {
17895
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
17895
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
17896
17896
  "typeString": "struct ICash.token storage ref[] storage ref"
17897
17897
  }
17898
17898
  },
@@ -17917,7 +17917,7 @@
17917
17917
  "nodeType": "IndexAccess",
17918
17918
  "src": "17061:9:17",
17919
17919
  "typeDescriptions": {
17920
- "typeIdentifier": "t_struct$_token_$10806_storage",
17920
+ "typeIdentifier": "t_struct$_token_$10823_storage",
17921
17921
  "typeString": "struct ICash.token storage ref"
17922
17922
  }
17923
17923
  },
@@ -17928,7 +17928,7 @@
17928
17928
  "lValueRequested": false,
17929
17929
  "memberName": "tokenName",
17930
17930
  "nodeType": "MemberAccess",
17931
- "referencedDeclaration": 10803,
17931
+ "referencedDeclaration": 10820,
17932
17932
  "src": "17061:19:17",
17933
17933
  "typeDescriptions": {
17934
17934
  "typeIdentifier": "t_bytes32",
@@ -18023,7 +18023,7 @@
18023
18023
  "referencedDeclaration": 7597,
18024
18024
  "src": "17135:6:17",
18025
18025
  "typeDescriptions": {
18026
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
18026
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
18027
18027
  "typeString": "struct ICash.token storage ref[] storage ref"
18028
18028
  }
18029
18029
  },
@@ -18048,7 +18048,7 @@
18048
18048
  "nodeType": "IndexAccess",
18049
18049
  "src": "17135:9:17",
18050
18050
  "typeDescriptions": {
18051
- "typeIdentifier": "t_struct$_token_$10806_storage",
18051
+ "typeIdentifier": "t_struct$_token_$10823_storage",
18052
18052
  "typeString": "struct ICash.token storage ref"
18053
18053
  }
18054
18054
  },
@@ -18059,7 +18059,7 @@
18059
18059
  "lValueRequested": false,
18060
18060
  "memberName": "tokenName",
18061
18061
  "nodeType": "MemberAccess",
18062
- "referencedDeclaration": 10803,
18062
+ "referencedDeclaration": 10820,
18063
18063
  "src": "17135:19:17",
18064
18064
  "typeDescriptions": {
18065
18065
  "typeIdentifier": "t_bytes32",
@@ -18210,7 +18210,7 @@
18210
18210
  "referencedDeclaration": 7597,
18211
18211
  "src": "17232:6:17",
18212
18212
  "typeDescriptions": {
18213
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
18213
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
18214
18214
  "typeString": "struct ICash.token storage ref[] storage ref"
18215
18215
  }
18216
18216
  },
@@ -18235,7 +18235,7 @@
18235
18235
  "nodeType": "IndexAccess",
18236
18236
  "src": "17232:9:17",
18237
18237
  "typeDescriptions": {
18238
- "typeIdentifier": "t_struct$_token_$10806_storage",
18238
+ "typeIdentifier": "t_struct$_token_$10823_storage",
18239
18239
  "typeString": "struct ICash.token storage ref"
18240
18240
  }
18241
18241
  },
@@ -18246,7 +18246,7 @@
18246
18246
  "lValueRequested": false,
18247
18247
  "memberName": "tokenName",
18248
18248
  "nodeType": "MemberAccess",
18249
- "referencedDeclaration": 10803,
18249
+ "referencedDeclaration": 10820,
18250
18250
  "src": "17232:19:17",
18251
18251
  "typeDescriptions": {
18252
18252
  "typeIdentifier": "t_bytes32",
@@ -18456,7 +18456,7 @@
18456
18456
  "referencedDeclaration": 7597,
18457
18457
  "src": "15420:6:17",
18458
18458
  "typeDescriptions": {
18459
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
18459
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
18460
18460
  "typeString": "struct ICash.token storage ref[] storage ref"
18461
18461
  }
18462
18462
  },
@@ -18481,7 +18481,7 @@
18481
18481
  "nodeType": "IndexAccess",
18482
18482
  "src": "15420:9:17",
18483
18483
  "typeDescriptions": {
18484
- "typeIdentifier": "t_struct$_token_$10806_storage",
18484
+ "typeIdentifier": "t_struct$_token_$10823_storage",
18485
18485
  "typeString": "struct ICash.token storage ref"
18486
18486
  }
18487
18487
  },
@@ -18492,7 +18492,7 @@
18492
18492
  "lValueRequested": false,
18493
18493
  "memberName": "tokenName",
18494
18494
  "nodeType": "MemberAccess",
18495
- "referencedDeclaration": 10803,
18495
+ "referencedDeclaration": 10820,
18496
18496
  "src": "15420:19:17",
18497
18497
  "typeDescriptions": {
18498
18498
  "typeIdentifier": "t_bytes32",
@@ -18705,7 +18705,7 @@
18705
18705
  "referencedDeclaration": 7597,
18706
18706
  "src": "15608:6:17",
18707
18707
  "typeDescriptions": {
18708
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
18708
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
18709
18709
  "typeString": "struct ICash.token storage ref[] storage ref"
18710
18710
  }
18711
18711
  },
@@ -18730,7 +18730,7 @@
18730
18730
  "nodeType": "IndexAccess",
18731
18731
  "src": "15608:9:17",
18732
18732
  "typeDescriptions": {
18733
- "typeIdentifier": "t_struct$_token_$10806_storage",
18733
+ "typeIdentifier": "t_struct$_token_$10823_storage",
18734
18734
  "typeString": "struct ICash.token storage ref"
18735
18735
  }
18736
18736
  },
@@ -18741,7 +18741,7 @@
18741
18741
  "lValueRequested": false,
18742
18742
  "memberName": "tokenName",
18743
18743
  "nodeType": "MemberAccess",
18744
- "referencedDeclaration": 10803,
18744
+ "referencedDeclaration": 10820,
18745
18745
  "src": "15608:19:17",
18746
18746
  "typeDescriptions": {
18747
18747
  "typeIdentifier": "t_bytes32",
@@ -18801,7 +18801,7 @@
18801
18801
  "referencedDeclaration": 7597,
18802
18802
  "src": "15780:6:17",
18803
18803
  "typeDescriptions": {
18804
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
18804
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
18805
18805
  "typeString": "struct ICash.token storage ref[] storage ref"
18806
18806
  }
18807
18807
  },
@@ -18826,7 +18826,7 @@
18826
18826
  "nodeType": "IndexAccess",
18827
18827
  "src": "15780:9:17",
18828
18828
  "typeDescriptions": {
18829
- "typeIdentifier": "t_struct$_token_$10806_storage",
18829
+ "typeIdentifier": "t_struct$_token_$10823_storage",
18830
18830
  "typeString": "struct ICash.token storage ref"
18831
18831
  }
18832
18832
  },
@@ -18837,7 +18837,7 @@
18837
18837
  "lValueRequested": false,
18838
18838
  "memberName": "tokenName",
18839
18839
  "nodeType": "MemberAccess",
18840
- "referencedDeclaration": 10803,
18840
+ "referencedDeclaration": 10820,
18841
18841
  "src": "15780:19:17",
18842
18842
  "typeDescriptions": {
18843
18843
  "typeIdentifier": "t_bytes32",
@@ -18985,7 +18985,7 @@
18985
18985
  "referencedDeclaration": 7597,
18986
18986
  "src": "15983:6:17",
18987
18987
  "typeDescriptions": {
18988
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
18988
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
18989
18989
  "typeString": "struct ICash.token storage ref[] storage ref"
18990
18990
  }
18991
18991
  },
@@ -19010,7 +19010,7 @@
19010
19010
  "nodeType": "IndexAccess",
19011
19011
  "src": "15983:9:17",
19012
19012
  "typeDescriptions": {
19013
- "typeIdentifier": "t_struct$_token_$10806_storage",
19013
+ "typeIdentifier": "t_struct$_token_$10823_storage",
19014
19014
  "typeString": "struct ICash.token storage ref"
19015
19015
  }
19016
19016
  },
@@ -19021,7 +19021,7 @@
19021
19021
  "lValueRequested": false,
19022
19022
  "memberName": "tokenAddress",
19023
19023
  "nodeType": "MemberAccess",
19024
- "referencedDeclaration": 10805,
19024
+ "referencedDeclaration": 10822,
19025
19025
  "src": "15983:22:17",
19026
19026
  "typeDescriptions": {
19027
19027
  "typeIdentifier": "t_address",
@@ -19334,7 +19334,7 @@
19334
19334
  "referencedDeclaration": 7597,
19335
19335
  "src": "16179:6:17",
19336
19336
  "typeDescriptions": {
19337
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
19337
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
19338
19338
  "typeString": "struct ICash.token storage ref[] storage ref"
19339
19339
  }
19340
19340
  },
@@ -19359,7 +19359,7 @@
19359
19359
  "nodeType": "IndexAccess",
19360
19360
  "src": "16179:9:17",
19361
19361
  "typeDescriptions": {
19362
- "typeIdentifier": "t_struct$_token_$10806_storage",
19362
+ "typeIdentifier": "t_struct$_token_$10823_storage",
19363
19363
  "typeString": "struct ICash.token storage ref"
19364
19364
  }
19365
19365
  },
@@ -19370,7 +19370,7 @@
19370
19370
  "lValueRequested": false,
19371
19371
  "memberName": "tokenName",
19372
19372
  "nodeType": "MemberAccess",
19373
- "referencedDeclaration": 10803,
19373
+ "referencedDeclaration": 10820,
19374
19374
  "src": "16179:19:17",
19375
19375
  "typeDescriptions": {
19376
19376
  "typeIdentifier": "t_bytes32",
@@ -19587,7 +19587,7 @@
19587
19587
  "referencedDeclaration": 7597,
19588
19588
  "src": "17436:6:17",
19589
19589
  "typeDescriptions": {
19590
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
19590
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
19591
19591
  "typeString": "struct ICash.token storage ref[] storage ref"
19592
19592
  }
19593
19593
  },
@@ -19612,7 +19612,7 @@
19612
19612
  "nodeType": "IndexAccess",
19613
19613
  "src": "17436:9:17",
19614
19614
  "typeDescriptions": {
19615
- "typeIdentifier": "t_struct$_token_$10806_storage",
19615
+ "typeIdentifier": "t_struct$_token_$10823_storage",
19616
19616
  "typeString": "struct ICash.token storage ref"
19617
19617
  }
19618
19618
  },
@@ -19623,7 +19623,7 @@
19623
19623
  "lValueRequested": false,
19624
19624
  "memberName": "tokenName",
19625
19625
  "nodeType": "MemberAccess",
19626
- "referencedDeclaration": 10803,
19626
+ "referencedDeclaration": 10820,
19627
19627
  "src": "17436:19:17",
19628
19628
  "typeDescriptions": {
19629
19629
  "typeIdentifier": "t_bytes32",
@@ -19786,7 +19786,7 @@
19786
19786
  "referencedDeclaration": 7597,
19787
19787
  "src": "17588:6:17",
19788
19788
  "typeDescriptions": {
19789
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
19789
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
19790
19790
  "typeString": "struct ICash.token storage ref[] storage ref"
19791
19791
  }
19792
19792
  },
@@ -19811,7 +19811,7 @@
19811
19811
  "nodeType": "IndexAccess",
19812
19812
  "src": "17588:9:17",
19813
19813
  "typeDescriptions": {
19814
- "typeIdentifier": "t_struct$_token_$10806_storage",
19814
+ "typeIdentifier": "t_struct$_token_$10823_storage",
19815
19815
  "typeString": "struct ICash.token storage ref"
19816
19816
  }
19817
19817
  },
@@ -19822,7 +19822,7 @@
19822
19822
  "lValueRequested": false,
19823
19823
  "memberName": "tokenName",
19824
19824
  "nodeType": "MemberAccess",
19825
- "referencedDeclaration": 10803,
19825
+ "referencedDeclaration": 10820,
19826
19826
  "src": "17588:19:17",
19827
19827
  "typeDescriptions": {
19828
19828
  "typeIdentifier": "t_bytes32",
@@ -20072,7 +20072,7 @@
20072
20072
  "referencedDeclaration": 7597,
20073
20073
  "src": "12784:6:17",
20074
20074
  "typeDescriptions": {
20075
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
20075
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
20076
20076
  "typeString": "struct ICash.token storage ref[] storage ref"
20077
20077
  }
20078
20078
  },
@@ -20097,7 +20097,7 @@
20097
20097
  "nodeType": "IndexAccess",
20098
20098
  "src": "12784:9:17",
20099
20099
  "typeDescriptions": {
20100
- "typeIdentifier": "t_struct$_token_$10806_storage",
20100
+ "typeIdentifier": "t_struct$_token_$10823_storage",
20101
20101
  "typeString": "struct ICash.token storage ref"
20102
20102
  }
20103
20103
  },
@@ -20108,7 +20108,7 @@
20108
20108
  "lValueRequested": false,
20109
20109
  "memberName": "tokenName",
20110
20110
  "nodeType": "MemberAccess",
20111
- "referencedDeclaration": 10803,
20111
+ "referencedDeclaration": 10820,
20112
20112
  "src": "12784:19:17",
20113
20113
  "typeDescriptions": {
20114
20114
  "typeIdentifier": "t_bytes32",
@@ -20251,7 +20251,7 @@
20251
20251
  "referencedDeclaration": 7597,
20252
20252
  "src": "12837:6:17",
20253
20253
  "typeDescriptions": {
20254
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
20254
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
20255
20255
  "typeString": "struct ICash.token storage ref[] storage ref"
20256
20256
  }
20257
20257
  },
@@ -20276,7 +20276,7 @@
20276
20276
  "nodeType": "IndexAccess",
20277
20277
  "src": "12837:9:17",
20278
20278
  "typeDescriptions": {
20279
- "typeIdentifier": "t_struct$_token_$10806_storage",
20279
+ "typeIdentifier": "t_struct$_token_$10823_storage",
20280
20280
  "typeString": "struct ICash.token storage ref"
20281
20281
  }
20282
20282
  },
@@ -20287,7 +20287,7 @@
20287
20287
  "lValueRequested": false,
20288
20288
  "memberName": "tokenName",
20289
20289
  "nodeType": "MemberAccess",
20290
- "referencedDeclaration": 10803,
20290
+ "referencedDeclaration": 10820,
20291
20291
  "src": "12837:19:17",
20292
20292
  "typeDescriptions": {
20293
20293
  "typeIdentifier": "t_bytes32",
@@ -20441,7 +20441,7 @@
20441
20441
  "referencedDeclaration": 7597,
20442
20442
  "src": "12909:6:17",
20443
20443
  "typeDescriptions": {
20444
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
20444
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
20445
20445
  "typeString": "struct ICash.token storage ref[] storage ref"
20446
20446
  }
20447
20447
  },
@@ -20466,7 +20466,7 @@
20466
20466
  "nodeType": "IndexAccess",
20467
20467
  "src": "12909:9:17",
20468
20468
  "typeDescriptions": {
20469
- "typeIdentifier": "t_struct$_token_$10806_storage",
20469
+ "typeIdentifier": "t_struct$_token_$10823_storage",
20470
20470
  "typeString": "struct ICash.token storage ref"
20471
20471
  }
20472
20472
  },
@@ -20477,7 +20477,7 @@
20477
20477
  "lValueRequested": false,
20478
20478
  "memberName": "tokenName",
20479
20479
  "nodeType": "MemberAccess",
20480
- "referencedDeclaration": 10803,
20480
+ "referencedDeclaration": 10820,
20481
20481
  "src": "12909:19:17",
20482
20482
  "typeDescriptions": {
20483
20483
  "typeIdentifier": "t_bytes32",
@@ -20572,7 +20572,7 @@
20572
20572
  "referencedDeclaration": 7597,
20573
20573
  "src": "12981:6:17",
20574
20574
  "typeDescriptions": {
20575
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
20575
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
20576
20576
  "typeString": "struct ICash.token storage ref[] storage ref"
20577
20577
  }
20578
20578
  },
@@ -20597,7 +20597,7 @@
20597
20597
  "nodeType": "IndexAccess",
20598
20598
  "src": "12981:9:17",
20599
20599
  "typeDescriptions": {
20600
- "typeIdentifier": "t_struct$_token_$10806_storage",
20600
+ "typeIdentifier": "t_struct$_token_$10823_storage",
20601
20601
  "typeString": "struct ICash.token storage ref"
20602
20602
  }
20603
20603
  },
@@ -20608,7 +20608,7 @@
20608
20608
  "lValueRequested": false,
20609
20609
  "memberName": "tokenName",
20610
20610
  "nodeType": "MemberAccess",
20611
- "referencedDeclaration": 10803,
20611
+ "referencedDeclaration": 10820,
20612
20612
  "src": "12981:19:17",
20613
20613
  "typeDescriptions": {
20614
20614
  "typeIdentifier": "t_bytes32",
@@ -20782,7 +20782,7 @@
20782
20782
  "referencedDeclaration": 7597,
20783
20783
  "src": "13060:6:17",
20784
20784
  "typeDescriptions": {
20785
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
20785
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
20786
20786
  "typeString": "struct ICash.token storage ref[] storage ref"
20787
20787
  }
20788
20788
  },
@@ -20807,7 +20807,7 @@
20807
20807
  "nodeType": "IndexAccess",
20808
20808
  "src": "13060:9:17",
20809
20809
  "typeDescriptions": {
20810
- "typeIdentifier": "t_struct$_token_$10806_storage",
20810
+ "typeIdentifier": "t_struct$_token_$10823_storage",
20811
20811
  "typeString": "struct ICash.token storage ref"
20812
20812
  }
20813
20813
  },
@@ -20818,7 +20818,7 @@
20818
20818
  "lValueRequested": false,
20819
20819
  "memberName": "tokenName",
20820
20820
  "nodeType": "MemberAccess",
20821
- "referencedDeclaration": 10803,
20821
+ "referencedDeclaration": 10820,
20822
20822
  "src": "13060:19:17",
20823
20823
  "typeDescriptions": {
20824
20824
  "typeIdentifier": "t_bytes32",
@@ -20913,7 +20913,7 @@
20913
20913
  "referencedDeclaration": 7597,
20914
20914
  "src": "13131:6:17",
20915
20915
  "typeDescriptions": {
20916
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
20916
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
20917
20917
  "typeString": "struct ICash.token storage ref[] storage ref"
20918
20918
  }
20919
20919
  },
@@ -20938,7 +20938,7 @@
20938
20938
  "nodeType": "IndexAccess",
20939
20939
  "src": "13131:9:17",
20940
20940
  "typeDescriptions": {
20941
- "typeIdentifier": "t_struct$_token_$10806_storage",
20941
+ "typeIdentifier": "t_struct$_token_$10823_storage",
20942
20942
  "typeString": "struct ICash.token storage ref"
20943
20943
  }
20944
20944
  },
@@ -20949,7 +20949,7 @@
20949
20949
  "lValueRequested": false,
20950
20950
  "memberName": "tokenName",
20951
20951
  "nodeType": "MemberAccess",
20952
- "referencedDeclaration": 10803,
20952
+ "referencedDeclaration": 10820,
20953
20953
  "src": "13131:19:17",
20954
20954
  "typeDescriptions": {
20955
20955
  "typeIdentifier": "t_bytes32",
@@ -21102,10 +21102,10 @@
21102
21102
  "name": "require",
21103
21103
  "nodeType": "Identifier",
21104
21104
  "overloadedDeclarations": [
21105
- 11492,
21106
- 11493
21105
+ 11518,
21106
+ 11519
21107
21107
  ],
21108
- "referencedDeclaration": 11492,
21108
+ "referencedDeclaration": 11518,
21109
21109
  "src": "13192:7:17",
21110
21110
  "typeDescriptions": {
21111
21111
  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
@@ -21387,7 +21387,7 @@
21387
21387
  "referencedDeclaration": 7597,
21388
21388
  "src": "14136:6:17",
21389
21389
  "typeDescriptions": {
21390
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
21390
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
21391
21391
  "typeString": "struct ICash.token storage ref[] storage ref"
21392
21392
  }
21393
21393
  },
@@ -21412,7 +21412,7 @@
21412
21412
  "nodeType": "IndexAccess",
21413
21413
  "src": "14136:9:17",
21414
21414
  "typeDescriptions": {
21415
- "typeIdentifier": "t_struct$_token_$10806_storage",
21415
+ "typeIdentifier": "t_struct$_token_$10823_storage",
21416
21416
  "typeString": "struct ICash.token storage ref"
21417
21417
  }
21418
21418
  },
@@ -21423,7 +21423,7 @@
21423
21423
  "lValueRequested": false,
21424
21424
  "memberName": "tokenName",
21425
21425
  "nodeType": "MemberAccess",
21426
- "referencedDeclaration": 10803,
21426
+ "referencedDeclaration": 10820,
21427
21427
  "src": "14136:19:17",
21428
21428
  "typeDescriptions": {
21429
21429
  "typeIdentifier": "t_bytes32",
@@ -21793,7 +21793,7 @@
21793
21793
  "referencedDeclaration": 7597,
21794
21794
  "src": "14413:6:17",
21795
21795
  "typeDescriptions": {
21796
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
21796
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
21797
21797
  "typeString": "struct ICash.token storage ref[] storage ref"
21798
21798
  }
21799
21799
  },
@@ -21818,7 +21818,7 @@
21818
21818
  "nodeType": "IndexAccess",
21819
21819
  "src": "14413:9:17",
21820
21820
  "typeDescriptions": {
21821
- "typeIdentifier": "t_struct$_token_$10806_storage",
21821
+ "typeIdentifier": "t_struct$_token_$10823_storage",
21822
21822
  "typeString": "struct ICash.token storage ref"
21823
21823
  }
21824
21824
  },
@@ -21829,7 +21829,7 @@
21829
21829
  "lValueRequested": false,
21830
21830
  "memberName": "tokenName",
21831
21831
  "nodeType": "MemberAccess",
21832
- "referencedDeclaration": 10803,
21832
+ "referencedDeclaration": 10820,
21833
21833
  "src": "14413:19:17",
21834
21834
  "typeDescriptions": {
21835
21835
  "typeIdentifier": "t_bytes32",
@@ -21924,7 +21924,7 @@
21924
21924
  "referencedDeclaration": 7597,
21925
21925
  "src": "14488:6:17",
21926
21926
  "typeDescriptions": {
21927
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
21927
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
21928
21928
  "typeString": "struct ICash.token storage ref[] storage ref"
21929
21929
  }
21930
21930
  },
@@ -21949,7 +21949,7 @@
21949
21949
  "nodeType": "IndexAccess",
21950
21950
  "src": "14488:9:17",
21951
21951
  "typeDescriptions": {
21952
- "typeIdentifier": "t_struct$_token_$10806_storage",
21952
+ "typeIdentifier": "t_struct$_token_$10823_storage",
21953
21953
  "typeString": "struct ICash.token storage ref"
21954
21954
  }
21955
21955
  },
@@ -21960,7 +21960,7 @@
21960
21960
  "lValueRequested": false,
21961
21961
  "memberName": "tokenName",
21962
21962
  "nodeType": "MemberAccess",
21963
- "referencedDeclaration": 10803,
21963
+ "referencedDeclaration": 10820,
21964
21964
  "src": "14488:19:17",
21965
21965
  "typeDescriptions": {
21966
21966
  "typeIdentifier": "t_bytes32",
@@ -22134,7 +22134,7 @@
22134
22134
  "referencedDeclaration": 7597,
22135
22135
  "src": "14621:6:17",
22136
22136
  "typeDescriptions": {
22137
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
22137
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
22138
22138
  "typeString": "struct ICash.token storage ref[] storage ref"
22139
22139
  }
22140
22140
  },
@@ -22159,7 +22159,7 @@
22159
22159
  "nodeType": "IndexAccess",
22160
22160
  "src": "14621:9:17",
22161
22161
  "typeDescriptions": {
22162
- "typeIdentifier": "t_struct$_token_$10806_storage",
22162
+ "typeIdentifier": "t_struct$_token_$10823_storage",
22163
22163
  "typeString": "struct ICash.token storage ref"
22164
22164
  }
22165
22165
  },
@@ -22170,7 +22170,7 @@
22170
22170
  "lValueRequested": false,
22171
22171
  "memberName": "tokenName",
22172
22172
  "nodeType": "MemberAccess",
22173
- "referencedDeclaration": 10803,
22173
+ "referencedDeclaration": 10820,
22174
22174
  "src": "14621:19:17",
22175
22175
  "typeDescriptions": {
22176
22176
  "typeIdentifier": "t_bytes32",
@@ -22265,7 +22265,7 @@
22265
22265
  "referencedDeclaration": 7597,
22266
22266
  "src": "14695:6:17",
22267
22267
  "typeDescriptions": {
22268
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
22268
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
22269
22269
  "typeString": "struct ICash.token storage ref[] storage ref"
22270
22270
  }
22271
22271
  },
@@ -22290,7 +22290,7 @@
22290
22290
  "nodeType": "IndexAccess",
22291
22291
  "src": "14695:9:17",
22292
22292
  "typeDescriptions": {
22293
- "typeIdentifier": "t_struct$_token_$10806_storage",
22293
+ "typeIdentifier": "t_struct$_token_$10823_storage",
22294
22294
  "typeString": "struct ICash.token storage ref"
22295
22295
  }
22296
22296
  },
@@ -22301,7 +22301,7 @@
22301
22301
  "lValueRequested": false,
22302
22302
  "memberName": "tokenName",
22303
22303
  "nodeType": "MemberAccess",
22304
- "referencedDeclaration": 10803,
22304
+ "referencedDeclaration": 10820,
22305
22305
  "src": "14695:19:17",
22306
22306
  "typeDescriptions": {
22307
22307
  "typeIdentifier": "t_bytes32",
@@ -22452,7 +22452,7 @@
22452
22452
  "referencedDeclaration": 7597,
22453
22453
  "src": "14815:6:17",
22454
22454
  "typeDescriptions": {
22455
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
22455
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
22456
22456
  "typeString": "struct ICash.token storage ref[] storage ref"
22457
22457
  }
22458
22458
  },
@@ -22477,7 +22477,7 @@
22477
22477
  "nodeType": "IndexAccess",
22478
22478
  "src": "14815:9:17",
22479
22479
  "typeDescriptions": {
22480
- "typeIdentifier": "t_struct$_token_$10806_storage",
22480
+ "typeIdentifier": "t_struct$_token_$10823_storage",
22481
22481
  "typeString": "struct ICash.token storage ref"
22482
22482
  }
22483
22483
  },
@@ -22488,7 +22488,7 @@
22488
22488
  "lValueRequested": false,
22489
22489
  "memberName": "tokenName",
22490
22490
  "nodeType": "MemberAccess",
22491
- "referencedDeclaration": 10803,
22491
+ "referencedDeclaration": 10820,
22492
22492
  "src": "14815:19:17",
22493
22493
  "typeDescriptions": {
22494
22494
  "typeIdentifier": "t_bytes32",
@@ -22768,7 +22768,7 @@
22768
22768
  "referencedDeclaration": 7597,
22769
22769
  "src": "13463:6:17",
22770
22770
  "typeDescriptions": {
22771
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
22771
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
22772
22772
  "typeString": "struct ICash.token storage ref[] storage ref"
22773
22773
  }
22774
22774
  },
@@ -22793,7 +22793,7 @@
22793
22793
  "nodeType": "IndexAccess",
22794
22794
  "src": "13463:9:17",
22795
22795
  "typeDescriptions": {
22796
- "typeIdentifier": "t_struct$_token_$10806_storage",
22796
+ "typeIdentifier": "t_struct$_token_$10823_storage",
22797
22797
  "typeString": "struct ICash.token storage ref"
22798
22798
  }
22799
22799
  },
@@ -22804,7 +22804,7 @@
22804
22804
  "lValueRequested": false,
22805
22805
  "memberName": "tokenName",
22806
22806
  "nodeType": "MemberAccess",
22807
- "referencedDeclaration": 10803,
22807
+ "referencedDeclaration": 10820,
22808
22808
  "src": "13463:19:17",
22809
22809
  "typeDescriptions": {
22810
22810
  "typeIdentifier": "t_bytes32",
@@ -22952,7 +22952,7 @@
22952
22952
  "referencedDeclaration": 7597,
22953
22953
  "src": "13662:6:17",
22954
22954
  "typeDescriptions": {
22955
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
22955
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
22956
22956
  "typeString": "struct ICash.token storage ref[] storage ref"
22957
22957
  }
22958
22958
  },
@@ -22977,7 +22977,7 @@
22977
22977
  "nodeType": "IndexAccess",
22978
22978
  "src": "13662:9:17",
22979
22979
  "typeDescriptions": {
22980
- "typeIdentifier": "t_struct$_token_$10806_storage",
22980
+ "typeIdentifier": "t_struct$_token_$10823_storage",
22981
22981
  "typeString": "struct ICash.token storage ref"
22982
22982
  }
22983
22983
  },
@@ -22988,7 +22988,7 @@
22988
22988
  "lValueRequested": false,
22989
22989
  "memberName": "tokenAddress",
22990
22990
  "nodeType": "MemberAccess",
22991
- "referencedDeclaration": 10805,
22991
+ "referencedDeclaration": 10822,
22992
22992
  "src": "13662:22:17",
22993
22993
  "typeDescriptions": {
22994
22994
  "typeIdentifier": "t_address",
@@ -23301,7 +23301,7 @@
23301
23301
  "referencedDeclaration": 7597,
23302
23302
  "src": "13838:6:17",
23303
23303
  "typeDescriptions": {
23304
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
23304
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
23305
23305
  "typeString": "struct ICash.token storage ref[] storage ref"
23306
23306
  }
23307
23307
  },
@@ -23326,7 +23326,7 @@
23326
23326
  "nodeType": "IndexAccess",
23327
23327
  "src": "13838:9:17",
23328
23328
  "typeDescriptions": {
23329
- "typeIdentifier": "t_struct$_token_$10806_storage",
23329
+ "typeIdentifier": "t_struct$_token_$10823_storage",
23330
23330
  "typeString": "struct ICash.token storage ref"
23331
23331
  }
23332
23332
  },
@@ -23337,7 +23337,7 @@
23337
23337
  "lValueRequested": false,
23338
23338
  "memberName": "tokenName",
23339
23339
  "nodeType": "MemberAccess",
23340
- "referencedDeclaration": 10803,
23340
+ "referencedDeclaration": 10820,
23341
23341
  "src": "13838:19:17",
23342
23342
  "typeDescriptions": {
23343
23343
  "typeIdentifier": "t_bytes32",
@@ -23663,7 +23663,7 @@
23663
23663
  "referencedDeclaration": 7597,
23664
23664
  "src": "12411:6:17",
23665
23665
  "typeDescriptions": {
23666
- "typeIdentifier": "t_array$_t_struct$_token_$10806_storage_$dyn_storage",
23666
+ "typeIdentifier": "t_array$_t_struct$_token_$10823_storage_$dyn_storage",
23667
23667
  "typeString": "struct ICash.token storage ref[] storage ref"
23668
23668
  }
23669
23669
  },
@@ -24149,7 +24149,7 @@
24149
24149
  "referencedDeclaration": 7577,
24150
24150
  "src": "17890:5:17",
24151
24151
  "typeDescriptions": {
24152
- "typeIdentifier": "t_contract$_IRates_$11103",
24152
+ "typeIdentifier": "t_contract$_IRates_$11129",
24153
24153
  "typeString": "contract IRates"
24154
24154
  }
24155
24155
  },
@@ -24160,7 +24160,7 @@
24160
24160
  "lValueRequested": false,
24161
24161
  "memberName": "getFee",
24162
24162
  "nodeType": "MemberAccess",
24163
- "referencedDeclaration": 11084,
24163
+ "referencedDeclaration": 11110,
24164
24164
  "src": "17890:12:17",
24165
24165
  "typeDescriptions": {
24166
24166
  "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
@@ -24415,7 +24415,7 @@
24415
24415
  "referencedDeclaration": 7577,
24416
24416
  "src": "17990:5:17",
24417
24417
  "typeDescriptions": {
24418
- "typeIdentifier": "t_contract$_IRates_$11103",
24418
+ "typeIdentifier": "t_contract$_IRates_$11129",
24419
24419
  "typeString": "contract IRates"
24420
24420
  }
24421
24421
  },
@@ -24426,7 +24426,7 @@
24426
24426
  "lValueRequested": false,
24427
24427
  "memberName": "getFeeToSetter",
24428
24428
  "nodeType": "MemberAccess",
24429
- "referencedDeclaration": 11072,
24429
+ "referencedDeclaration": 11098,
24430
24430
  "src": "17990:20:17",
24431
24431
  "typeDescriptions": {
24432
24432
  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
@@ -25662,7 +25662,7 @@
25662
25662
  "name": "_pause",
25663
25663
  "nodeType": "Identifier",
25664
25664
  "overloadedDeclarations": [],
25665
- "referencedDeclaration": 11158,
25665
+ "referencedDeclaration": 11184,
25666
25666
  "src": "18580:6:17",
25667
25667
  "typeDescriptions": {
25668
25668
  "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
@@ -25750,7 +25750,7 @@
25750
25750
  "name": "_unpause",
25751
25751
  "nodeType": "Identifier",
25752
25752
  "overloadedDeclarations": [],
25753
- "referencedDeclaration": 11169,
25753
+ "referencedDeclaration": 11195,
25754
25754
  "src": "18649:8:17",
25755
25755
  "typeDescriptions": {
25756
25756
  "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
@@ -25864,7 +25864,7 @@
25864
25864
  },
25865
25865
  {
25866
25866
  "attributes": {
25867
- "SourceUnit": 10921,
25867
+ "SourceUnit": 10938,
25868
25868
  "absolutePath": "project:/contracts/interfaces/ICash.sol",
25869
25869
  "file": "./interfaces/ICash.sol",
25870
25870
  "scope": 9305,
@@ -25879,7 +25879,7 @@
25879
25879
  },
25880
25880
  {
25881
25881
  "attributes": {
25882
- "SourceUnit": 10799,
25882
+ "SourceUnit": 10816,
25883
25883
  "absolutePath": "project:/contracts/interfaces/IBond.sol",
25884
25884
  "file": "./interfaces/IBond.sol",
25885
25885
  "scope": 9305,
@@ -25894,7 +25894,7 @@
25894
25894
  },
25895
25895
  {
25896
25896
  "attributes": {
25897
- "SourceUnit": 11037,
25897
+ "SourceUnit": 11063,
25898
25898
  "absolutePath": "project:/contracts/interfaces/IFactory.sol",
25899
25899
  "file": "./interfaces/IFactory.sol",
25900
25900
  "scope": 9305,
@@ -25909,7 +25909,7 @@
25909
25909
  },
25910
25910
  {
25911
25911
  "attributes": {
25912
- "SourceUnit": 11104,
25912
+ "SourceUnit": 11130,
25913
25913
  "absolutePath": "project:/contracts/interfaces/IRates.sol",
25914
25914
  "file": "./interfaces/IRates.sol",
25915
25915
  "scope": 9305,
@@ -25924,7 +25924,7 @@
25924
25924
  },
25925
25925
  {
25926
25926
  "attributes": {
25927
- "SourceUnit": 11179,
25927
+ "SourceUnit": 11205,
25928
25928
  "absolutePath": "project:/contracts/utilities/Pausable.sol",
25929
25929
  "file": "./utilities/Pausable.sol",
25930
25930
  "scope": 9305,
@@ -25939,7 +25939,7 @@
25939
25939
  },
25940
25940
  {
25941
25941
  "attributes": {
25942
- "SourceUnit": 11475,
25942
+ "SourceUnit": 11501,
25943
25943
  "absolutePath": "project:/contracts/utilities/StringUtils.sol",
25944
25944
  "file": "./utilities/StringUtils.sol",
25945
25945
  "scope": 9305,
@@ -26035,21 +26035,21 @@
26035
26035
  752,
26036
26036
  821,
26037
26037
  890,
26038
- 10920,
26039
- 11178
26038
+ 10937,
26039
+ 11204
26040
26040
  ],
26041
26041
  "contractKind": "contract",
26042
26042
  "documentation": null,
26043
26043
  "fullyImplemented": true,
26044
26044
  "linearizedBaseContracts": [
26045
26045
  9304,
26046
- 11178,
26046
+ 11204,
26047
26047
  340,
26048
26048
  752,
26049
26049
  821,
26050
26050
  29,
26051
26051
  890,
26052
- 10920
26052
+ 10937
26053
26053
  ],
26054
26054
  "name": "Cash",
26055
26055
  "scope": 9305
@@ -26064,7 +26064,7 @@
26064
26064
  "attributes": {
26065
26065
  "contractScope": null,
26066
26066
  "name": "ICash",
26067
- "referencedDeclaration": 10920,
26067
+ "referencedDeclaration": 10937,
26068
26068
  "type": "contract ICash"
26069
26069
  },
26070
26070
  "id": 7545,
@@ -26127,7 +26127,7 @@
26127
26127
  "attributes": {
26128
26128
  "contractScope": null,
26129
26129
  "name": "Pausable",
26130
- "referencedDeclaration": 11178,
26130
+ "referencedDeclaration": 11204,
26131
26131
  "type": "contract Pausable"
26132
26132
  },
26133
26133
  "id": 7551,
@@ -26148,7 +26148,7 @@
26148
26148
  "attributes": {
26149
26149
  "contractScope": null,
26150
26150
  "name": "stringutils",
26151
- "referencedDeclaration": 11474,
26151
+ "referencedDeclaration": 11500,
26152
26152
  "type": "library stringutils"
26153
26153
  },
26154
26154
  "id": 7553,
@@ -26388,7 +26388,7 @@
26388
26388
  "attributes": {
26389
26389
  "contractScope": null,
26390
26390
  "name": "IFactory",
26391
- "referencedDeclaration": 11036,
26391
+ "referencedDeclaration": 11062,
26392
26392
  "type": "contract IFactory"
26393
26393
  },
26394
26394
  "id": 7574,
@@ -26416,7 +26416,7 @@
26416
26416
  "attributes": {
26417
26417
  "contractScope": null,
26418
26418
  "name": "IRates",
26419
- "referencedDeclaration": 11103,
26419
+ "referencedDeclaration": 11129,
26420
26420
  "type": "contract IRates"
26421
26421
  },
26422
26422
  "id": 7576,
@@ -26647,7 +26647,7 @@
26647
26647
  "attributes": {
26648
26648
  "contractScope": null,
26649
26649
  "name": "ICash.token",
26650
- "referencedDeclaration": 10806,
26650
+ "referencedDeclaration": 10823,
26651
26651
  "type": "struct ICash.token"
26652
26652
  },
26653
26653
  "id": 7595,
@@ -27691,7 +27691,7 @@
27691
27691
  "overloadedDeclarations": [
27692
27692
  null
27693
27693
  ],
27694
- "referencedDeclaration": 11036,
27694
+ "referencedDeclaration": 11062,
27695
27695
  "type": "type(contract IFactory)",
27696
27696
  "value": "IFactory"
27697
27697
  },
@@ -27717,7 +27717,7 @@
27717
27717
  "overloadedDeclarations": [
27718
27718
  null
27719
27719
  ],
27720
- "referencedDeclaration": 11489,
27720
+ "referencedDeclaration": 11515,
27721
27721
  "type": "msg",
27722
27722
  "value": "msg"
27723
27723
  },
@@ -27844,7 +27844,7 @@
27844
27844
  "overloadedDeclarations": [
27845
27845
  null
27846
27846
  ],
27847
- "referencedDeclaration": 11476,
27847
+ "referencedDeclaration": 11502,
27848
27848
  "type": "abi",
27849
27849
  "value": "abi"
27850
27850
  },
@@ -27950,7 +27950,7 @@
27950
27950
  "isPure": false,
27951
27951
  "lValueRequested": false,
27952
27952
  "member_name": "substring",
27953
- "referencedDeclaration": 11325,
27953
+ "referencedDeclaration": 11351,
27954
27954
  "type": "function (bytes32,uint256,uint256) pure returns (string memory)"
27955
27955
  },
27956
27956
  "children": [
@@ -28126,7 +28126,7 @@
28126
28126
  "overloadedDeclarations": [
28127
28127
  null
28128
28128
  ],
28129
- "referencedDeclaration": 11103,
28129
+ "referencedDeclaration": 11129,
28130
28130
  "type": "type(contract IRates)",
28131
28131
  "value": "IRates"
28132
28132
  },
@@ -28287,7 +28287,7 @@
28287
28287
  "name": "setSigner",
28288
28288
  "scope": 9304,
28289
28289
  "stateMutability": "nonpayable",
28290
- "superFunction": 10919,
28290
+ "superFunction": 10936,
28291
28291
  "visibility": "external"
28292
28292
  },
28293
28293
  "children": [
@@ -28489,10 +28489,10 @@
28489
28489
  }
28490
28490
  ],
28491
28491
  "overloadedDeclarations": [
28492
- 11492,
28493
- 11493
28492
+ 11518,
28493
+ 11519
28494
28494
  ],
28495
- "referencedDeclaration": 11492,
28495
+ "referencedDeclaration": 11518,
28496
28496
  "type": "function (bool) pure",
28497
28497
  "value": "require"
28498
28498
  },
@@ -28533,7 +28533,7 @@
28533
28533
  "overloadedDeclarations": [
28534
28534
  null
28535
28535
  ],
28536
- "referencedDeclaration": 11489,
28536
+ "referencedDeclaration": 11515,
28537
28537
  "type": "msg",
28538
28538
  "value": "msg"
28539
28539
  },
@@ -28604,10 +28604,10 @@
28604
28604
  }
28605
28605
  ],
28606
28606
  "overloadedDeclarations": [
28607
- 11492,
28608
- 11493
28607
+ 11518,
28608
+ 11519
28609
28609
  ],
28610
- "referencedDeclaration": 11492,
28610
+ "referencedDeclaration": 11518,
28611
28611
  "type": "function (bool) pure",
28612
28612
  "value": "require"
28613
28613
  },
@@ -28660,7 +28660,7 @@
28660
28660
  "overloadedDeclarations": [
28661
28661
  null
28662
28662
  ],
28663
- "referencedDeclaration": 11489,
28663
+ "referencedDeclaration": 11515,
28664
28664
  "type": "msg",
28665
28665
  "value": "msg"
28666
28666
  },
@@ -28736,10 +28736,10 @@
28736
28736
  }
28737
28737
  ],
28738
28738
  "overloadedDeclarations": [
28739
- 11492,
28740
- 11493
28739
+ 11518,
28740
+ 11519
28741
28741
  ],
28742
- "referencedDeclaration": 11492,
28742
+ "referencedDeclaration": 11518,
28743
28743
  "type": "function (bool) pure",
28744
28744
  "value": "require"
28745
28745
  },
@@ -28768,7 +28768,7 @@
28768
28768
  "overloadedDeclarations": [
28769
28769
  null
28770
28770
  ],
28771
- "referencedDeclaration": 11143,
28771
+ "referencedDeclaration": 11169,
28772
28772
  "type": "bool",
28773
28773
  "value": "paused"
28774
28774
  },
@@ -28885,7 +28885,7 @@
28885
28885
  "overloadedDeclarations": [
28886
28886
  null
28887
28887
  ],
28888
- "referencedDeclaration": 11489,
28888
+ "referencedDeclaration": 11515,
28889
28889
  "type": "msg",
28890
28890
  "value": "msg"
28891
28891
  },
@@ -29049,7 +29049,7 @@
29049
29049
  "overloadedDeclarations": [
29050
29050
  null
29051
29051
  ],
29052
- "referencedDeclaration": 11489,
29052
+ "referencedDeclaration": 11515,
29053
29053
  "type": "msg",
29054
29054
  "value": "msg"
29055
29055
  },
@@ -29163,7 +29163,7 @@
29163
29163
  "overloadedDeclarations": [
29164
29164
  null
29165
29165
  ],
29166
- "referencedDeclaration": 11489,
29166
+ "referencedDeclaration": 11515,
29167
29167
  "type": "msg",
29168
29168
  "value": "msg"
29169
29169
  },
@@ -29215,7 +29215,7 @@
29215
29215
  "name": "supportTokens",
29216
29216
  "scope": 9304,
29217
29217
  "stateMutability": "nonpayable",
29218
- "superFunction": 10818,
29218
+ "superFunction": 10835,
29219
29219
  "visibility": "external"
29220
29220
  },
29221
29221
  "children": [
@@ -29426,7 +29426,7 @@
29426
29426
  "attributes": {
29427
29427
  "contractScope": null,
29428
29428
  "name": "ICash.token",
29429
- "referencedDeclaration": 10806,
29429
+ "referencedDeclaration": 10823,
29430
29430
  "type": "struct ICash.token"
29431
29431
  },
29432
29432
  "id": 7794,
@@ -29471,7 +29471,7 @@
29471
29471
  "isPure": false,
29472
29472
  "lValueRequested": false,
29473
29473
  "member_name": "token",
29474
- "referencedDeclaration": 10806,
29474
+ "referencedDeclaration": 10823,
29475
29475
  "type": "type(struct ICash.token storage pointer)"
29476
29476
  },
29477
29477
  "children": [
@@ -29481,7 +29481,7 @@
29481
29481
  "overloadedDeclarations": [
29482
29482
  null
29483
29483
  ],
29484
- "referencedDeclaration": 10920,
29484
+ "referencedDeclaration": 10937,
29485
29485
  "type": "type(contract ICash)",
29486
29486
  "value": "ICash"
29487
29487
  },
@@ -29553,7 +29553,7 @@
29553
29553
  "attributes": {
29554
29554
  "argumentTypes": [
29555
29555
  {
29556
- "typeIdentifier": "t_struct$_token_$10806_memory_ptr",
29556
+ "typeIdentifier": "t_struct$_token_$10823_memory_ptr",
29557
29557
  "typeString": "struct ICash.token memory"
29558
29558
  }
29559
29559
  ],
@@ -29738,7 +29738,7 @@
29738
29738
  "name": "checkSupportForToken",
29739
29739
  "scope": 9304,
29740
29740
  "stateMutability": "view",
29741
- "superFunction": 10825,
29741
+ "superFunction": 10842,
29742
29742
  "visibility": "external"
29743
29743
  },
29744
29744
  "children": [
@@ -29974,7 +29974,7 @@
29974
29974
  "name": "getSupportedTokens",
29975
29975
  "scope": 9304,
29976
29976
  "stateMutability": "view",
29977
- "superFunction": 10831,
29977
+ "superFunction": 10848,
29978
29978
  "visibility": "external"
29979
29979
  },
29980
29980
  "children": [
@@ -30013,7 +30013,7 @@
30013
30013
  "attributes": {
30014
30014
  "contractScope": null,
30015
30015
  "name": "ICash.token",
30016
- "referencedDeclaration": 10806,
30016
+ "referencedDeclaration": 10823,
30017
30017
  "type": "struct ICash.token"
30018
30018
  },
30019
30019
  "id": 7838,
@@ -30083,7 +30083,7 @@
30083
30083
  "name": "requestIssue",
30084
30084
  "scope": 9304,
30085
30085
  "stateMutability": "nonpayable",
30086
- "superFunction": 10840,
30086
+ "superFunction": 10857,
30087
30087
  "visibility": "external"
30088
30088
  },
30089
30089
  "children": [
@@ -30217,10 +30217,10 @@
30217
30217
  }
30218
30218
  ],
30219
30219
  "overloadedDeclarations": [
30220
- 11492,
30221
- 11493
30220
+ 11518,
30221
+ 11519
30222
30222
  ],
30223
- "referencedDeclaration": 11493,
30223
+ "referencedDeclaration": 11519,
30224
30224
  "type": "function (bool,string memory) pure",
30225
30225
  "value": "require"
30226
30226
  },
@@ -30249,7 +30249,7 @@
30249
30249
  "overloadedDeclarations": [
30250
30250
  null
30251
30251
  ],
30252
- "referencedDeclaration": 11143,
30252
+ "referencedDeclaration": 11169,
30253
30253
  "type": "bool",
30254
30254
  "value": "paused"
30255
30255
  },
@@ -30585,7 +30585,7 @@
30585
30585
  "overloadedDeclarations": [
30586
30586
  null
30587
30587
  ],
30588
- "referencedDeclaration": 11489,
30588
+ "referencedDeclaration": 11515,
30589
30589
  "type": "msg",
30590
30590
  "value": "msg"
30591
30591
  },
@@ -30638,7 +30638,7 @@
30638
30638
  "overloadedDeclarations": [
30639
30639
  null
30640
30640
  ],
30641
- "referencedDeclaration": 11549,
30641
+ "referencedDeclaration": 11575,
30642
30642
  "type": "contract Cash",
30643
30643
  "value": "this"
30644
30644
  },
@@ -30716,7 +30716,7 @@
30716
30716
  "isPure": false,
30717
30717
  "lValueRequested": false,
30718
30718
  "member_name": "tokenName",
30719
- "referencedDeclaration": 10803,
30719
+ "referencedDeclaration": 10820,
30720
30720
  "type": "bytes32"
30721
30721
  },
30722
30722
  "children": [
@@ -30960,7 +30960,7 @@
30960
30960
  "overloadedDeclarations": [
30961
30961
  null
30962
30962
  ],
30963
- "referencedDeclaration": 11489,
30963
+ "referencedDeclaration": 11515,
30964
30964
  "type": "msg",
30965
30965
  "value": "msg"
30966
30966
  },
@@ -31013,7 +31013,7 @@
31013
31013
  "overloadedDeclarations": [
31014
31014
  null
31015
31015
  ],
31016
- "referencedDeclaration": 11549,
31016
+ "referencedDeclaration": 11575,
31017
31017
  "type": "contract Cash",
31018
31018
  "value": "this"
31019
31019
  },
@@ -31628,7 +31628,7 @@
31628
31628
  "overloadedDeclarations": [
31629
31629
  null
31630
31630
  ],
31631
- "referencedDeclaration": 11489,
31631
+ "referencedDeclaration": 11515,
31632
31632
  "type": "msg",
31633
31633
  "value": "msg"
31634
31634
  },
@@ -31849,7 +31849,7 @@
31849
31849
  "overloadedDeclarations": [
31850
31850
  null
31851
31851
  ],
31852
- "referencedDeclaration": 11489,
31852
+ "referencedDeclaration": 11515,
31853
31853
  "type": "msg",
31854
31854
  "value": "msg"
31855
31855
  },
@@ -32013,7 +32013,7 @@
32013
32013
  "overloadedDeclarations": [
32014
32014
  null
32015
32015
  ],
32016
- "referencedDeclaration": 11489,
32016
+ "referencedDeclaration": 11515,
32017
32017
  "type": "msg",
32018
32018
  "value": "msg"
32019
32019
  },
@@ -32616,7 +32616,7 @@
32616
32616
  "name": "addIssuedBalance",
32617
32617
  "scope": 9304,
32618
32618
  "stateMutability": "nonpayable",
32619
- "superFunction": 10876,
32619
+ "superFunction": 10893,
32620
32620
  "visibility": "external"
32621
32621
  },
32622
32622
  "children": [
@@ -32882,7 +32882,7 @@
32882
32882
  "overloadedDeclarations": [
32883
32883
  null
32884
32884
  ],
32885
- "referencedDeclaration": 11483,
32885
+ "referencedDeclaration": 11509,
32886
32886
  "type": "function (bytes memory) pure returns (bytes32)",
32887
32887
  "value": "keccak256"
32888
32888
  },
@@ -32932,7 +32932,7 @@
32932
32932
  "overloadedDeclarations": [
32933
32933
  null
32934
32934
  ],
32935
- "referencedDeclaration": 11476,
32935
+ "referencedDeclaration": 11502,
32936
32936
  "type": "abi",
32937
32937
  "value": "abi"
32938
32938
  },
@@ -33050,7 +33050,7 @@
33050
33050
  "overloadedDeclarations": [
33051
33051
  null
33052
33052
  ],
33053
- "referencedDeclaration": 11483,
33053
+ "referencedDeclaration": 11509,
33054
33054
  "type": "function (bytes memory) pure returns (bytes32)",
33055
33055
  "value": "keccak256"
33056
33056
  },
@@ -33100,7 +33100,7 @@
33100
33100
  "overloadedDeclarations": [
33101
33101
  null
33102
33102
  ],
33103
- "referencedDeclaration": 11476,
33103
+ "referencedDeclaration": 11502,
33104
33104
  "type": "abi",
33105
33105
  "value": "abi"
33106
33106
  },
@@ -33185,10 +33185,10 @@
33185
33185
  }
33186
33186
  ],
33187
33187
  "overloadedDeclarations": [
33188
- 11492,
33189
- 11493
33188
+ 11518,
33189
+ 11519
33190
33190
  ],
33191
- "referencedDeclaration": 11492,
33191
+ "referencedDeclaration": 11518,
33192
33192
  "type": "function (bool) pure",
33193
33193
  "value": "require"
33194
33194
  },
@@ -33249,7 +33249,7 @@
33249
33249
  "overloadedDeclarations": [
33250
33250
  null
33251
33251
  ],
33252
- "referencedDeclaration": 11481,
33252
+ "referencedDeclaration": 11507,
33253
33253
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
33254
33254
  "value": "ecrecover"
33255
33255
  },
@@ -33399,7 +33399,7 @@
33399
33399
  "isPure": false,
33400
33400
  "lValueRequested": false,
33401
33401
  "member_name": "getIssuer",
33402
- "referencedDeclaration": 10975,
33402
+ "referencedDeclaration": 10992,
33403
33403
  "type": "function (bytes32,bytes32) view external returns (address)"
33404
33404
  },
33405
33405
  "children": [
@@ -33498,7 +33498,7 @@
33498
33498
  "overloadedDeclarations": [
33499
33499
  null
33500
33500
  ],
33501
- "referencedDeclaration": 11549,
33501
+ "referencedDeclaration": 11575,
33502
33502
  "type": "contract Cash",
33503
33503
  "value": "this"
33504
33504
  },
@@ -34033,7 +34033,7 @@
34033
34033
  "name": "transferDeposit",
34034
34034
  "scope": 9304,
34035
34035
  "stateMutability": "nonpayable",
34036
- "superFunction": 10914,
34036
+ "superFunction": 10931,
34037
34037
  "visibility": "external"
34038
34038
  },
34039
34039
  "children": [
@@ -34326,7 +34326,7 @@
34326
34326
  "overloadedDeclarations": [
34327
34327
  null
34328
34328
  ],
34329
- "referencedDeclaration": 11483,
34329
+ "referencedDeclaration": 11509,
34330
34330
  "type": "function (bytes memory) pure returns (bytes32)",
34331
34331
  "value": "keccak256"
34332
34332
  },
@@ -34376,7 +34376,7 @@
34376
34376
  "overloadedDeclarations": [
34377
34377
  null
34378
34378
  ],
34379
- "referencedDeclaration": 11476,
34379
+ "referencedDeclaration": 11502,
34380
34380
  "type": "abi",
34381
34381
  "value": "abi"
34382
34382
  },
@@ -34494,7 +34494,7 @@
34494
34494
  "overloadedDeclarations": [
34495
34495
  null
34496
34496
  ],
34497
- "referencedDeclaration": 11483,
34497
+ "referencedDeclaration": 11509,
34498
34498
  "type": "function (bytes memory) pure returns (bytes32)",
34499
34499
  "value": "keccak256"
34500
34500
  },
@@ -34544,7 +34544,7 @@
34544
34544
  "overloadedDeclarations": [
34545
34545
  null
34546
34546
  ],
34547
- "referencedDeclaration": 11476,
34547
+ "referencedDeclaration": 11502,
34548
34548
  "type": "abi",
34549
34549
  "value": "abi"
34550
34550
  },
@@ -34629,10 +34629,10 @@
34629
34629
  }
34630
34630
  ],
34631
34631
  "overloadedDeclarations": [
34632
- 11492,
34633
- 11493
34632
+ 11518,
34633
+ 11519
34634
34634
  ],
34635
- "referencedDeclaration": 11492,
34635
+ "referencedDeclaration": 11518,
34636
34636
  "type": "function (bool) pure",
34637
34637
  "value": "require"
34638
34638
  },
@@ -34693,7 +34693,7 @@
34693
34693
  "overloadedDeclarations": [
34694
34694
  null
34695
34695
  ],
34696
- "referencedDeclaration": 11481,
34696
+ "referencedDeclaration": 11507,
34697
34697
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
34698
34698
  "value": "ecrecover"
34699
34699
  },
@@ -35729,7 +35729,7 @@
35729
35729
  "name": "redeemDeposits",
35730
35730
  "scope": 9304,
35731
35731
  "stateMutability": "nonpayable",
35732
- "superFunction": 10859,
35732
+ "superFunction": 10876,
35733
35733
  "visibility": "external"
35734
35734
  },
35735
35735
  "children": [
@@ -36021,7 +36021,7 @@
36021
36021
  "overloadedDeclarations": [
36022
36022
  null
36023
36023
  ],
36024
- "referencedDeclaration": 11483,
36024
+ "referencedDeclaration": 11509,
36025
36025
  "type": "function (bytes memory) pure returns (bytes32)",
36026
36026
  "value": "keccak256"
36027
36027
  },
@@ -36071,7 +36071,7 @@
36071
36071
  "overloadedDeclarations": [
36072
36072
  null
36073
36073
  ],
36074
- "referencedDeclaration": 11476,
36074
+ "referencedDeclaration": 11502,
36075
36075
  "type": "abi",
36076
36076
  "value": "abi"
36077
36077
  },
@@ -36189,7 +36189,7 @@
36189
36189
  "overloadedDeclarations": [
36190
36190
  null
36191
36191
  ],
36192
- "referencedDeclaration": 11483,
36192
+ "referencedDeclaration": 11509,
36193
36193
  "type": "function (bytes memory) pure returns (bytes32)",
36194
36194
  "value": "keccak256"
36195
36195
  },
@@ -36239,7 +36239,7 @@
36239
36239
  "overloadedDeclarations": [
36240
36240
  null
36241
36241
  ],
36242
- "referencedDeclaration": 11476,
36242
+ "referencedDeclaration": 11502,
36243
36243
  "type": "abi",
36244
36244
  "value": "abi"
36245
36245
  },
@@ -36324,10 +36324,10 @@
36324
36324
  }
36325
36325
  ],
36326
36326
  "overloadedDeclarations": [
36327
- 11492,
36328
- 11493
36327
+ 11518,
36328
+ 11519
36329
36329
  ],
36330
- "referencedDeclaration": 11492,
36330
+ "referencedDeclaration": 11518,
36331
36331
  "type": "function (bool) pure",
36332
36332
  "value": "require"
36333
36333
  },
@@ -36388,7 +36388,7 @@
36388
36388
  "overloadedDeclarations": [
36389
36389
  null
36390
36390
  ],
36391
- "referencedDeclaration": 11481,
36391
+ "referencedDeclaration": 11507,
36392
36392
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
36393
36393
  "value": "ecrecover"
36394
36394
  },
@@ -37406,7 +37406,7 @@
37406
37406
  "isPure": false,
37407
37407
  "lValueRequested": false,
37408
37408
  "member_name": "tokenName",
37409
- "referencedDeclaration": 10803,
37409
+ "referencedDeclaration": 10820,
37410
37410
  "type": "bytes32"
37411
37411
  },
37412
37412
  "children": [
@@ -37559,7 +37559,7 @@
37559
37559
  "isPure": false,
37560
37560
  "lValueRequested": false,
37561
37561
  "member_name": "tokenAddress",
37562
- "referencedDeclaration": 10805,
37562
+ "referencedDeclaration": 10822,
37563
37563
  "type": "address"
37564
37564
  },
37565
37565
  "children": [
@@ -38138,7 +38138,7 @@
38138
38138
  "name": "transferIssuedBalance",
38139
38139
  "scope": 9304,
38140
38140
  "stateMutability": "nonpayable",
38141
- "superFunction": 10895,
38141
+ "superFunction": 10912,
38142
38142
  "visibility": "external"
38143
38143
  },
38144
38144
  "children": [
@@ -38430,7 +38430,7 @@
38430
38430
  "overloadedDeclarations": [
38431
38431
  null
38432
38432
  ],
38433
- "referencedDeclaration": 11483,
38433
+ "referencedDeclaration": 11509,
38434
38434
  "type": "function (bytes memory) pure returns (bytes32)",
38435
38435
  "value": "keccak256"
38436
38436
  },
@@ -38480,7 +38480,7 @@
38480
38480
  "overloadedDeclarations": [
38481
38481
  null
38482
38482
  ],
38483
- "referencedDeclaration": 11476,
38483
+ "referencedDeclaration": 11502,
38484
38484
  "type": "abi",
38485
38485
  "value": "abi"
38486
38486
  },
@@ -38598,7 +38598,7 @@
38598
38598
  "overloadedDeclarations": [
38599
38599
  null
38600
38600
  ],
38601
- "referencedDeclaration": 11483,
38601
+ "referencedDeclaration": 11509,
38602
38602
  "type": "function (bytes memory) pure returns (bytes32)",
38603
38603
  "value": "keccak256"
38604
38604
  },
@@ -38648,7 +38648,7 @@
38648
38648
  "overloadedDeclarations": [
38649
38649
  null
38650
38650
  ],
38651
- "referencedDeclaration": 11476,
38651
+ "referencedDeclaration": 11502,
38652
38652
  "type": "abi",
38653
38653
  "value": "abi"
38654
38654
  },
@@ -38733,10 +38733,10 @@
38733
38733
  }
38734
38734
  ],
38735
38735
  "overloadedDeclarations": [
38736
- 11492,
38737
- 11493
38736
+ 11518,
38737
+ 11519
38738
38738
  ],
38739
- "referencedDeclaration": 11492,
38739
+ "referencedDeclaration": 11518,
38740
38740
  "type": "function (bool) pure",
38741
38741
  "value": "require"
38742
38742
  },
@@ -38797,7 +38797,7 @@
38797
38797
  "overloadedDeclarations": [
38798
38798
  null
38799
38799
  ],
38800
- "referencedDeclaration": 11481,
38800
+ "referencedDeclaration": 11507,
38801
38801
  "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)",
38802
38802
  "value": "ecrecover"
38803
38803
  },
@@ -39637,7 +39637,7 @@
39637
39637
  "overloadedDeclarations": [
39638
39638
  null
39639
39639
  ],
39640
- "referencedDeclaration": 11549,
39640
+ "referencedDeclaration": 11575,
39641
39641
  "type": "contract Cash",
39642
39642
  "value": "this"
39643
39643
  },
@@ -39758,7 +39758,7 @@
39758
39758
  "overloadedDeclarations": [
39759
39759
  null
39760
39760
  ],
39761
- "referencedDeclaration": 11549,
39761
+ "referencedDeclaration": 11575,
39762
39762
  "type": "contract Cash",
39763
39763
  "value": "this"
39764
39764
  },
@@ -40741,10 +40741,10 @@
40741
40741
  }
40742
40742
  ],
40743
40743
  "overloadedDeclarations": [
40744
- 11492,
40745
- 11493
40744
+ 11518,
40745
+ 11519
40746
40746
  ],
40747
- "referencedDeclaration": 11492,
40747
+ "referencedDeclaration": 11518,
40748
40748
  "type": "function (bool) pure",
40749
40749
  "value": "require"
40750
40750
  },
@@ -40773,7 +40773,7 @@
40773
40773
  "overloadedDeclarations": [
40774
40774
  null
40775
40775
  ],
40776
- "referencedDeclaration": 11143,
40776
+ "referencedDeclaration": 11169,
40777
40777
  "type": "bool",
40778
40778
  "value": "paused"
40779
40779
  },
@@ -40839,10 +40839,10 @@
40839
40839
  }
40840
40840
  ],
40841
40841
  "overloadedDeclarations": [
40842
- 11492,
40843
- 11493
40842
+ 11518,
40843
+ 11519
40844
40844
  ],
40845
- "referencedDeclaration": 11492,
40845
+ "referencedDeclaration": 11518,
40846
40846
  "type": "function (bool) pure",
40847
40847
  "value": "require"
40848
40848
  },
@@ -41207,7 +41207,7 @@
41207
41207
  "overloadedDeclarations": [
41208
41208
  null
41209
41209
  ],
41210
- "referencedDeclaration": 11549,
41210
+ "referencedDeclaration": 11575,
41211
41211
  "type": "contract Cash",
41212
41212
  "value": "this"
41213
41213
  },
@@ -41416,7 +41416,7 @@
41416
41416
  "overloadedDeclarations": [
41417
41417
  null
41418
41418
  ],
41419
- "referencedDeclaration": 11549,
41419
+ "referencedDeclaration": 11575,
41420
41420
  "type": "contract Cash",
41421
41421
  "value": "this"
41422
41422
  },
@@ -41558,7 +41558,7 @@
41558
41558
  "isPure": false,
41559
41559
  "lValueRequested": false,
41560
41560
  "member_name": "getType",
41561
- "referencedDeclaration": 10948,
41561
+ "referencedDeclaration": 10965,
41562
41562
  "type": "function (address) view external returns (bytes32)"
41563
41563
  },
41564
41564
  "children": [
@@ -41665,7 +41665,7 @@
41665
41665
  "isPure": false,
41666
41666
  "lValueRequested": false,
41667
41667
  "member_name": "getType",
41668
- "referencedDeclaration": 10948,
41668
+ "referencedDeclaration": 10965,
41669
41669
  "type": "function (address) view external returns (bytes32)"
41670
41670
  },
41671
41671
  "children": [
@@ -42771,7 +42771,7 @@
42771
42771
  "isPure": false,
42772
42772
  "lValueRequested": false,
42773
42773
  "member_name": "tokenName",
42774
- "referencedDeclaration": 10803,
42774
+ "referencedDeclaration": 10820,
42775
42775
  "type": "bytes32"
42776
42776
  },
42777
42777
  "children": [
@@ -43106,7 +43106,7 @@
43106
43106
  "isPure": false,
43107
43107
  "lValueRequested": false,
43108
43108
  "member_name": "tokenName",
43109
- "referencedDeclaration": 10803,
43109
+ "referencedDeclaration": 10820,
43110
43110
  "type": "bytes32"
43111
43111
  },
43112
43112
  "children": [
@@ -43246,7 +43246,7 @@
43246
43246
  "isPure": false,
43247
43247
  "lValueRequested": false,
43248
43248
  "member_name": "tokenName",
43249
- "referencedDeclaration": 10803,
43249
+ "referencedDeclaration": 10820,
43250
43250
  "type": "bytes32"
43251
43251
  },
43252
43252
  "children": [
@@ -43404,7 +43404,7 @@
43404
43404
  "isPure": false,
43405
43405
  "lValueRequested": false,
43406
43406
  "member_name": "tokenName",
43407
- "referencedDeclaration": 10803,
43407
+ "referencedDeclaration": 10820,
43408
43408
  "type": "bytes32"
43409
43409
  },
43410
43410
  "children": [
@@ -43594,7 +43594,7 @@
43594
43594
  "isPure": false,
43595
43595
  "lValueRequested": false,
43596
43596
  "member_name": "tokenName",
43597
- "referencedDeclaration": 10803,
43597
+ "referencedDeclaration": 10820,
43598
43598
  "type": "bytes32"
43599
43599
  },
43600
43600
  "children": [
@@ -43771,7 +43771,7 @@
43771
43771
  "isPure": false,
43772
43772
  "lValueRequested": false,
43773
43773
  "member_name": "tokenName",
43774
- "referencedDeclaration": 10803,
43774
+ "referencedDeclaration": 10820,
43775
43775
  "type": "bytes32"
43776
43776
  },
43777
43777
  "children": [
@@ -43961,7 +43961,7 @@
43961
43961
  "isPure": false,
43962
43962
  "lValueRequested": false,
43963
43963
  "member_name": "tokenName",
43964
- "referencedDeclaration": 10803,
43964
+ "referencedDeclaration": 10820,
43965
43965
  "type": "bytes32"
43966
43966
  },
43967
43967
  "children": [
@@ -44078,10 +44078,10 @@
44078
44078
  }
44079
44079
  ],
44080
44080
  "overloadedDeclarations": [
44081
- 11492,
44082
- 11493
44081
+ 11518,
44082
+ 11519
44083
44083
  ],
44084
- "referencedDeclaration": 11492,
44084
+ "referencedDeclaration": 11518,
44085
44085
  "type": "function (bool) pure",
44086
44086
  "value": "require"
44087
44087
  },
@@ -44398,7 +44398,7 @@
44398
44398
  "isPure": false,
44399
44399
  "lValueRequested": false,
44400
44400
  "member_name": "tokenName",
44401
- "referencedDeclaration": 10803,
44401
+ "referencedDeclaration": 10820,
44402
44402
  "type": "bytes32"
44403
44403
  },
44404
44404
  "children": [
@@ -44772,7 +44772,7 @@
44772
44772
  "isPure": false,
44773
44773
  "lValueRequested": false,
44774
44774
  "member_name": "tokenAddress",
44775
- "referencedDeclaration": 10805,
44775
+ "referencedDeclaration": 10822,
44776
44776
  "type": "address"
44777
44777
  },
44778
44778
  "children": [
@@ -45004,7 +45004,7 @@
45004
45004
  "isPure": false,
45005
45005
  "lValueRequested": false,
45006
45006
  "member_name": "tokenName",
45007
- "referencedDeclaration": 10803,
45007
+ "referencedDeclaration": 10820,
45008
45008
  "type": "bytes32"
45009
45009
  },
45010
45010
  "children": [
@@ -45334,7 +45334,7 @@
45334
45334
  "isPure": false,
45335
45335
  "lValueRequested": false,
45336
45336
  "member_name": "tokenName",
45337
- "referencedDeclaration": 10803,
45337
+ "referencedDeclaration": 10820,
45338
45338
  "type": "bytes32"
45339
45339
  },
45340
45340
  "children": [
@@ -45755,7 +45755,7 @@
45755
45755
  "isPure": false,
45756
45756
  "lValueRequested": false,
45757
45757
  "member_name": "tokenName",
45758
- "referencedDeclaration": 10803,
45758
+ "referencedDeclaration": 10820,
45759
45759
  "type": "bytes32"
45760
45760
  },
45761
45761
  "children": [
@@ -45945,7 +45945,7 @@
45945
45945
  "isPure": false,
45946
45946
  "lValueRequested": false,
45947
45947
  "member_name": "tokenName",
45948
- "referencedDeclaration": 10803,
45948
+ "referencedDeclaration": 10820,
45949
45949
  "type": "bytes32"
45950
45950
  },
45951
45951
  "children": [
@@ -46122,7 +46122,7 @@
46122
46122
  "isPure": false,
46123
46123
  "lValueRequested": false,
46124
46124
  "member_name": "tokenName",
46125
- "referencedDeclaration": 10803,
46125
+ "referencedDeclaration": 10820,
46126
46126
  "type": "bytes32"
46127
46127
  },
46128
46128
  "children": [
@@ -46312,7 +46312,7 @@
46312
46312
  "isPure": false,
46313
46313
  "lValueRequested": false,
46314
46314
  "member_name": "tokenName",
46315
- "referencedDeclaration": 10803,
46315
+ "referencedDeclaration": 10820,
46316
46316
  "type": "bytes32"
46317
46317
  },
46318
46318
  "children": [
@@ -46487,7 +46487,7 @@
46487
46487
  "isPure": false,
46488
46488
  "lValueRequested": false,
46489
46489
  "member_name": "tokenName",
46490
- "referencedDeclaration": 10803,
46490
+ "referencedDeclaration": 10820,
46491
46491
  "type": "bytes32"
46492
46492
  },
46493
46493
  "children": [
@@ -46949,7 +46949,7 @@
46949
46949
  "isPure": false,
46950
46950
  "lValueRequested": false,
46951
46951
  "member_name": "tokenName",
46952
- "referencedDeclaration": 10803,
46952
+ "referencedDeclaration": 10820,
46953
46953
  "type": "bytes32"
46954
46954
  },
46955
46955
  "children": [
@@ -47083,10 +47083,10 @@
47083
47083
  }
47084
47084
  ],
47085
47085
  "overloadedDeclarations": [
47086
- 11492,
47087
- 11493
47086
+ 11518,
47087
+ 11519
47088
47088
  ],
47089
- "referencedDeclaration": 11492,
47089
+ "referencedDeclaration": 11518,
47090
47090
  "type": "function (bool) pure",
47091
47091
  "value": "require"
47092
47092
  },
@@ -47422,7 +47422,7 @@
47422
47422
  "isPure": false,
47423
47423
  "lValueRequested": false,
47424
47424
  "member_name": "tokenName",
47425
- "referencedDeclaration": 10803,
47425
+ "referencedDeclaration": 10820,
47426
47426
  "type": "bytes32"
47427
47427
  },
47428
47428
  "children": [
@@ -47605,7 +47605,7 @@
47605
47605
  "isPure": false,
47606
47606
  "lValueRequested": false,
47607
47607
  "member_name": "tokenName",
47608
- "referencedDeclaration": 10803,
47608
+ "referencedDeclaration": 10820,
47609
47609
  "type": "bytes32"
47610
47610
  },
47611
47611
  "children": [
@@ -47697,7 +47697,7 @@
47697
47697
  "isPure": false,
47698
47698
  "lValueRequested": false,
47699
47699
  "member_name": "tokenName",
47700
- "referencedDeclaration": 10803,
47700
+ "referencedDeclaration": 10820,
47701
47701
  "type": "bytes32"
47702
47702
  },
47703
47703
  "children": [
@@ -48071,7 +48071,7 @@
48071
48071
  "isPure": false,
48072
48072
  "lValueRequested": false,
48073
48073
  "member_name": "tokenAddress",
48074
- "referencedDeclaration": 10805,
48074
+ "referencedDeclaration": 10822,
48075
48075
  "type": "address"
48076
48076
  },
48077
48077
  "children": [
@@ -48303,7 +48303,7 @@
48303
48303
  "isPure": false,
48304
48304
  "lValueRequested": false,
48305
48305
  "member_name": "tokenName",
48306
- "referencedDeclaration": 10803,
48306
+ "referencedDeclaration": 10820,
48307
48307
  "type": "bytes32"
48308
48308
  },
48309
48309
  "children": [
@@ -48673,7 +48673,7 @@
48673
48673
  "isPure": false,
48674
48674
  "lValueRequested": false,
48675
48675
  "member_name": "tokenName",
48676
- "referencedDeclaration": 10803,
48676
+ "referencedDeclaration": 10820,
48677
48677
  "type": "bytes32"
48678
48678
  },
48679
48679
  "children": [
@@ -48808,7 +48808,7 @@
48808
48808
  "isPure": false,
48809
48809
  "lValueRequested": false,
48810
48810
  "member_name": "tokenName",
48811
- "referencedDeclaration": 10803,
48811
+ "referencedDeclaration": 10820,
48812
48812
  "type": "bytes32"
48813
48813
  },
48814
48814
  "children": [
@@ -48878,7 +48878,7 @@
48878
48878
  "isPure": false,
48879
48879
  "lValueRequested": false,
48880
48880
  "member_name": "tokenName",
48881
- "referencedDeclaration": 10803,
48881
+ "referencedDeclaration": 10820,
48882
48882
  "type": "bytes32"
48883
48883
  },
48884
48884
  "children": [
@@ -49294,7 +49294,7 @@
49294
49294
  "isPure": false,
49295
49295
  "lValueRequested": false,
49296
49296
  "member_name": "tokenName",
49297
- "referencedDeclaration": 10803,
49297
+ "referencedDeclaration": 10820,
49298
49298
  "type": "bytes32"
49299
49299
  },
49300
49300
  "children": [
@@ -49484,7 +49484,7 @@
49484
49484
  "isPure": false,
49485
49485
  "lValueRequested": false,
49486
49486
  "member_name": "tokenName",
49487
- "referencedDeclaration": 10803,
49487
+ "referencedDeclaration": 10820,
49488
49488
  "type": "bytes32"
49489
49489
  },
49490
49490
  "children": [
@@ -49661,7 +49661,7 @@
49661
49661
  "isPure": false,
49662
49662
  "lValueRequested": false,
49663
49663
  "member_name": "tokenName",
49664
- "referencedDeclaration": 10803,
49664
+ "referencedDeclaration": 10820,
49665
49665
  "type": "bytes32"
49666
49666
  },
49667
49667
  "children": [
@@ -49851,7 +49851,7 @@
49851
49851
  "isPure": false,
49852
49852
  "lValueRequested": false,
49853
49853
  "member_name": "tokenName",
49854
- "referencedDeclaration": 10803,
49854
+ "referencedDeclaration": 10820,
49855
49855
  "type": "bytes32"
49856
49856
  },
49857
49857
  "children": [
@@ -50026,7 +50026,7 @@
50026
50026
  "isPure": false,
50027
50027
  "lValueRequested": false,
50028
50028
  "member_name": "tokenName",
50029
- "referencedDeclaration": 10803,
50029
+ "referencedDeclaration": 10820,
50030
50030
  "type": "bytes32"
50031
50031
  },
50032
50032
  "children": [
@@ -50342,7 +50342,7 @@
50342
50342
  "isPure": false,
50343
50343
  "lValueRequested": false,
50344
50344
  "member_name": "tokenName",
50345
- "referencedDeclaration": 10803,
50345
+ "referencedDeclaration": 10820,
50346
50346
  "type": "bytes32"
50347
50347
  },
50348
50348
  "children": [
@@ -50494,7 +50494,7 @@
50494
50494
  "isPure": false,
50495
50495
  "lValueRequested": false,
50496
50496
  "member_name": "tokenName",
50497
- "referencedDeclaration": 10803,
50497
+ "referencedDeclaration": 10820,
50498
50498
  "type": "bytes32"
50499
50499
  },
50500
50500
  "children": [
@@ -51002,7 +51002,7 @@
51002
51002
  "isPure": false,
51003
51003
  "lValueRequested": false,
51004
51004
  "member_name": "getFee",
51005
- "referencedDeclaration": 11084,
51005
+ "referencedDeclaration": 11110,
51006
51006
  "type": "function (bytes32) view external returns (uint256)"
51007
51007
  },
51008
51008
  "children": [
@@ -51254,7 +51254,7 @@
51254
51254
  "isPure": false,
51255
51255
  "lValueRequested": false,
51256
51256
  "member_name": "getFeeToSetter",
51257
- "referencedDeclaration": 11072,
51257
+ "referencedDeclaration": 11098,
51258
51258
  "type": "function () view external returns (address)"
51259
51259
  },
51260
51260
  "children": [
@@ -52512,7 +52512,7 @@
52512
52512
  "overloadedDeclarations": [
52513
52513
  null
52514
52514
  ],
52515
- "referencedDeclaration": 11158,
52515
+ "referencedDeclaration": 11184,
52516
52516
  "type": "function ()",
52517
52517
  "value": "_pause"
52518
52518
  },
@@ -52629,7 +52629,7 @@
52629
52629
  "overloadedDeclarations": [
52630
52630
  null
52631
52631
  ],
52632
- "referencedDeclaration": 11169,
52632
+ "referencedDeclaration": 11195,
52633
52633
  "type": "function ()",
52634
52634
  "value": "_unpause"
52635
52635
  },
@@ -52672,17 +52672,17 @@
52672
52672
  "version": "0.5.7+commit.6da8b019.Emscripten.clang"
52673
52673
  },
52674
52674
  "networks": {
52675
- "4": {
52675
+ "5": {
52676
52676
  "events": {},
52677
52677
  "links": {
52678
- "stringutils": "0xF63D71FADCcdb371fc20748C2f1dDe132518CaE3"
52678
+ "stringutils": "0x4CEaF254B38A033B3c73BF25FCa7833CE5bb3A08"
52679
52679
  },
52680
- "address": "0xe94E5c776b67f895dB02b0841365115Dc1847733",
52681
- "transactionHash": "0x016faa29375f385a35623137a1d732a2af10c8a63becc578111a548f6ba27406"
52680
+ "address": "0x3724D9e0b8b229994811704f1764e90DfF31937C",
52681
+ "transactionHash": "0x6133cd51ff9a8101d71710062970baae96be1a3eec3fe4bcfed4c7e5ace9129b"
52682
52682
  }
52683
52683
  },
52684
52684
  "schemaVersion": "3.4.3",
52685
- "updatedAt": "2022-07-08T00:49:00.453Z",
52685
+ "updatedAt": "2022-08-02T14:49:39.498Z",
52686
52686
  "networkType": "ethereum",
52687
52687
  "devdoc": {
52688
52688
  "methods": {