UNPKG

@gooddollar/goodprotocol

Version:
828 lines 61.3 kB
{ "_format": "hh-sol-artifact-1", "contractName": "AdminWallet", "sourceName": "contracts/utils/AdminWallet.sol", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "previousAdmin", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "AdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address payable[]", "name": "admins", "type": "address[]" } ], "name": "AdminsAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address[]", "name": "admins", "type": "address[]" } ], "name": "AdminsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "beacon", "type": "address" } ], "name": "BeaconUpgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_contract", "type": "address" }, { "indexed": false, "internalType": "bytes", "name": "_data", "type": "bytes" }, { "indexed": false, "internalType": "uint256", "name": "_value", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "_success", "type": "bool" } ], "name": "GenericCall", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "WalletTopped", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "WALLET_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable[]", "name": "_admins", "type": "address[]" } ], "name": "addAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "adminToppingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "blacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "day", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "gasPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_contract", "type": "address" }, { "internalType": "bytes", "name": "_data", "type": "bytes" }, { "internalType": "uint256", "name": "_value", "type": "uint256" } ], "name": "genericCall", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "bytes", "name": "returnValue", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_contracts", "type": "address[]" }, { "internalType": "bytes[]", "name": "_datas", "type": "bytes[]" }, { "internalType": "uint256[]", "name": "_values", "type": "uint256[]" } ], "name": "genericCallBatch", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" }, { "internalType": "bytes", "name": "returnValue", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getIdentity", "outputs": [ { "internalType": "contract IIdentityV2", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable[]", "name": "_admins", "type": "address[]" }, { "internalType": "contract NameService", "name": "_ns", "type": "address" }, { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "uint256", "name": "_gasPrice", "type": "uint256" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "isAdmin", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "lastGdBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxDailyNewWallets", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nameService", "outputs": [ { "internalType": "contract NameService", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "_admins", "type": "address[]" } ], "name": "removeAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "removeBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "removeWhitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_toppingAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_adminToppingAmount", "type": "uint256" }, { "internalType": "uint256", "name": "_toppingTimes", "type": "uint256" }, { "internalType": "uint256", "name": "_gasPrice", "type": "uint256" } ], "name": "setDefaults", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", "name": "endIndex", "type": "uint256" } ], "name": "topAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "startIndex", "type": "uint256" } ], "name": "topAdmins", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "_user", "type": "address" } ], "name": "topWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "toppingAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "toppingTimes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" } ], "name": "upgradeTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "string", "name": "_did", "type": "string" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "string", "name": "_did", "type": "string" }, { "internalType": "uint256", "name": "orgChain", "type": "uint256" }, { "internalType": "uint256", "name": "dateAuthenticated", "type": "uint256" } ], "name": "whitelist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ], "bytecode": "0x60a06040523060805234801561001457600080fd5b50608051612ac861004c600039600081816108ed0152818161092d01528181610e4901528181610e890152610f010152612ac86000f3fe6080604052600436106101985760003560e01c806301ffc9a7146101a4578063133d93a1146101d9578063248a9ca31461020957806324d7806c146102295780632beeaca4146102495780632bf164581461026b5780632f2ff15d1461029957806336568abe146102b95780633659cfe6146102d957806336afc6fa146102f95780633771dcf81461031b578063377e11e01461033b5780633e6326fc1461035b5780634f1ef2861461037c57806352d1902d1461038f5780635b61e2c1146103a45780635fc944e9146103dd57806378c8cda7146103fd5780637b76ac911461041d5780637e2c1355146104455780637fad46f21461046557806391d1485414610485578063971d902c146104a55780639c54df64146104c5578063a217fddf146104e5578063b712a2c1146104fa578063bf64e66c1461051a578063c489249614610548578063d547741f1461055e578063db6268381461057e578063e6ea39391461059e578063eb91e651146105b4578063f3da9f05146105d4578063f9f92be4146105ea578063fe173b971461060a57600080fd5b3661019f57005b600080fd5b3480156101b057600080fd5b506101c46101bf36600461205a565b610620565b60405190151581526020015b60405180910390f35b3480156101e557600080fd5b506101fb6000805160206129ec83398151915281565b6040519081526020016101d0565b34801561021557600080fd5b506101fb610224366004612084565b610657565b34801561023557600080fd5b506101c46102443660046120b2565b61066c565b34801561025557600080fd5b50610269610264366004612184565b610686565b005b34801561027757600080fd5b5061028b6102863660046121d3565b610750565b6040516101d092919061227b565b3480156102a557600080fd5b506102696102b436600461229e565b610848565b3480156102c557600080fd5b506102696102d436600461229e565b610869565b3480156102e557600080fd5b506102696102f43660046120b2565b6108e3565b34801561030557600080fd5b5061030e6109ab565b6040516101d091906122ce565b34801561032757600080fd5b506102696103363660046120b2565b610a37565b34801561034757600080fd5b50610269610356366004612379565b610d87565b34801561036757600080fd5b506101005461030e906001600160a01b031681565b61026961038a366004612184565b610e3f565b34801561039b57600080fd5b506101fb610ef4565b3480156103b057600080fd5b50610102546103c5906001600160401b031681565b6040516001600160401b0390911681526020016101d0565b3480156103e957600080fd5b506102696103f83660046123ad565b610fa2565b34801561040957600080fd5b506102696104183660046120b2565b6110c9565b34801561042957600080fd5b50610102546103c590600160401b90046001600160401b031681565b34801561045157600080fd5b506102696104603660046123cf565b611162565b34801561047157600080fd5b50610269610480366004612465565b61119b565b34801561049157600080fd5b506101c46104a036600461229e565b611327565b3480156104b157600080fd5b506102696104c03660046124ce565b611352565b3480156104d157600080fd5b506102696104e036600461252d565b611413565b3480156104f157600080fd5b506101fb600081565b34801561050657600080fd5b5061028b6105153660046125bc565b611546565b34801561052657600080fd5b506101fb6105353660046120b2565b6101046020526000908152604090205481565b34801561055457600080fd5b506101fb60fd5481565b34801561056a57600080fd5b5061026961057936600461229e565b6116c9565b34801561058a57600080fd5b50610269610599366004612084565b6116e5565b3480156105aa57600080fd5b506101fb60fc5481565b3480156105c057600080fd5b506102696105cf3660046120b2565b611703565b3480156105e057600080fd5b506101fb60fe5481565b3480156105f657600080fd5b506102696106053660046120b2565b61175b565b34801561061657600080fd5b506101fb60ff5481565b60006001600160e01b03198216637965db0b60e01b148061065157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260c9602052604090206001015490565b60006106516000805160206129ec83398151915283611327565b61068f3361066c565b6106b45760405162461bcd60e51b81526004016106ab906126b2565b60405180910390fd5b6106bc6109ab565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016106e99291906126df565b600060405180830381600087803b15801561070357600080fd5b505af1158015610717573d6000803e3d6000fd5b50505050600260fd5461072a9190612719565b33311180159061073e575061073e3361066c565b1561074c5761074c336117b3565b5050565b6000606061075d3361066c565b6107795760405162461bcd60e51b81526004016106ab906126b2565b846001600160a01b03168385604051610792919061273b565b60006040518083038185875af1925050503d80600081146107cf576040519150601f19603f3d011682016040523d82523d6000602084013e6107d4565b606091505b5060405191935091506001600160a01b03861690600080516020612a0c8339815191529061080790879087908790612757565b60405180910390a2600260fd5461081e9190612719565b33311180159061083257506108323361066c565b1561084057610840336117b3565b935093915050565b61085182610657565b61085a816118bd565b61086483836118c7565b505050565b6001600160a01b03811633146108d95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106ab565b61074c828261194d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361092b5760405162461bcd60e51b81526004016106ab90612781565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661095d6119b4565b6001600160a01b0316146109835760405162461bcd60e51b81526004016106ab906127bb565b61098c816119d0565b604080516000808252602082019092526109a8918391906119f7565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906127f5565b905090565b610a403361066c565b610a5c5760405162461bcd60e51b81526004016106ab906126b2565b6101005460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae591906127f5565b90506000816001600160a01b03166370a08231846040518263ffffffff1660e01b8152600401610b1591906122ce565b602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190612812565b9050610b606109ab565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610b8b91906122ce565b602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc919061282b565b80610bf057506001600160a01b038316600090815261010460205260409020548114155b610c335760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b60448201526064016106ab565b60fe546101016000610c43611b62565b81526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000205410610cdb5760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b60648201526084016106ab565b600460fc54610cea9190612719565b836001600160a01b03163110610d2f5760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b60448201526064016106ab565b6001600160a01b038316600090815261010460205260409020819055610d54836117b3565b5050600260fd54610d659190612719565b333111801590610d795750610d793361066c565b156109a8576109a8336117b3565b610d92600033611327565b610dae5760405162461bcd60e51b81526004016106ab9061284d565b60005b8151811015610dfd57610deb6000805160206129ec833981519152838381518110610dde57610dde612870565b60200260200101516116c9565b80610df581612886565b915050610db1565b5080604051610e0c919061289f565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e875760405162461bcd60e51b81526004016106ab90612781565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610eb96119b4565b6001600160a01b031614610edf5760405162461bcd60e51b81526004016106ab906127bb565b610ee8826119d0565b61074c828260016119f7565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016106ab565b50600080516020612a4c83398151915290565b60fb548210610fe95760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b60448201526064016106ab565b815b60fb5481108015610ffb57508181105b156110b95761103060fb828154811061101657611016612870565b6000918252602090912001546001600160a01b031661066c565b80156110725750600260fd546110469190612719565b60fb828154811061105957611059612870565b6000918252602090912001546001600160a01b03163111155b156110a7576110a760fb828154811061108d5761108d612870565b6000918252602090912001546001600160a01b03166117b3565b806110b181612886565b915050610feb565b50600260fd5461072a9190612719565b6110d23361066c565b6110ee5760405162461bcd60e51b81526004016106ab906126b2565b6110f66109ab565b6001600160a01b031663291d9549826040518263ffffffff1660e01b815260040161112191906122ce565b600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b50505050600260fd54610d659190612719565b61116d600033611327565b6111895760405162461bcd60e51b81526004016106ab9061284d565b61119584848484611b71565b50505050565b600054610100900460ff16158080156111bb5750600054600160ff909116105b806111dc57506111ca30611b98565b1580156111dc575060005460ff166001145b61123f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ab565b6000805460ff191660011790558015611262576000805461ff0019166101001790555b61126a611ba7565b611275600084611c14565b611280600033611c14565b611293620927c062895440600385611b71565b61010080546001600160a01b0319166001600160a01b0386161790558451156112bf576112bf85611413565b336001600160a01b038416146112da576112da6000336116c9565b8015611320576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61135b3361066c565b6113775760405162461bcd60e51b81526004016106ab906126b2565b61137f6109ab565b6001600160a01b031663e737031a858585856040518563ffffffff1660e01b81526004016113b094939291906128de565b600060405180830381600087803b1580156113ca57600080fd5b505af11580156113de573d6000803e3d6000fd5b50505050600260fd546113f19190612719565b33311180159061140557506114053361066c565b1561119557611195336117b3565b61141e600033611327565b61143a5760405162461bcd60e51b81526004016106ab9061284d565b60005b81518110156115045761146882828151811061145b5761145b612870565b602002602001015161066c565b15156000036114f2576114a26000805160206129ec83398151915283838151811061149557611495612870565b6020026020010151610848565b60fb8282815181106114b6576114b6612870565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b806114fc81612886565b91505061143d565b5080604051611513919061289f565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b600060606115533361066c565b61156f5760405162461bcd60e51b81526004016106ab906126b2565b60005b85518110156116b95785818151811061158d5761158d612870565b60200260200101516001600160a01b03168482815181106115b0576115b0612870565b60200260200101518683815181106115ca576115ca612870565b60200260200101516040516115df919061273b565b60006040518083038185875af1925050503d806000811461161c576040519150601f19603f3d011682016040523d82523d6000602084013e611621565b606091505b508751919450925086908290811061163b5761163b612870565b60200260200101516001600160a01b0316600080516020612a0c83398151915286838151811061166d5761166d612870565b602002602001015186848151811061168757611687612870565b60200260200101518660405161169f93929190612757565b60405180910390a2806116b181612886565b915050611572565b50600260fd5461081e9190612719565b6116d282610657565b6116db816118bd565b610864838361194d565b6116f4816103f8816032612915565b600260fd54610d659190612719565b61170c3361066c565b6117285760405162461bcd60e51b81526004016106ab906126b2565b6117306109ab565b6001600160a01b031663c6a276c2826040518263ffffffff1660e01b815260040161112191906122ce565b6117643361066c565b6117805760405162461bcd60e51b81526004016106ab906126b2565b6117886109ab565b6001600160a01b031663188efc16826040518263ffffffff1660e01b815260040161112191906122ce565b600161010160006117c2611b62565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008282546118029190612915565b90915550600090506118138261066c565b61181f5760fc54611823565b60fd545b9050600061183b6001600160a01b0384163183612928565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611874573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed985826040516118b091815260200190565b60405180910390a2505050565b6109a88133611c1e565b6118d18282611327565b61074c57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556119093390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6119578282611327565b1561074c57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020612a4c833981519152546001600160a01b031690565b6119db600033611327565b6109a85760405162461bcd60e51b81526004016106ab9061284d565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a2a5761086483611c77565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a84575060408051601f3d908101601f19168201909252611a8191810190612812565b60015b611ae75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016106ab565b600080516020612a4c8339815191528114611b565760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016106ab565b50610864838383611d11565b6000610a326201518042612719565b60ff819055611b80818561293b565b60fc55611b8d818461293b565b60fd555060fe555050565b6001600160a01b03163b151590565b600054610100900460ff16611c125760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016106ab565b565b61074c82826118c7565b611c288282611327565b61074c57611c3581611d36565b611c40836020611d48565b604051602001611c51929190612952565b60408051601f198184030181529082905262461bcd60e51b82526106ab916004016129c1565b611c8081611b98565b611ce25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016106ab565b600080516020612a4c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611d1a83611eea565b600082511180611d275750805b15610864576111958383611f2a565b60606106516001600160a01b03831660145b60606000611d5783600261293b565b611d62906002612915565b6001600160401b03811115611d7957611d796120cf565b6040519080825280601f01601f191660200182016040528015611da3576020820181803683370190505b509050600360fc1b81600081518110611dbe57611dbe612870565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ded57611ded612870565b60200101906001600160f81b031916908160001a9053506000611e1184600261293b565b611e1c906001612915565b90505b6001811115611e94576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611e5057611e50612870565b1a60f81b828281518110611e6657611e66612870565b60200101906001600160f81b031916908160001a90535060049490941c93611e8d816129d4565b9050611e1f565b508315611ee35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106ab565b9392505050565b611ef381611c77565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611f3583611b98565b611f905760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016106ab565b600080846001600160a01b031684604051611fab919061273b565b600060405180830381855af49150503d8060008114611fe6576040519150601f19603f3d011682016040523d82523d6000602084013e611feb565b606091505b50915091506120138282604051806060016040528060278152602001612a6c6027913961201c565b95945050505050565b6060831561202b575081611ee3565b611ee383838151156120405781518083602001fd5b8060405162461bcd60e51b81526004016106ab91906129c1565b60006020828403121561206c57600080fd5b81356001600160e01b031981168114611ee357600080fd5b60006020828403121561209657600080fd5b5035919050565b6001600160a01b03811681146109a857600080fd5b6000602082840312156120c457600080fd5b8135611ee38161209d565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561210d5761210d6120cf565b604052919050565b600082601f83011261212657600080fd5b81356001600160401b0381111561213f5761213f6120cf565b612152601f8201601f19166020016120e5565b81815284602083860101111561216757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561219757600080fd5b82356121a28161209d565b915060208301356001600160401b038111156121bd57600080fd5b6121c985828601612115565b9150509250929050565b6000806000606084860312156121e857600080fd5b83356121f38161209d565b925060208401356001600160401b0381111561220e57600080fd5b61221a86828701612115565b925050604084013590509250925092565b60005b8381101561224657818101518382015260200161222e565b50506000910152565b6000815180845261226781602086016020860161222b565b601f01601f19169290920160200192915050565b8215158152604060208201526000612296604083018461224f565b949350505050565b600080604083850312156122b157600080fd5b8235915060208301356122c38161209d565b809150509250929050565b6001600160a01b0391909116815260200190565b60006001600160401b038211156122fb576122fb6120cf565b5060051b60200190565b600082601f83011261231657600080fd5b8135602061232b612326836122e2565b6120e5565b82815260059290921b8401810191818101908684111561234a57600080fd5b8286015b8481101561236e5780356123618161209d565b835291830191830161234e565b509695505050505050565b60006020828403121561238b57600080fd5b81356001600160401b038111156123a157600080fd5b61229684828501612305565b600080604083850312156123c057600080fd5b50508035926020909101359150565b600080600080608085870312156123e557600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f83011261241257600080fd5b81356020612422612326836122e2565b82815260059290921b8401810191818101908684111561244157600080fd5b8286015b8481101561236e5780356124588161209d565b8352918301918301612445565b6000806000806080858703121561247b57600080fd5b84356001600160401b0381111561249157600080fd5b61249d87828801612401565b94505060208501356124ae8161209d565b925060408501356124be8161209d565b9396929550929360600135925050565b600080600080608085870312156124e457600080fd5b84356124ef8161209d565b935060208501356001600160401b0381111561250a57600080fd5b61251687828801612115565b949794965050505060408301359260600135919050565b60006020828403121561253f57600080fd5b81356001600160401b0381111561255557600080fd5b61229684828501612401565b600082601f83011261257257600080fd5b81356020612582612326836122e2565b82815260059290921b840181019181810190868411156125a157600080fd5b8286015b8481101561236e57803583529183019183016125a5565b6000806000606084860312156125d157600080fd5b83356001600160401b03808211156125e857600080fd5b6125f487838801612305565b945060209150818601358181111561260b57600080fd5b8601601f8101881361261c57600080fd5b803561262a612326826122e2565b81815260059190911b8201840190848101908a83111561264957600080fd5b8584015b83811015612681578035868111156126655760008081fd5b6126738d8983890101612115565b84525091860191860161264d565b509650505050604086013591508082111561269b57600080fd5b506126a886828701612561565b9150509250925092565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b03831681526040602082018190526000906122969083018461224f565b634e487b7160e01b600052601160045260246000fd5b60008261273657634e487b7160e01b600052601260045260246000fd5b500490565b6000825161274d81846020870161222b565b9190910192915050565b60608152600061276a606083018661224f565b602083019490945250901515604090910152919050565b6020808252602c90820152600080516020612a2c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a2c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b60006020828403121561280757600080fd5b8151611ee38161209d565b60006020828403121561282457600080fd5b5051919050565b60006020828403121561283d57600080fd5b81518015158114611ee357600080fd5b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161289857612898612703565b5060010190565b815160009082906020808601845b838110156128d25781516001600160a01b0316855293820193908201906001016128ad565b50929695505050505050565b6001600160a01b03851681526080602082018190526000906129029083018661224f565b6040830194909452506060015292915050565b8082018082111561065157610651612703565b8181038181111561065157610651612703565b808202811582820484141761065157610651612703565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161298481601785016020880161222b565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516129b581602884016020880161222b565b01602801949350505050565b602081526000611ee3602083018461224f565b6000816129e3576129e3612703565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e046756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220851f3c1f261569d08c7752de50f2dac005878ab483fb546ccb8fd65b546bb48864736f6c63430008130033", "deployedBytecode": "0x6080604052600436106101985760003560e01c806301ffc9a7146101a4578063133d93a1146101d9578063248a9ca31461020957806324d7806c146102295780632beeaca4146102495780632bf164581461026b5780632f2ff15d1461029957806336568abe146102b95780633659cfe6146102d957806336afc6fa146102f95780633771dcf81461031b578063377e11e01461033b5780633e6326fc1461035b5780634f1ef2861461037c57806352d1902d1461038f5780635b61e2c1146103a45780635fc944e9146103dd57806378c8cda7146103fd5780637b76ac911461041d5780637e2c1355146104455780637fad46f21461046557806391d1485414610485578063971d902c146104a55780639c54df64146104c5578063a217fddf146104e5578063b712a2c1146104fa578063bf64e66c1461051a578063c489249614610548578063d547741f1461055e578063db6268381461057e578063e6ea39391461059e578063eb91e651146105b4578063f3da9f05146105d4578063f9f92be4146105ea578063fe173b971461060a57600080fd5b3661019f57005b600080fd5b3480156101b057600080fd5b506101c46101bf36600461205a565b610620565b60405190151581526020015b60405180910390f35b3480156101e557600080fd5b506101fb6000805160206129ec83398151915281565b6040519081526020016101d0565b34801561021557600080fd5b506101fb610224366004612084565b610657565b34801561023557600080fd5b506101c46102443660046120b2565b61066c565b34801561025557600080fd5b50610269610264366004612184565b610686565b005b34801561027757600080fd5b5061028b6102863660046121d3565b610750565b6040516101d092919061227b565b3480156102a557600080fd5b506102696102b436600461229e565b610848565b3480156102c557600080fd5b506102696102d436600461229e565b610869565b3480156102e557600080fd5b506102696102f43660046120b2565b6108e3565b34801561030557600080fd5b5061030e6109ab565b6040516101d091906122ce565b34801561032757600080fd5b506102696103363660046120b2565b610a37565b34801561034757600080fd5b50610269610356366004612379565b610d87565b34801561036757600080fd5b506101005461030e906001600160a01b031681565b61026961038a366004612184565b610e3f565b34801561039b57600080fd5b506101fb610ef4565b3480156103b057600080fd5b50610102546103c5906001600160401b031681565b6040516001600160401b0390911681526020016101d0565b3480156103e957600080fd5b506102696103f83660046123ad565b610fa2565b34801561040957600080fd5b506102696104183660046120b2565b6110c9565b34801561042957600080fd5b50610102546103c590600160401b90046001600160401b031681565b34801561045157600080fd5b506102696104603660046123cf565b611162565b34801561047157600080fd5b50610269610480366004612465565b61119b565b34801561049157600080fd5b506101c46104a036600461229e565b611327565b3480156104b157600080fd5b506102696104c03660046124ce565b611352565b3480156104d157600080fd5b506102696104e036600461252d565b611413565b3480156104f157600080fd5b506101fb600081565b34801561050657600080fd5b5061028b6105153660046125bc565b611546565b34801561052657600080fd5b506101fb6105353660046120b2565b6101046020526000908152604090205481565b34801561055457600080fd5b506101fb60fd5481565b34801561056a57600080fd5b5061026961057936600461229e565b6116c9565b34801561058a57600080fd5b50610269610599366004612084565b6116e5565b3480156105aa57600080fd5b506101fb60fc5481565b3480156105c057600080fd5b506102696105cf3660046120b2565b611703565b3480156105e057600080fd5b506101fb60fe5481565b3480156105f657600080fd5b506102696106053660046120b2565b61175b565b34801561061657600080fd5b506101fb60ff5481565b60006001600160e01b03198216637965db0b60e01b148061065157506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260c9602052604090206001015490565b60006106516000805160206129ec83398151915283611327565b61068f3361066c565b6106b45760405162461bcd60e51b81526004016106ab906126b2565b60405180910390fd5b6106bc6109ab565b6001600160a01b0316631b02709983836040518363ffffffff1660e01b81526004016106e99291906126df565b600060405180830381600087803b15801561070357600080fd5b505af1158015610717573d6000803e3d6000fd5b50505050600260fd5461072a9190612719565b33311180159061073e575061073e3361066c565b1561074c5761074c336117b3565b5050565b6000606061075d3361066c565b6107795760405162461bcd60e51b81526004016106ab906126b2565b846001600160a01b03168385604051610792919061273b565b60006040518083038185875af1925050503d80600081146107cf576040519150601f19603f3d011682016040523d82523d6000602084013e6107d4565b606091505b5060405191935091506001600160a01b03861690600080516020612a0c8339815191529061080790879087908790612757565b60405180910390a2600260fd5461081e9190612719565b33311180159061083257506108323361066c565b1561084057610840336117b3565b935093915050565b61085182610657565b61085a816118bd565b61086483836118c7565b505050565b6001600160a01b03811633146108d95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016106ab565b61074c828261194d565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361092b5760405162461bcd60e51b81526004016106ab90612781565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661095d6119b4565b6001600160a01b0316146109835760405162461bcd60e51b81526004016106ab906127bb565b61098c816119d0565b604080516000808252602082019092526109a8918391906119f7565b50565b6101005460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906127f5565b905090565b610a403361066c565b610a5c5760405162461bcd60e51b81526004016106ab906126b2565b6101005460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae591906127f5565b90506000816001600160a01b03166370a08231846040518263ffffffff1660e01b8152600401610b1591906122ce565b602060405180830381865afa158015610b32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b569190612812565b9050610b606109ab565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610b8b91906122ce565b602060405180830381865afa158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcc919061282b565b80610bf057506001600160a01b038316600090815261010460205260409020548114155b610c335760405162461bcd60e51b8152602060048201526014602482015273155cd95c881a185cc81b9bdd081d5cd9590811c960621b60448201526064016106ab565b60fe546101016000610c43611b62565b81526020019081526020016000206000856001600160a01b03166001600160a01b031681526020019081526020016000205410610cdb5760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b60648201526084016106ab565b600460fc54610cea9190612719565b836001600160a01b03163110610d2f5760405162461bcd60e51b815260206004820152600a60248201526968617342616c616e636560b01b60448201526064016106ab565b6001600160a01b038316600090815261010460205260409020819055610d54836117b3565b5050600260fd54610d659190612719565b333111801590610d795750610d793361066c565b156109a8576109a8336117b3565b610d92600033611327565b610dae5760405162461bcd60e51b81526004016106ab9061284d565b60005b8151811015610dfd57610deb6000805160206129ec833981519152838381518110610dde57610dde612870565b60200260200101516116c9565b80610df581612886565b915050610db1565b5080604051610e0c919061289f565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e875760405162461bcd60e51b81526004016106ab90612781565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610eb96119b4565b6001600160a01b031614610edf5760405162461bcd60e51b81526004016106ab906127bb565b610ee8826119d0565b61074c828260016119f7565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610f8f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016106ab565b50600080516020612a4c83398151915290565b60fb548210610fe95760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b60448201526064016106ab565b815b60fb5481108015610ffb57508181105b156110b95761103060fb828154811061101657611016612870565b6000918252602090912001546001600160a01b031661066c565b80156110725750600260fd546110469190612719565b60fb828154811061105957611059612870565b6000918252602090912001546001600160a01b03163111155b156110a7576110a760fb828154811061108d5761108d612870565b6000918252602090912001546001600160a01b03166117b3565b806110b181612886565b915050610feb565b50600260fd5461072a9190612719565b6110d23361066c565b6110ee5760405162461bcd60e51b81526004016106ab906126b2565b6110f66109ab565b6001600160a01b031663291d9549826040518263ffffffff1660e01b815260040161112191906122ce565b600060405180830381600087803b15801561113b57600080fd5b505af115801561114f573d6000803e3d6000fd5b50505050600260fd54610d659190612719565b61116d600033611327565b6111895760405162461bcd60e51b81526004016106ab9061284d565b61119584848484611b71565b50505050565b600054610100900460ff16158080156111bb5750600054600160ff909116105b806111dc57506111ca30611b98565b1580156111dc575060005460ff166001145b61123f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016106ab565b6000805460ff191660011790558015611262576000805461ff0019166101001790555b61126a611ba7565b611275600084611c14565b611280600033611c14565b611293620927c062895440600385611b71565b61010080546001600160a01b0319166001600160a01b0386161790558451156112bf576112bf85611413565b336001600160a01b038416146112da576112da6000336116c9565b8015611320576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61135b3361066c565b6113775760405162461bcd60e51b81526004016106ab906126b2565b61137f6109ab565b6001600160a01b031663e737031a858585856040518563ffffffff1660e01b81526004016113b094939291906128de565b600060405180830381600087803b1580156113ca57600080fd5b505af11580156113de573d6000803e3d6000fd5b50505050600260fd546113f19190612719565b33311180159061140557506114053361066c565b1561119557611195336117b3565b61141e600033611327565b61143a5760405162461bcd60e51b81526004016106ab9061284d565b60005b81518110156115045761146882828151811061145b5761145b612870565b602002602001015161066c565b15156000036114f2576114a26000805160206129ec83398151915283838151811061149557611495612870565b6020026020010151610848565b60fb8282815181106114b6576114b6612870565b6020908102919091018101518254600